home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / io / PipedReader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  1.4 KB  |  92 lines

  1. package java.io;
  2.  
  3. public class PipedReader extends Reader {
  4.    PipedInputStream byteSink;
  5.    private byte[] buf;
  6.    private int leftOver;
  7.  
  8.    public PipedReader() {
  9.       this.byteSink = new PipedInputStream();
  10.       super.lock = this.byteSink;
  11.    }
  12.  
  13.    public PipedReader(PipedWriter var1) throws IOException {
  14.       this();
  15.       this.connect(var1);
  16.    }
  17.  
  18.    private void ensureOpen() throws IOException {
  19.       if (this.byteSink == null) {
  20.          throw new IOException("Stream closed");
  21.       }
  22.    }
  23.  
  24.    public void connect(PipedWriter var1) throws IOException {
  25.       Object var2 = super.lock;
  26.       synchronized(var2){}
  27.  
  28.       try {
  29.          this.ensureOpen();
  30.          var1.connect(this);
  31.       } catch (Throwable var4) {
  32.          throw var4;
  33.       }
  34.  
  35.    }
  36.  
  37.    public int read(char[] var1, int var2, int var3) throws IOException {
  38.       Object var5 = super.lock;
  39.       synchronized(var5){}
  40.  
  41.       int var4;
  42.       try {
  43.          this.ensureOpen();
  44.          int var7 = this.leftOver + var3 * 2;
  45.          if (this.buf == null || this.buf.length < var7) {
  46.             this.buf = new byte[var7];
  47.          }
  48.  
  49.          int var8 = this.byteSink.read(this.buf, this.leftOver, var7);
  50.          if (var8 >= 0) {
  51.             var8 += this.leftOver;
  52.  
  53.             for(int var9 = 0; var9 < var8; var9 += 2) {
  54.                var1[var9 >> 1] = (char)((this.buf[var9] & 255) << 8 | this.buf[var9 + 1] & 255);
  55.             }
  56.  
  57.             if (var8 % 2 != 0) {
  58.                this.buf[0] = this.buf[var8 - 1];
  59.                this.leftOver = 1;
  60.             } else {
  61.                this.leftOver = 0;
  62.             }
  63.  
  64.             var4 = var8 / 2;
  65.             return var4;
  66.          }
  67.  
  68.          var4 = -1;
  69.       } catch (Throwable var11) {
  70.          throw var11;
  71.       }
  72.  
  73.       return var4;
  74.    }
  75.  
  76.    public void close() throws IOException {
  77.       Object var1 = super.lock;
  78.       synchronized(var1){}
  79.  
  80.       try {
  81.          if (this.byteSink != null) {
  82.             this.byteSink.close();
  83.             this.byteSink = null;
  84.             return;
  85.          }
  86.       } catch (Throwable var4) {
  87.          throw var4;
  88.       }
  89.  
  90.    }
  91. }
  92.