Go to the documentation of this file.
27 #ifdef GRPC_POSIX_SOCKET_TCP
33 #include <grpc/byte_buffer.h>
47 static void*
tag(
intptr_t t) {
return reinterpret_cast<void*
>(
t); }
89 const_cast<char*
>(
"test-authority"));
101 static void init_client() {
110 static void init_server() {
125 memset(&g_ctx, 0,
sizeof(g_ctx));
154 if (!g_ctx.server)
return;
161 g_ctx.server =
nullptr;
165 if (!g_ctx.client)
return;
167 g_ctx.client =
nullptr;
174 drain_and_destroy_cq(g_ctx.cq);
175 drain_and_destroy_cq(g_ctx.client_cq);
176 drain_and_destroy_cq(g_ctx.bound_cq);
181 typedef enum fd_type { CLIENT_FD, SERVER_FD } fd_type;
183 static const char* fd_type_str(fd_type fdtype) {
184 if (fdtype == CLIENT_FD) {
186 }
else if (fdtype == SERVER_FD) {
194 static void _test_close_before_server_recv(fd_type fdtype) {
208 fd_type_str(fdtype));
296 if (fdtype == SERVER_FD) {
359 static void test_close_before_server_recv() {
362 _test_close_before_server_recv(CLIENT_FD);
365 _test_close_before_server_recv(SERVER_FD);
368 static void _test_close_before_server_send(fd_type fdtype) {
382 fd_type_str(fdtype));
501 if (fdtype == SERVER_FD) {
557 static void test_close_before_server_send() {
560 _test_close_before_server_send(CLIENT_FD);
563 _test_close_before_server_send(SERVER_FD);
566 static void _test_close_before_client_send(fd_type fdtype) {
579 fd_type_str(fdtype));
641 if (fdtype == SERVER_FD) {
684 static void test_close_before_client_send() {
687 _test_close_before_client_send(CLIENT_FD);
690 _test_close_before_client_send(SERVER_FD);
693 static void _test_close_before_call_create(fd_type fdtype) {
703 if (fdtype == SERVER_FD) {
733 static void test_close_before_call_create() {
735 _test_close_before_call_create(CLIENT_FD);
737 _test_close_before_call_create(SERVER_FD);
740 int main(
int argc,
char** argv) {
746 for (
int i = 0;
i < iterations; ++
i) {
747 test_close_before_call_create();
748 test_close_before_client_send();
749 test_close_before_server_recv();
750 test_close_before_server_send();
760 int main(
int argc,
char** argv) {
return 1; }
grpc_error_handle SetupTransport(grpc_transport *transport, grpc_pollset *accepting_pollset, const grpc_channel_args *args, const RefCountedPtr< channelz::SocketNode > &socket_node)
GPRAPI void grpc_slice_unref(grpc_slice s)
struct grpc_byte_buffer * send_message
GRPCAPI void grpc_call_details_destroy(grpc_call_details *details)
GRPCAPI void grpc_call_details_init(grpc_call_details *details)
grpc_metadata_array * trailing_metadata
gpr_timespec grpc_timeout_seconds_to_deadline(int64_t time_s)
grpc_status_code * status
@ GRPC_STATUS_UNAVAILABLE
GRPCAPI grpc_byte_buffer * grpc_raw_byte_buffer_create(grpc_slice *slices, size_t nslices)
return memset(p, 0, total)
GRPCAPI grpc_completion_queue * grpc_completion_queue_create_for_pluck(void *reserved)
GPRAPI grpc_slice grpc_slice_from_copied_string(const char *source)
struct grpc_op::grpc_op_data::grpc_op_send_initial_metadata send_initial_metadata
grpc_transport * grpc_create_chttp2_transport(const grpc_channel_args *channel_args, grpc_endpoint *ep, bool is_client)
const grpc_channel_args * channel_args() const
static void end_test(grpc_end2end_test_fixture *f)
@ GRPC_CLIENT_DIRECT_CHANNEL
GPRAPI void gpr_free(void *ptr)
const grpc_endpoint_vtable * vtable
static ChannelArgs FromC(const grpc_channel_args *args)
GRPCAPI grpc_server * grpc_server_create(const grpc_channel_args *args, void *reserved)
GPRAPI void * gpr_malloc(size_t size)
GRPCAPI void grpc_server_register_completion_queue(grpc_server *server, grpc_completion_queue *cq, void *reserved)
#define GRPC_LOG_IF_ERROR(what, error)
grpc_arg grpc_channel_arg_string_create(char *name, char *value)
struct grpc_op::grpc_op_data::grpc_op_recv_message recv_message
union grpc_op::grpc_op_data data
GRPCAPI void grpc_metadata_array_destroy(grpc_metadata_array *array)
struct grpc_byte_buffer ** recv_message
GRPCAPI grpc_call_error grpc_server_request_call(grpc_server *server, grpc_call **call, grpc_call_details *details, grpc_metadata_array *request_metadata, grpc_completion_queue *cq_bound_to_call, grpc_completion_queue *cq_for_notification, void *tag_new)
static grpc_metadata_array trailing_metadata_recv
std::unique_ptr< Server > server
#define GRPC_ARG_DEFAULT_AUTHORITY
@ GRPC_OP_RECV_INITIAL_METADATA
static void shutdown_server(grpc_end2end_test_fixture *f)
@ GRPC_OP_SEND_STATUS_FROM_SERVER
static void * tag(intptr_t t)
GRPCAPI void grpc_call_unref(grpc_call *call)
gpr_timespec grpc_timeout_milliseconds_to_deadline(int64_t time_ms)
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
struct grpc_call grpc_call
static grpc_byte_buffer * response_payload_recv
grpc_pollset * grpc_cq_pollset(grpc_completion_queue *cq)
int main(int argc, char **argv)
void grpc_channel_args_destroy(grpc_channel_args *a)
GPRAPI grpc_slice grpc_slice_from_static_string(const char *source)
struct grpc_server grpc_server
static grpc_metadata_array request_metadata_recv
GRPCAPI void grpc_server_destroy(grpc_server *server)
static void client_setup_transport(void *ts, grpc_transport *transport)
grpc_slice * status_details
static grpc_slice details
GRPCAPI grpc_call * grpc_channel_create_call(grpc_channel *channel, grpc_call *parent_call, uint32_t propagation_mask, grpc_completion_queue *completion_queue, grpc_slice method, const grpc_slice *host, gpr_timespec deadline, void *reserved)
struct grpc_op::grpc_op_data::grpc_op_recv_close_on_server recv_close_on_server
GRPCAPI grpc_event grpc_completion_queue_pluck(grpc_completion_queue *cq, void *tag, gpr_timespec deadline, void *reserved)
@ GRPC_STATUS__DO_NOT_USE
static void server_setup_transport(void *ts, grpc_transport *transport)
#define GRPC_PROPAGATE_DEFAULTS
struct grpc_op::grpc_op_data::grpc_op_send_status_from_server send_status_from_server
GRPCAPI void grpc_completion_queue_destroy(grpc_completion_queue *cq)
@ GRPC_OP_SEND_INITIAL_METADATA
grpc_core::ExecCtx exec_ctx
struct grpc_op::grpc_op_data::grpc_op_send_message send_message
struct grpc_op::grpc_op_data::grpc_op_recv_status_on_client recv_status_on_client
grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char *name, grpc_channel_args *args)
size_t trailing_metadata_count
static void shutdown_client(grpc_endpoint **client_fd)
GRPCAPI void grpc_server_shutdown_and_notify(grpc_server *server, grpc_completion_queue *cq, void *tag)
GRPCAPI void grpc_byte_buffer_destroy(grpc_byte_buffer *bb)
GRPCAPI grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, gpr_timespec deadline, void *reserved)
GRPCAPI void grpc_completion_queue_shutdown(grpc_completion_queue *cq)
GRPCAPI void grpc_channel_destroy(grpc_channel *channel)
struct grpc_channel grpc_channel
@ GRPC_OP_RECV_CLOSE_ON_SERVER
int(* get_fd)(grpc_endpoint *ep)
GRPCAPI grpc_completion_queue * grpc_completion_queue_create_for_next(void *reserved)
struct grpc_op::grpc_op_data::grpc_op_recv_initial_metadata recv_initial_metadata
grpc_slice * status_details
grpc_completion_type type
GRPCAPI void grpc_init(void)
GRPCAPI void grpc_server_start(grpc_server *server)
@ GRPC_OP_RECV_STATUS_ON_CLIENT
void grpc_endpoint_add_to_pollset(grpc_endpoint *ep, grpc_pollset *pollset)
static Server * FromC(grpc_server *c_type)
static grpc_metadata_array initial_metadata_recv
GRPCAPI grpc_call_error grpc_call_start_batch(grpc_call *call, const grpc_op *ops, size_t nops, void *tag, void *reserved)
GRPCAPI void grpc_shutdown(void)
static void drain_cq(grpc_completion_queue *cq)
static absl::StatusOr< RefCountedPtr< Channel > > Create(const char *target, ChannelArgs args, grpc_channel_stack_type channel_stack_type, grpc_transport *optional_transport)
static grpc_completion_queue * cq
void grpc_chttp2_transport_start_reading(grpc_transport *transport, grpc_slice_buffer *read_buffer, grpc_closure *notify_on_receive_settings, grpc_closure *notify_on_close)
grpc_channel_args * grpc_channel_args_copy_and_add(const grpc_channel_args *src, const grpc_arg *to_add, size_t num_to_add)
@ GRPC_OP_SEND_CLOSE_FROM_CLIENT
static grpc_call_details call_details
GRPCAPI void grpc_metadata_array_init(grpc_metadata_array *array)
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:56