public int read() throws IOException { 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(); } }
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(byte b[], int off, int len) throws IOException { 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(); } }