1
2
3
4
5
6
7
8
9
10
11
12
13
14 package org.eclipse.jetty.spdy.generator;
15
16 import java.nio.ByteBuffer;
17
18 import org.eclipse.jetty.spdy.ByteBufferPool;
19 import org.eclipse.jetty.spdy.frames.ControlFrame;
20
21 public abstract class ControlFrameGenerator
22 {
23 private final ByteBufferPool bufferPool;
24
25 protected ControlFrameGenerator(ByteBufferPool bufferPool)
26 {
27 this.bufferPool = bufferPool;
28 }
29
30 protected ByteBufferPool getByteBufferPool()
31 {
32 return bufferPool;
33 }
34
35 public abstract ByteBuffer generate(ControlFrame frame);
36
37 protected void generateControlFrameHeader(ControlFrame frame, int frameLength, ByteBuffer buffer)
38 {
39 buffer.putShort((short)(0x8000 + frame.getVersion()));
40 buffer.putShort(frame.getType().getCode());
41 int flagsAndLength = frame.getFlags();
42 flagsAndLength <<= 24;
43 flagsAndLength += frameLength;
44 buffer.putInt(flagsAndLength);
45 }
46 }