1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package io.netty.handler.codec.http2;
17
18 import io.netty.util.concurrent.Ticker;
19
20 import static io.netty.util.internal.ObjectUtil.checkPositive;
21
22
23
24
25
26
27 final class Http2MaxRstFrameDecoder extends DecoratingHttp2ConnectionDecoder {
28 private final int maxRstFramesPerWindow;
29 private final int secondsPerWindow;
30
31 Http2MaxRstFrameDecoder(Http2ConnectionDecoder delegate, int maxRstFramesPerWindow, int secondsPerWindow) {
32 super(delegate);
33 this.maxRstFramesPerWindow = checkPositive(maxRstFramesPerWindow, "maxRstFramesPerWindow");
34 this.secondsPerWindow = checkPositive(secondsPerWindow, "secondsPerWindow");
35 }
36
37 @Override
38 public void frameListener(Http2FrameListener listener) {
39 if (listener != null) {
40 super.frameListener(new Http2MaxRstFrameListener(
41 listener, maxRstFramesPerWindow, secondsPerWindow, Ticker.systemTicker()));
42 } else {
43 super.frameListener(null);
44 }
45 }
46
47 @Override
48 public Http2FrameListener frameListener() {
49 Http2FrameListener frameListener = frameListener0();
50
51 if (frameListener instanceof Http2MaxRstFrameListener) {
52 return ((Http2MaxRstFrameListener) frameListener).listener;
53 }
54 return frameListener;
55 }
56
57
58 Http2FrameListener frameListener0() {
59 return super.frameListener();
60 }
61 }