/** Called from inside _logLock */ private void flushTempStream() { TempStreamApi ts = _tempStream; _tempStream = null; _tempStreamSize = 0; try { if (ts != null) { if (_os == null) openLog(); try { ReadStream is = ts.openRead(); try { is.writeToStream(_os); } finally { is.close(); } } catch (IOException e) { e.printStackTrace(); } finally { ts.destroy(); } } } finally { _logLock.notifyAll(); } }
/** Writes to the underlying log. */ protected void write(byte[] buffer, int offset, int length) throws IOException { /* String s = new String(buffer, offset, length); if (s.startsWith("127")) { System.out.println("WRITE: " + s); Thread.dumpStack(); } */ synchronized (_logLock) { if (_isRollingOver && getTempStreamMax() < _tempStreamSize) { try { _logLock.wait(); } catch (Exception e) { } } if (!_isRollingOver) { if (_os == null) openLog(); if (_os != null) _os.write(buffer, offset, length); } else { if (_tempStream == null) { _tempStream = createTempStream(); _tempStreamSize = 0; } _tempStreamSize += length; _tempStream.write(buffer, offset, length, false); } } }