RemoteConnection(final StreamConnection connection, final SslChannel sslChannel, final OptionMap optionMap, final RemoteConnectionProvider remoteConnectionProvider) { this.connection = connection; this.messageReader = new MessageReader(connection.getSourceChannel(), writeListener.queue); this.sslChannel = sslChannel; this.optionMap = optionMap; heartbeatInterval = optionMap.get(RemotingOptions.HEARTBEAT_INTERVAL, RemotingOptions.DEFAULT_HEARTBEAT_INTERVAL); Messages.conn.tracef("Initialized connection from %s to %s with options %s", connection.getPeerAddress(), connection.getLocalAddress(), optionMap); this.executor = remoteConnectionProvider.getExecutor(); this.remoteConnectionProvider = remoteConnectionProvider; }
public void suspendReads() { synchronized (lock) { getSourceChannel().suspendReads(); } }
if (first.remaining() >= 4) { int size = first.getInt(first.position()); if (remaining(size + 4)) { ByteBuffer message = ByteBufferPool.MEDIUM_HEAP.allocate(); first.getInt();
void setReadListener(ChannelListener<ConduitStreamSourceChannel> listener, final boolean resume) { Messages.log.logf(RemoteConnection.class.getName(), Logger.Level.TRACE, null, "Setting read listener to %s", listener); messageReader.setReadListener(listener); if (listener != null && resume) { messageReader.resumeReads(); } }
final MessageReader messageReader = connection.getMessageReader(); try { message = messageReader.getMessage(); } catch (IOException e) { connection.handleException(e); messageReader.suspendReads(); connection.getExecutor().execute(() -> { try { sendBuffer.put(response); sendBuffer.flip(); messageReader.resumeReads(); connection.send(pooled); ok = true; messageReader.suspendReads(); connection.getExecutor().execute(() -> { try { }; connection.getResult().setResult(connectionHandlerFactory); messageReader.resumeReads(); return; } finally {
public void handleEvent(final ConduitStreamSourceChannel channel) { final Pooled<ByteBuffer> message; try { message = connection.getMessageReader().getMessage(); } catch (IOException e) { connection.handleException(e);
public void handleEvent(final ConduitStreamSourceChannel channel) { final Pooled<ByteBuffer> message; try { message = connection.getMessageReader().getMessage(); } catch (IOException e) { connection.handleException(e); client.tracef("Client initiating authentication using mechanism %s", mechanismName); connection.getMessageReader().suspendReads(); final int negotiatedVersion = version; final SaslClient usedSaslClient = saslClient;
for (;;) try { boolean exit = false; message = messageReader.getMessage(); if (message == MessageReader.EOF_MARKER) { log.trace("Received connection end-of-stream"); messageReader.shutdownReads(); handler.receiveCloseRequest(); return;
protected void closeAction() throws IOException { sendCloseRequest(); remoteConnection.shutdownWrites(); remoteConnection.getMessageReader().shutdownReads(); // now these guys can't send useless messages closePendingChannels(); closeAllChannels(); remoteConnection.getRemoteConnectionProvider().removeConnectionHandler(this); }
@Override public void run() { connection.getMessageReader().resumeReads(); } });
@Override public void run() { connection.getMessageReader().suspendReads(); } });
void sendAlive() { Messages.conn.trace("Sending connection alive"); final Pooled<ByteBuffer> pooled = allocate(); boolean ok = false; try { final ByteBuffer buffer = pooled.getResource(); buffer.put(Protocol.CONNECTION_ALIVE); buffer.limit(80); Buffers.addRandom(buffer); buffer.flip(); send(pooled); ok = true; messageReader.wakeupReads(); } finally { if (! ok) pooled.free(); } }
final MessageReader messageReader = connection.getMessageReader(); try { message = messageReader.getMessage(); } catch (IOException e) { connection.handleException(e); messageReader.suspendReads(); connection.getExecutor().execute(() -> { try { sendBuffer.put(response); sendBuffer.flip(); messageReader.resumeReads(); connection.send(pooled); ok = true; messageReader.suspendReads(); connection.getExecutor().execute(() -> { try { }; connection.getResult().setResult(connectionHandlerFactory); messageReader.resumeReads(); return; } finally {
void setReadListener(ChannelListener<ConduitStreamSourceChannel> listener, final boolean resume) { Messages.log.logf(RemoteConnection.class.getName(), Logger.Level.TRACE, null, "Setting read listener to %s", listener); messageReader.setReadListener(listener); if (listener != null && resume) { messageReader.resumeReads(); } }
public void handleEvent(final ConduitStreamSourceChannel channel) { final Pooled<ByteBuffer> message; try { message = connection.getMessageReader().getMessage(); } catch (IOException e) { connection.handleException(e);
public void handleEvent(final ConduitStreamSourceChannel channel) { final Pooled<ByteBuffer> message; try { message = connection.getMessageReader().getMessage(); } catch (IOException e) { connection.handleException(e); client.tracef("Client initiating authentication using mechanism %s", mechanismName); connection.getMessageReader().suspendReads(); final int negotiatedVersion = version; final SaslClient usedSaslClient = saslClient;
for (;;) try { boolean exit = false; message = messageReader.getMessage(); if (message == MessageReader.EOF_MARKER) { log.trace("Received connection end-of-stream"); messageReader.shutdownReads(); handler.receiveCloseRequest(); return;
protected void closeAction() throws IOException { sendCloseRequest(); remoteConnection.shutdownWrites(); remoteConnection.getMessageReader().shutdownReads(); // now these guys can't send useless messages closePendingChannels(); closeAllChannels(); remoteConnection.getRemoteConnectionProvider().removeConnectionHandler(this); }
@Override public void run() { connection.getMessageReader().resumeReads(); } });
@Override public void run() { connection.getMessageReader().suspendReads(); } });