@Override public int fill(ByteBuffer buffer) throws IOException { int read = super.fill(buffer); notifyIncoming(buffer, read); return read; }
public SelectChannelEndPoint(SelectableChannel channel, ManagedSelector selector, SelectionKey key, Scheduler scheduler, long idleTimeout) { super(channel,selector,key,scheduler); setIdleTimeout(idleTimeout); } }
@Override public void close() { try { SelectChannelEndPoint.this.close(); } catch (Throwable x) { LOG.warn(x); } } }
@Override public void run() { getWriteFlusher().completeWrite(); getFillInterest().fillable(); }
@Override public void onSelected() { assert _selector.isSelectorThread(); int oldInterestOps = _key.interestOps(); int readyOps = _key.readyOps(); int newInterestOps = oldInterestOps & ~readyOps; setKeyInterests(oldInterestOps, newInterestOps); updateLocalInterests(readyOps, false); if (_key.isReadable()) getFillInterest().fillable(); if (_key.isWritable()) getWriteFlusher().completeWrite(); }
@Override protected EndPoint newEndPoint(SocketChannel channel, ManagedSelector selectSet, SelectionKey key) throws IOException { @SuppressWarnings("unchecked") Map<String, Object> context = (Map<String, Object>)key.attachment(); SPDYClient client = (SPDYClient)context.get(SPDYClientConnectionFactory.SPDY_CLIENT_CONTEXT_KEY); long clientIdleTimeout = client.getIdleTimeout(); if (clientIdleTimeout < 0) clientIdleTimeout = idleTimeout; return new SelectChannelEndPoint(channel, selectSet, key, getScheduler(), clientIdleTimeout); }
@Override public boolean flush(ByteBuffer... buffers) throws IOException { boolean flushed=true; for (ByteBuffer b : buffers) { if (b.hasRemaining()) { int position = b.position(); ByteBuffer view=b.slice(); flushed&=super.flush(b); int l=b.position()-position; view.limit(view.position()+l); notifyOutgoing(view); if (!flushed) break; } } return flushed; }
@Override public void run() { try { if (getChannel().isOpen()) { int oldInterestOps = _key.interestOps(); int newInterestOps = _interestOps.get(); if (newInterestOps != oldInterestOps) setKeyInterests(oldInterestOps, newInterestOps); } } catch (CancelledKeyException x) { LOG.debug("Ignoring key update for concurrently closed channel {}", this); close(); } catch (Exception x) { LOG.warn("Ignoring key update for " + this, x); close(); } } };
@Override public void onOpen() { super.onOpen(); if (listeners != null && !listeners.isEmpty()) { for (NetworkTrafficListener listener : listeners) { try { listener.opened(getSocket()); } catch (Exception x) { LOG.warn(x); } } } }
@Override public void onClose() { super.onClose(); if (listeners != null && !listeners.isEmpty()) { for (NetworkTrafficListener listener : listeners) { try { listener.closed(getSocket()); } catch (Exception x) { LOG.warn(x); } } } }
@Override public void run() { getFillInterest().fillable(); }
@Override public void run() { getWriteFlusher().completeWrite(); }
@Override public void onSelected() { assert _selector.isSelectorThread(); int oldInterestOps = _key.interestOps(); int readyOps = _key.readyOps(); int newInterestOps = oldInterestOps & ~readyOps; setKeyInterests(oldInterestOps, newInterestOps); updateLocalInterests(readyOps, false); if (_key.isReadable()) getFillInterest().fillable(); if (_key.isWritable()) getWriteFlusher().completeWrite(); }
@Override protected EndPoint newEndPoint(SocketChannel channel, ManagedSelector selector, SelectionKey key) { return new SelectChannelEndPoint(channel, selector, key, getScheduler(), getIdleTimeout()); }
@Override public boolean flush(ByteBuffer... buffers) throws IOException { boolean flushed=true; for (ByteBuffer b : buffers) { if (b.hasRemaining()) { int position = b.position(); flushed|=super.flush(b); int l=b.position()-position; notifyOutgoing(b, position, l); if (!flushed) break; } } return flushed; }
@Override public void run() { try { if (getChannel().isOpen()) { int oldInterestOps = _key.interestOps(); int newInterestOps = _interestOps.get(); if (newInterestOps != oldInterestOps) setKeyInterests(oldInterestOps, newInterestOps); } } catch (CancelledKeyException x) { LOG.debug("Ignoring key update for concurrently closed channel {}", this); close(); } catch (Exception x) { LOG.warn("Ignoring key update for " + this, x); close(); } } };
if (readable && getFillInterest().isCallbackNonBlocking()) readable = false; if (writable && getWriteFlusher().isCallbackNonBlocking())
@Override public void onOpen() { super.onOpen(); if (listeners != null && !listeners.isEmpty()) { for (NetworkTrafficListener listener : listeners) { try { listener.opened(getSocket()); } catch (Exception x) { LOG.warn(x); } } } }
@Override public void onClose() { super.onClose(); if (listeners != null && !listeners.isEmpty()) { for (NetworkTrafficListener listener : listeners) { try { listener.closed(getSocket()); } catch (Exception x) { LOG.warn(x); } } } }
@Override public void onSelected() { assert _selector.isSelectorThread(); int oldInterestOps = _key.interestOps(); int readyOps = _key.readyOps(); int newInterestOps = oldInterestOps & ~readyOps; setKeyInterests(oldInterestOps, newInterestOps); updateLocalInterests(readyOps, false); if (_key.isReadable()) getFillInterest().fillable(); if (_key.isWritable()) getWriteFlusher().completeWrite(); }