home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / net / www / httpd / cachedfile.java < prev    next >
Text File  |  1995-08-11  |  2KB  |  60 lines

  1. /*
  2.  * @(#)CachedFile.java    1.1 95/05/10
  3.  *
  4.  * Copyright (c) 1995 Sun Microsystems, Inc.  All Rights reserved
  5.  * Permission to use, copy, modify, and distribute this software
  6.  * and its documentation for NON-COMMERCIAL purposes and without
  7.  * fee is hereby granted provided that this copyright notice
  8.  * appears in all copies. Please refer to the file copyright.html
  9.  * for further important copyright and licensing information.
  10.  *
  11.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  12.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  13.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  14.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  15.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  16.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  17.  */
  18.  
  19. package net.www.httpd;
  20. import java.io.*;
  21. import net.www.html.MessageHeader;
  22.  
  23. /**
  24.  * A class to represent a file in the RAM cache.
  25.  * @author  James Gosling
  26.  */
  27.  
  28. class CachedFile {
  29.     private byte body[];
  30.     public MessageHeader mh;
  31.     CachedFile(InputStream src, int size, MessageHeader fmh) {
  32.     body = new byte[size];
  33.     int pos = 0;
  34.     int pending = size;
  35.     while (pending > 0) {
  36.         int nr = src.read(body, pos, size);
  37.         if (nr < 0)
  38.         break;
  39.         pending -= nr;
  40.         pos += nr;
  41.     }
  42.     if (pending != 0) {
  43. System.out.print("Expected "+size+", missed by "+pending+"\n");
  44.         throw new IOException();
  45.     }
  46.     mh = fmh;
  47.     }
  48.     void sendto(OutputStream os) {
  49.     os.write(body, 0, body.length);
  50.     }
  51.     void headerto(PrintStream ps) {
  52.     if (mh != null)
  53.         mh.print(ps);
  54.     }
  55.     int length() {
  56.     return body.length;
  57.     }
  58. }
  59.  
  60.