Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/FlowControlStrategy.java')
-rw-r--r--jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/FlowControlStrategy.java86
1 files changed, 86 insertions, 0 deletions
diff --git a/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/FlowControlStrategy.java b/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/FlowControlStrategy.java
new file mode 100644
index 0000000000..c08bc42121
--- /dev/null
+++ b/jetty-spdy/spdy-core/src/main/java/org/eclipse/jetty/spdy/FlowControlStrategy.java
@@ -0,0 +1,86 @@
+//========================================================================
+//Copyright 2011-2012 Mort Bay Consulting Pty. Ltd.
+//------------------------------------------------------------------------
+//All rights reserved. This program and the accompanying materials
+//are made available under the terms of the Eclipse Public License v1.0
+//and Apache License v2.0 which accompanies this distribution.
+//The Eclipse Public License is available at
+//http://www.eclipse.org/legal/epl-v10.html
+//The Apache License v2.0 is available at
+//http://www.opensource.org/licenses/apache2.0.php
+//You may elect to redistribute this code under either of these licenses.
+//========================================================================
+package org.eclipse.jetty.spdy;
+
+import org.eclipse.jetty.spdy.api.DataInfo;
+
+// TODO: add methods that tell how much written and whether we're TCP congested ?
+public interface FlowControlStrategy
+{
+ public int getWindowSize(ISession session);
+
+ public void setWindowSize(ISession session, int windowSize);
+
+ public void onNewStream(ISession session, IStream stream);
+
+ public void onWindowUpdate(ISession session, IStream stream, int delta);
+
+ public void updateWindow(ISession session, IStream stream, int delta);
+
+ public void onDataReceived(ISession session, IStream stream, DataInfo dataInfo);
+
+ public void onDataConsumed(ISession session, IStream stream, DataInfo dataInfo, int delta);
+
+ public static class None implements FlowControlStrategy
+ {
+ private volatile int windowSize;
+
+ public None()
+ {
+ this(65536);
+ }
+
+ public None(int windowSize)
+ {
+ this.windowSize = windowSize;
+ }
+
+ @Override
+ public int getWindowSize(ISession session)
+ {
+ return windowSize;
+ }
+
+ @Override
+ public void setWindowSize(ISession session, int windowSize)
+ {
+ this.windowSize = windowSize;
+ }
+
+ @Override
+ public void onNewStream(ISession session, IStream stream)
+ {
+ stream.updateWindowSize(windowSize);
+ }
+
+ @Override
+ public void onWindowUpdate(ISession session, IStream stream, int delta)
+ {
+ }
+
+ @Override
+ public void updateWindow(ISession session, IStream stream, int delta)
+ {
+ }
+
+ @Override
+ public void onDataReceived(ISession session, IStream stream, DataInfo dataInfo)
+ {
+ }
+
+ @Override
+ public void onDataConsumed(ISession session, IStream stream, DataInfo dataInfo, int delta)
+ {
+ }
+ }
+}

Back to the top