home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / TemaCD / smartcache / src / InOut.java < prev    next >
Text File  |  2001-01-26  |  2KB  |  66 lines

  1. /*
  2.  *  Smart Cache, http proxy cache server
  3.  *  Copyright (C) 1998, 1999 Radim Kolar 
  4.  *
  5.  *    Smart Cache is Open Source Software; you may redistribute it
  6.  *  and/or modify it under the terms of the GNU General Public
  7.  *  License as published by the Free Software Foundation; either
  8.  *  version 2, or (at your option) any later version.
  9.  *
  10.  *    This program distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13.  *  General Public License for more details.
  14.  *
  15.  *    A copy of the GNU General Public License is available as
  16.  *  /usr/doc/copyright/GPL in the Debian GNU/Linux distribution or on
  17.  *  the World Wide Web at http://www.gnu.org/copyleft/gpl.html. You
  18.  *  can also obtain it by writing to the Free Software Foundation,
  19.  *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20.  */
  21. import java.io.*;
  22.  
  23. public class InOut implements Runnable
  24. {
  25.  InputStream in;
  26.  OutputStream out;
  27.  Thread notify;
  28.  InOut(InputStream is,OutputStream os,Thread intr)
  29.  {
  30.   in=is;
  31.   out=os;
  32.   notify=intr;
  33.  }
  34.  public void run()
  35.  {
  36.   byte b[];
  37.   int rb;
  38.   
  39.   b=new byte[512];
  40.  
  41.   mainloop:while(true)
  42.   {
  43.      try
  44.      {
  45.       if(Thread.interrupted()) return;
  46.       rb=in.read(b);
  47.       if(rb==-1) break mainloop;
  48.       out.write(b,0,rb);
  49.       out.flush();
  50.      }
  51.      catch (InterruptedIOException timeout)
  52.      {
  53.       notify.interrupt();
  54.       return;
  55.      }
  56.      catch (IOException data_error)
  57.      { 
  58.       notify.interrupt();
  59.       return;
  60.      }
  61.  }
  62.  notify.interrupt();
  63. }
  64.  
  65. }/*class*/
  66.