@Override public void onStreamCreated(IStream stream) { stream.updateSendWindow(initialStreamSendWindow); stream.updateRecvWindow(initialStreamRecvWindow); }
@Override public void onStreamCreated(IStream stream) { stream.updateSendWindow(initialStreamSendWindow); stream.updateRecvWindow(initialStreamRecvWindow); }
@Override protected boolean generate(ByteBufferPool.Lease lease) { int dataRemaining = getDataBytesRemaining(); int sessionSendWindow = getSendWindow(); int streamSendWindow = stream.updateSendWindow(0); int window = Math.min(streamSendWindow, sessionSendWindow); if (window <= 0 && dataRemaining > 0) return false; int length = Math.min(dataRemaining, window); // Only one DATA frame is generated. DataFrame dataFrame = (DataFrame)frame; int frameBytes = generator.data(lease, dataFrame, length); this.frameBytes += frameBytes; this.frameRemaining += frameBytes; int dataBytes = frameBytes - Frame.HEADER_LENGTH; this.dataBytes += dataBytes; this.dataRemaining -= dataBytes; if (LOG.isDebugEnabled()) LOG.debug("Generated {}, length/window/data={}/{}/{}", dataFrame, dataBytes, window, dataRemaining); flowControl.onDataSending(stream, dataBytes); stream.updateClose(dataFrame.isEndStream(), CloseState.Event.BEFORE_SEND); return true; }
@Override protected boolean generate(ByteBufferPool.Lease lease) { int dataRemaining = getDataBytesRemaining(); int sessionSendWindow = getSendWindow(); int streamSendWindow = stream.updateSendWindow(0); int window = Math.min(streamSendWindow, sessionSendWindow); if (window <= 0 && dataRemaining > 0) return false; int length = Math.min(dataRemaining, window); // Only one DATA frame is generated. DataFrame dataFrame = (DataFrame)frame; int frameBytes = generator.data(lease, dataFrame, length); this.frameBytes += frameBytes; this.frameRemaining += frameBytes; int dataBytes = frameBytes - Frame.HEADER_LENGTH; this.dataBytes += dataBytes; this.dataRemaining -= dataBytes; if (LOG.isDebugEnabled()) LOG.debug("Generated {}, length/window/data={}/{}/{}", dataFrame, dataBytes, window, dataRemaining); flowControl.onDataSending(stream, dataBytes); stream.updateClose(dataFrame.isEndStream(), CloseState.Event.BEFORE_SEND); return true; }
@Override public void onDataSending(IStream stream, int length) { if (length == 0) return; ISession session = stream.getSession(); int oldSessionWindow = session.updateSendWindow(-length); int newSessionWindow = oldSessionWindow - length; if (LOG.isDebugEnabled()) LOG.debug("Sending, session send window {} -> {} for {}", oldSessionWindow, newSessionWindow, session); if (newSessionWindow <= 0) onSessionStalled(session); int oldStreamWindow = stream.updateSendWindow(-length); int newStreamWindow = oldStreamWindow - length; if (LOG.isDebugEnabled()) LOG.debug("Sending, stream send window {} -> {} for {}", oldStreamWindow, newStreamWindow, stream); if (newStreamWindow <= 0) onStreamStalled(stream); }
@Override public void onDataSending(IStream stream, int length) { if (length == 0) return; ISession session = stream.getSession(); int oldSessionWindow = session.updateSendWindow(-length); int newSessionWindow = oldSessionWindow - length; if (LOG.isDebugEnabled()) LOG.debug("Sending, session send window {} -> {} for {}", oldSessionWindow, newSessionWindow, session); if (newSessionWindow <= 0) onSessionStalled(session); int oldStreamWindow = stream.updateSendWindow(-length); int newStreamWindow = oldStreamWindow - length; if (LOG.isDebugEnabled()) LOG.debug("Sending, stream send window {} -> {} for {}", oldStreamWindow, newStreamWindow, stream); if (newStreamWindow <= 0) onStreamStalled(stream); }
@Override public void onWindowUpdate(ISession session, IStream stream, WindowUpdateFrame frame) { int delta = frame.getWindowDelta(); if (frame.getStreamId() > 0) { // The stream may have been removed concurrently. if (stream != null) { int oldSize = stream.updateSendWindow(delta); if (LOG.isDebugEnabled()) LOG.debug("Updated stream send window {} -> {} for {}", oldSize, oldSize + delta, stream); if (oldSize <= 0) onStreamUnstalled(stream); } } else { int oldSize = session.updateSendWindow(delta); if (LOG.isDebugEnabled()) LOG.debug("Updated session send window {} -> {} for {}", oldSize, oldSize + delta, session); if (oldSize <= 0) onSessionUnstalled(session); } }
@Override public void onWindowUpdate(ISession session, IStream stream, WindowUpdateFrame frame) { int delta = frame.getWindowDelta(); if (frame.getStreamId() > 0) { // The stream may have been removed concurrently. if (stream != null) { int oldSize = stream.updateSendWindow(delta); if (LOG.isDebugEnabled()) LOG.debug("Updated stream send window {} -> {} for {}", oldSize, oldSize + delta, stream); if (oldSize <= 0) onStreamUnstalled(stream); } } else { int oldSize = session.updateSendWindow(delta); if (LOG.isDebugEnabled()) LOG.debug("Updated session send window {} -> {} for {}", oldSize, oldSize + delta, session); if (oldSize <= 0) onSessionUnstalled(session); } }
if (stream != null) int streamSendWindow = stream.updateSendWindow(0); if (sumOverflows(streamSendWindow, windowDelta))
if (stream != null) int streamSendWindow = stream.updateSendWindow(0); if (sumOverflows(streamSendWindow, windowDelta))