1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.http2.frames;
20
21 import java.nio.charset.StandardCharsets;
22
23 import org.eclipse.jetty.http2.ErrorCode;
24
25 public class GoAwayFrame extends Frame
26 {
27 private final int lastStreamId;
28 private final int error;
29 private final byte[] payload;
30
31 public GoAwayFrame(int lastStreamId, int error, byte[] payload)
32 {
33 super(FrameType.GO_AWAY);
34 this.lastStreamId = lastStreamId;
35 this.error = error;
36 this.payload = payload;
37 }
38
39 public int getLastStreamId()
40 {
41 return lastStreamId;
42 }
43
44 public int getError()
45 {
46 return error;
47 }
48
49 public byte[] getPayload()
50 {
51 return payload;
52 }
53
54 public String tryConvertPayload()
55 {
56 if (payload == null || payload.length == 0)
57 return "";
58 try
59 {
60 return new String(payload, StandardCharsets.UTF_8);
61 }
62 catch (Throwable x)
63 {
64 return "";
65 }
66 }
67
68 @Override
69 public String toString()
70 {
71 ErrorCode errorCode = ErrorCode.from(error);
72 return String.format("%s,%d/%s/%s",
73 super.toString(),
74 lastStreamId,
75 errorCode != null ? errorCode.toString() : String.valueOf(error),
76 tryConvertPayload());
77 }
78 }