MultiplexedConnection(MuxDemux muxDemux) { this.muxDemux = muxDemux; pendingWriteEventsCounter = new EventCounter(); cSet = new ChannelSet(this, pendingWriteEventsCounter); readerState = new ReaderState(); writerState = new WriterState(); lastChannelWritten = -1; connectionFailure = false; }
void notifyIOError() { synchronized (mConn) { for (int i = 0; i < ccbArray.length; ++i) { ChannelControlBlock ccb = ccbArray[i]; if (ccb != null) { ccb.reportRemoteError(AbstractChannelWriteInterface.CONNECTION_LOST_ERROR_CODE); markEOSAck(i); unmarkPendingCredits(i); } } } }
@Override public ChannelControlBlock connect(SocketAddress remoteAddress) throws InterruptedException, NetException { MultiplexedConnection mConn = md.connect((InetSocketAddress) remoteAddress); return mConn.openChannel(); }
public MuxDemuxPerformanceCounters getPerformanceCounters() { return md.getPerformanceCounters(); } }
public InetSocketAddress getRemoteAddress() { return cSet.getMultiplexedConnection().getRemoteAddress(); }
public ClientNetworkManager(int nThreads, ISocketChannelFactory socketChannelFactory) { /* This is a connect only socket and does not listen to any incoming connections, so pass null to * localAddress and listener. */ md = new MuxDemux(null, null, nThreads, MAX_CONNECTION_ATTEMPTS, FullFrameChannelInterfaceFactory.INSTANCE, socketChannelFactory); }
@Override public void notifyIOReady(TCPConnection connection, boolean readable, boolean writable) throws IOException, NetException { if (readable) { driveReaderStateMachine(); } if (writable) { driveWriterStateMachine(); } }
private void cleanupClosedChannels() { for (int i = 0; i < ccbArray.length; ++i) { ChannelControlBlock ccb = ccbArray[i]; if (ccb != null) { if (ccb.completelyClosed()) { if (LOGGER.isTraceEnabled()) { LOGGER.trace("Cleaning free channel: " + ccb); } freeChannel(ccb); } } } }
ChannelControlBlock registerChannel(int channelId) throws NetException { synchronized (mConn) { return createChannel(channelId); } }
@Override public IChannelReadInterface createReadInterface(IChannelControlBlock cbb) { return new FullFrameChannelReadInterface(cbb); }
@Override public IChannelWriteInterface createWriteInterface(IChannelControlBlock cbb) { return new FullFrameChannelWriteInterface(cbb); } }
@Override public synchronized void notifyIOError(Exception e) { connectionFailure = true; error = e; cSet.notifyIOError(); }
@Override public void addPendingCredits(int credit) { cSet.addPendingCredits(channelId, credit); }
@Override public void markPendingWrite() { cSet.markPendingWrite(channelId); }
@Override public void unmarkPendingWrite() { cSet.unmarkPendingWrite(channelId); }
public ChannelControlBlock connect(SocketAddress remoteAddress) throws InterruptedException, NetException { MultiplexedConnection mConn = md.connect((InetSocketAddress) remoteAddress); return mConn.openChannel(); }
public MuxDemuxPerformanceCounters getPerformanceCounters() { return md.getPerformanceCounters(); } }
private ChannelControlBlock connect(SocketAddress remoteAddress) throws InterruptedException, NetException { MultiplexedConnection mConn = md.connect((InetSocketAddress) remoteAddress); return mConn.openChannel(); }
public MuxDemuxPerformanceCounters getPerformanceCounters() { return md.getPerformanceCounters(); } }
public ChannelControlBlock connect(SocketAddress remoteAddress) throws InterruptedException, NetException { MultiplexedConnection mConn = md.connect((InetSocketAddress) remoteAddress); return mConn.openChannel(); }