1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.http2.generator;
20
21 import java.nio.ByteBuffer;
22
23 import org.eclipse.jetty.http2.Flags;
24 import org.eclipse.jetty.http2.frames.Frame;
25 import org.eclipse.jetty.http2.frames.FrameType;
26 import org.eclipse.jetty.http2.frames.WindowUpdateFrame;
27 import org.eclipse.jetty.io.ByteBufferPool;
28 import org.eclipse.jetty.util.BufferUtil;
29
30 public class WindowUpdateGenerator extends FrameGenerator
31 {
32 public WindowUpdateGenerator(HeaderGenerator headerGenerator)
33 {
34 super(headerGenerator);
35 }
36
37 @Override
38 public void generate(ByteBufferPool.Lease lease, Frame frame)
39 {
40 WindowUpdateFrame windowUpdateFrame = (WindowUpdateFrame)frame;
41 generateWindowUpdate(lease, windowUpdateFrame.getStreamId(), windowUpdateFrame.getWindowDelta());
42 }
43
44 public void generateWindowUpdate(ByteBufferPool.Lease lease, int streamId, int windowUpdate)
45 {
46 if (windowUpdate < 0)
47 throw new IllegalArgumentException("Invalid window update: " + windowUpdate);
48
49 ByteBuffer header = generateHeader(lease, FrameType.WINDOW_UPDATE, 4, Flags.NONE, streamId);
50 header.putInt(windowUpdate);
51 BufferUtil.flipToFlush(header, 0);
52 lease.append(header, true);
53 }
54 }