server_registered_method.cc
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
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
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  *
17  */
18 
19 #include <string.h>
20 
24 
25 #define PFX_STR \
26  "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" \
27  "\x00\x00\x00\x04\x00\x00\x00\x00\x00" /* settings frame */ \
28  "\x00\x00\xd0\x01\x04\x00\x00\x00\x01" \
29  "\x10\x05:path\x0f/registered/bar" \
30  "\x10\x07:scheme\x04http" \
31  "\x10\x07:method\x04POST" \
32  "\x10\x0a:authority\x09localhost" \
33  "\x10\x0c" \
34  "content-type\x10" \
35  "application/grpc" \
36  "\x10\x14grpc-accept-encoding\x15identity,deflate,gzip" \
37  "\x10\x02te\x08trailers" \
38  "\x10\x0auser-agent\"bad-client grpc-c/0.12.0.0 (linux)"
39 
40 static void* tag(intptr_t t) { return reinterpret_cast<void*>(t); }
41 
43  void* registered_method) {
45  grpc_call* s;
48  gpr_timespec deadline;
49  grpc_byte_buffer* payload = nullptr;
50 
52 
53  error = grpc_server_request_registered_call(server, registered_method, &s,
54  &deadline, &request_metadata_recv,
55  &payload, cq, cq, tag(101));
57  CQ_EXPECT_COMPLETION(cqv, tag(101), 1);
58  cq_verify(cqv);
59 
60  GPR_ASSERT(payload != nullptr);
61 
63  grpc_call_unref(s);
66 }
67 
69  void* /*registered_method*/) {
70  while (grpc_core::Server::FromC(server)->HasOpenConnections()) {
74  }
75 }
76 
77 int main(int argc, char** argv) {
79  grpc_init();
80 
81  /* body generated with
82  * tools/codegen/core/gen_server_registered_method_bad_client_test_body.py */
84  PFX_STR "\x00\x00\x00\x00\x00\x00\x00\x00\x01",
87  PFX_STR "\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00",
90  PFX_STR
91  "\x00\x00\x02\x00\x00\x00\x00\x00\x01\x00\x00",
94  PFX_STR
95  "\x00\x00\x03\x00\x00\x00\x00\x00\x01\x00\x00\x00",
98  verifier_fails, nullptr,
99  PFX_STR "\x00\x00\x04\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00",
102  verifier_succeeds, nullptr,
103  PFX_STR "\x00\x00\x05\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00", 0);
105  verifier_fails, nullptr,
106  PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x01",
109  verifier_succeeds, nullptr,
110  PFX_STR "\x00\x00\x06\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x01\x00",
111  0);
113  verifier_fails, nullptr,
114  PFX_STR "\x00\x00\x05\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02",
117  verifier_fails, nullptr,
118  PFX_STR "\x00\x00\x06\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00",
121  verifier_succeeds, nullptr,
122  PFX_STR
123  "\x00\x00\x07\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00",
124  0);
125 
126  grpc_shutdown();
127  return 0;
128 }
grpc_call_error
grpc_call_error
Definition: grpc_types.h:464
generate.env
env
Definition: generate.py:37
PFX_STR
#define PFX_STR
Definition: server_registered_method.cc:25
grpc_metadata_array
Definition: grpc_types.h:579
main
int main(int argc, char **argv)
Definition: server_registered_method.cc:77
string.h
verifier_succeeds
static void verifier_succeeds(grpc_server *server, grpc_completion_queue *cq, void *registered_method)
Definition: server_registered_method.cc:42
error
grpc_error_handle error
Definition: retry_filter.cc:499
GRPC_CALL_OK
@ GRPC_CALL_OK
Definition: grpc_types.h:466
grpc_server_request_registered_call
GRPCAPI grpc_call_error grpc_server_request_registered_call(grpc_server *server, void *registered_method, grpc_call **call, gpr_timespec *deadline, grpc_metadata_array *request_metadata, grpc_byte_buffer **optional_payload, grpc_completion_queue *cq_bound_to_call, grpc_completion_queue *cq_for_notification, void *tag_new)
Definition: src/core/lib/surface/server.cc:1546
verifier_fails
static void verifier_fails(grpc_server *server, grpc_completion_queue *cq, void *)
Definition: server_registered_method.cc:68
grpc_metadata_array_destroy
GRPCAPI void grpc_metadata_array_destroy(grpc_metadata_array *array)
Definition: metadata_array.cc:35
GPR_ASSERT
#define GPR_ASSERT(x)
Definition: include/grpc/impl/codegen/log.h:94
grpc_call_unref
GRPCAPI void grpc_call_unref(grpc_call *call)
Definition: call.cc:1770
grpc_timeout_milliseconds_to_deadline
gpr_timespec grpc_timeout_milliseconds_to_deadline(int64_t time_ms)
Definition: test/core/util/test_config.cc:89
grpc_completion_queue
Definition: completion_queue.cc:347
cq_verifier_destroy
void cq_verifier_destroy(cq_verifier *v)
Definition: cq_verifier.cc:92
grpc_call
struct grpc_call grpc_call
Definition: grpc_types.h:70
grpc_byte_buffer
Definition: grpc_types.h:43
cq_verifier_create
cq_verifier * cq_verifier_create(grpc_completion_queue *cq)
Definition: cq_verifier.cc:86
grpc_server
struct grpc_server grpc_server
Definition: grpc_types.h:65
intptr_t
_W64 signed int intptr_t
Definition: stdint-msvc2008.h:118
cq_verifier
Definition: cq_verifier.cc:76
request_metadata_recv
static grpc_metadata_array request_metadata_recv
Definition: test/core/fling/server.cc:48
CQ_EXPECT_COMPLETION
#define CQ_EXPECT_COMPLETION(v, tag, success)
Definition: cq_verifier.h:58
tag
static void * tag(intptr_t t)
Definition: server_registered_method.cc:40
GRPC_BAD_CLIENT_DISCONNECT
#define GRPC_BAD_CLIENT_DISCONNECT
Definition: bad_client.h:48
cq_verifier.h
server
Definition: examples/python/async_streaming/server.py:1
grpc::testing::TestEnvironment
Definition: test/core/util/test_config.h:54
grpc_byte_buffer_destroy
GRPCAPI void grpc_byte_buffer_destroy(grpc_byte_buffer *bb)
Definition: byte_buffer.cc:81
grpc_completion_queue_next
GRPCAPI grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, gpr_timespec deadline, void *reserved)
Definition: completion_queue.cc:1133
cq_verify
void cq_verify(cq_verifier *v, int timeout_sec)
Definition: cq_verifier.cc:268
server.h
GRPC_RUN_BAD_CLIENT_TEST
#define GRPC_RUN_BAD_CLIENT_TEST(server_validator, client_validator, payload, flags)
Definition: bad_client.h:71
asyncio_get_stats.type
type
Definition: asyncio_get_stats.py:37
gpr_timespec
Definition: gpr_types.h:50
grpc_init
GRPCAPI void grpc_init(void)
Definition: init.cc:146
grpc_core::CppImplOf< Server, grpc_server >::FromC
static Server * FromC(grpc_server *c_type)
Definition: cpp_impl_of.h:30
gen_server_registered_method_bad_client_test_body.payload
list payload
Definition: gen_server_registered_method_bad_client_test_body.py:40
GRPC_QUEUE_TIMEOUT
@ GRPC_QUEUE_TIMEOUT
Definition: grpc_types.h:556
grpc_shutdown
GRPCAPI void grpc_shutdown(void)
Definition: init.cc:209
bad_client.h
cq
static grpc_completion_queue * cq
Definition: test/core/fling/client.cc:37
grpc_metadata_array_init
GRPCAPI void grpc_metadata_array_init(grpc_metadata_array *array)
Definition: metadata_array.cc:30


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:17