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.ResetFrame;
27 import org.eclipse.jetty.io.ByteBufferPool;
28 import org.eclipse.jetty.util.BufferUtil;
29
30 public class ResetGenerator extends FrameGenerator
31 {
32 public ResetGenerator(HeaderGenerator headerGenerator)
33 {
34 super(headerGenerator);
35 }
36
37 @Override
38 public void generate(ByteBufferPool.Lease lease, Frame frame)
39 {
40 ResetFrame resetFrame = (ResetFrame)frame;
41 generateReset(lease, resetFrame.getStreamId(), resetFrame.getError());
42 }
43
44 public void generateReset(ByteBufferPool.Lease lease, int streamId, int error)
45 {
46 if (streamId < 0)
47 throw new IllegalArgumentException("Invalid stream id: " + streamId);
48
49 ByteBuffer header = generateHeader(lease, FrameType.RST_STREAM, 4, Flags.NONE, streamId);
50
51 header.putInt(error);
52
53 BufferUtil.flipToFlush(header, 0);
54 lease.append(header, true);
55 }
56 }