private void write(final SipMessage message, final IoSession io, final boolean listen) { final WriteFuture wf = io.write(message); if (listen) { wf.addListener(this); } }
/** * Implement this method to perform real write operation with * the specified <code>writeRequest</code>. * * By default, this method is implemented to set the future to * 'not written' immediately. * * @param writeRequest Write request to make */ protected void write0(WriteRequest writeRequest) { writeRequest.getFuture().setWritten(false); }
protected synchronized void write(final T message) throws IOException { m_log.debug("Writing message: {}", message); checkClosed(); m_lastWriteFuture = m_ioSession.write(message); m_lastWriteFuture.join(m_ioSession.getWriteTimeoutInMillis()); m_log.debug("Finshing writing message..."); }
@Override public synchronized void flush() throws IOException { m_log.debug("Flushing IoSession output stream..."); if (m_lastWriteFuture == null) { return; } m_lastWriteFuture.join(); if (!m_lastWriteFuture.isWritten()) { throw new IOException( "The bytes could not be written to the session"); } } }
public void run() { // Note there is no Via handling here. This is for UASes // sending responses, so we don't need to strip any Vias. try { final WriteFuture wf = m_ioSession.write(message); wf.addListener(SipClientImpl.this); } catch (final Throwable t) { m_log.error("Unexpected throwable", t); } } };
public void fireMessageSent(IoSession session, WriteRequest request) { try { request.getFuture().setWritten(true); } catch (Throwable t) { fireExceptionCaught(session, t); } Entry head = this.head; callNextMessageSent(head, session, request.getMessage()); }
public void run() { try { final WriteFuture wf = m_transportLayer .writeCrlfKeepAlive(m_ioSession); wf.addListener(new IoFutureListener() { public void operationComplete(final IoFuture future) { m_log.debug("Finished writing CRLF..."); } }); } catch (final Throwable t) { m_log.error("Caught throwable", t); } } };
private void callPreviousFilterWrite(Entry entry, IoSession session, WriteRequest writeRequest) { try { entry.getFilter().filterWrite(entry.getNextFilter(), session, writeRequest); } catch (Throwable e) { writeRequest.getFuture().setWritten(false); fireExceptionCaught(session, e); } }
private void releaseWriteBuffers(SocketSessionImpl session) { Queue<WriteRequest> writeRequestQueue = session.getWriteRequestQueue(); WriteRequest req; if ((req = writeRequestQueue.poll()) != null) { ByteBuffer buf = (ByteBuffer) req.getMessage(); try { buf.release(); } catch (IllegalStateException e) { session.getFilterChain().fireExceptionCaught(session, e); } finally { // The first unwritten empty buffer must be // forwarded to the filter chain. if (buf.hasRemaining()) { req.getFuture().setWritten(false); } else { session.getFilterChain().fireMessageSent(session, req); } } // Discard others. while ((req = writeRequestQueue.poll()) != null) { try { ((ByteBuffer) req.getMessage()).release(); } catch (IllegalStateException e) { session.getFilterChain().fireExceptionCaught(session, e); } finally { req.getFuture().setWritten(false); } } } }
writeFuture.setWritten(true); nextFilter.messageSent(session, inputStream); } else {
if (byteBuffer == null) { writeRequest.getFuture().setWritten(true); nextFilter.messageSent(session, message); } else {
writeRequest.getFuture().setWritten(false);