| 401 | |
| 402 | |
| 403 | protected void readGoawayFrame(int payloadSize, ByteBuffer buffer) throws IOException { |
| 404 | byte[] payload = new byte[payloadSize]; |
| 405 | if (buffer == null) { |
| 406 | input.fill(true, payload); |
| 407 | } else { |
| 408 | buffer.get(payload); |
| 409 | } |
| 410 | |
| 411 | int lastStreamId = ByteUtil.get31Bits(payload, 0); |
| 412 | long errorCode = ByteUtil.getFourBytes(payload, 4); |
| 413 | String debugData = null; |
| 414 | if (payloadSize > 8) { |
| 415 | debugData = new String(payload, 8, payloadSize - 8, StandardCharsets.UTF_8); |
| 416 | } |
| 417 | output.goaway(lastStreamId, errorCode, debugData); |
| 418 | } |
| 419 | |
| 420 | |
| 421 | protected void readWindowUpdateFrame(int streamId, ByteBuffer buffer) throws Http2Exception, IOException { |