Methods Summary |
---|
public int | available()
return reslen;
|
public void | close()
try {
lock.getBusyFlag();
reslen = 0; // Clear Buffer
EOF = true; // Mark End Of File
empty.cvBroadcast(); // Alert all Threads
full.cvBroadcast();
} finally {
lock.freeBusyFlag();
}
|
private byte | getChar()
try {
lock.getBusyFlag();
byte c = result[0];
System.arraycopy(result, 1, result, 0, --reslen);
full.cvSignal();
return c;
} finally {
lock.freeBusyFlag();
}
|
private byte[] | getChars(int chars)
try {
lock.getBusyFlag();
byte c[] = new byte[chars];
System.arraycopy(result, 0, c, 0, chars);
reslen -= chars;
System.arraycopy(result, chars, result, 0, reslen);
full.cvSignal();
return c;
} finally {
lock.freeBusyFlag();
}
|
public void | mark(int readlimit)
|
public boolean | markSupported()
return false;
|
private void | putChar(byte c)
try {
lock.getBusyFlag();
while ((reslen == result.length) && (!EOF)) {
try {
full.cvWait();
} catch (InterruptedException ie) {}
}
if (!EOF) {
result[reslen++] = c;
empty.cvSignal();
}
} finally {
lock.freeBusyFlag();
}
|
public int | read()
try {
lock.getBusyFlag();
while (reslen == 0) {
try {
if (EOF) return(-1);
if (IOError != null) throw IOError;
empty.cvWait();
} catch (InterruptedException e) {}
}
return (int) getChar();
} finally {
lock.freeBusyFlag();
}
|
public int | read(byte[] b)
return read(b, 0, b.length);
|
public int | read(byte[] b, int off, int len)
try {
lock.getBusyFlag();
while (reslen == 0) {
try {
if (EOF) return(-1);
if (IOError != null) throw IOError;
empty.cvWait();
} catch (InterruptedException e) {}
}
int sizeread = Math.min(reslen, len);
byte c[] = getChars(sizeread);
System.arraycopy(c, 0, b, off, sizeread);
return(sizeread);
} finally {
lock.freeBusyFlag();
}
|
public void | reset()
|
public void | run()
try {
while (true) {
int c = in.read();
try {
lock.getBusyFlag();
if ((c == -1) || (EOF)) {
EOF = true; // Mark End Of File
in.close(); // Close Input Source
return; // End IO Thread
} else {
putChar((byte)c); // Store the byte read
}
if (EOF) {
in.close(); // Close Input Source
return; // End IO Thread
}
} finally {
lock.freeBusyFlag();
}
}
} catch (IOException e) {
IOError = e; // Store Exception
return;
} finally {
try {
lock.getBusyFlag();
empty.cvBroadcast(); // Alert all Threads
} finally {
lock.freeBusyFlag();
}
}
|
public long | skip(long n)
try {
lock.getBusyFlag();
int sizeskip = Math.min(reslen, (int) n);
if (sizeskip > 0) {
byte c[] = getChars(sizeskip);
}
return((long)sizeskip);
} finally {
lock.freeBusyFlag();
}
|