3 * Copyright 2015 gRPC authors.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 #ifndef GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_GOAWAY_H
20 #define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_GOAWAY_H
22 #include <grpc/support/port_platform.h>
24 #include <grpc/slice.h>
25 #include <grpc/slice_buffer.h>
26 #include "src/core/ext/transport/chttp2/transport/frame.h"
29 GRPC_CHTTP2_GOAWAY_LSI0,
30 GRPC_CHTTP2_GOAWAY_LSI1,
31 GRPC_CHTTP2_GOAWAY_LSI2,
32 GRPC_CHTTP2_GOAWAY_LSI3,
33 GRPC_CHTTP2_GOAWAY_ERR0,
34 GRPC_CHTTP2_GOAWAY_ERR1,
35 GRPC_CHTTP2_GOAWAY_ERR2,
36 GRPC_CHTTP2_GOAWAY_ERR3,
37 GRPC_CHTTP2_GOAWAY_DEBUG
38 } grpc_chttp2_goaway_parse_state;
41 grpc_chttp2_goaway_parse_state state;
42 uint32_t last_stream_id;
45 uint32_t debug_length;
47 } grpc_chttp2_goaway_parser;
49 void grpc_chttp2_goaway_parser_init(grpc_chttp2_goaway_parser* p);
50 void grpc_chttp2_goaway_parser_destroy(grpc_chttp2_goaway_parser* p);
51 grpc_error* grpc_chttp2_goaway_parser_begin_frame(
52 grpc_chttp2_goaway_parser* parser, uint32_t length, uint8_t flags);
53 grpc_error* grpc_chttp2_goaway_parser_parse(void* parser,
54 grpc_chttp2_transport* t,
55 grpc_chttp2_stream* s,
56 const grpc_slice& slice,
59 void grpc_chttp2_goaway_append(uint32_t last_stream_id, uint32_t error_code,
60 const grpc_slice& debug_data,
61 grpc_slice_buffer* slice_buffer);
63 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_FRAME_GOAWAY_H */