endpoint_pair_windows.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 
20 
22 
23 #ifdef GRPC_WINSOCK_SOCKET
24 #include <errno.h>
25 #include <fcntl.h>
26 #include <string.h>
27 
28 #include <grpc/support/log.h>
29 
35 
36 static void create_sockets(SOCKET sv[2]) {
37  SOCKET svr_sock = INVALID_SOCKET;
38  SOCKET lst_sock = INVALID_SOCKET;
39  SOCKET cli_sock = INVALID_SOCKET;
40  SOCKADDR_IN addr;
41  int addr_len = sizeof(addr);
42 
43  lst_sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0,
44  grpc_get_default_wsa_socket_flags());
45  GPR_ASSERT(lst_sock != INVALID_SOCKET);
46 
47  memset(&addr, 0, sizeof(addr));
48  addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
49  addr.sin_family = AF_INET;
50  GPR_ASSERT(bind(lst_sock, (grpc_sockaddr*)&addr, sizeof(addr)) !=
51  SOCKET_ERROR);
52  GPR_ASSERT(listen(lst_sock, SOMAXCONN) != SOCKET_ERROR);
53  GPR_ASSERT(getsockname(lst_sock, (grpc_sockaddr*)&addr, &addr_len) !=
54  SOCKET_ERROR);
55 
56  cli_sock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0,
57  grpc_get_default_wsa_socket_flags());
58  GPR_ASSERT(cli_sock != INVALID_SOCKET);
59 
60  GPR_ASSERT(WSAConnect(cli_sock, (grpc_sockaddr*)&addr, addr_len, NULL, NULL,
61  NULL, NULL) == 0);
62  svr_sock = accept(lst_sock, (grpc_sockaddr*)&addr, &addr_len);
63  GPR_ASSERT(svr_sock != INVALID_SOCKET);
64 
65  closesocket(lst_sock);
66  grpc_tcp_prepare_socket(cli_sock);
67  grpc_tcp_prepare_socket(svr_sock);
68 
69  sv[1] = cli_sock;
70  sv[0] = svr_sock;
71 }
72 
74  const char*, grpc_channel_args* channel_args) {
75  SOCKET sv[2];
77  create_sockets(sv);
79  p.client = grpc_tcp_create(grpc_winsocket_create(sv[1], "endpoint:client"),
80  channel_args, "endpoint:server");
81  p.server = grpc_tcp_create(grpc_winsocket_create(sv[0], "endpoint:server"),
82  channel_args, "endpoint:client");
83  return p;
84 }
85 
86 #endif
log.h
sockaddr_utils.h
memset
return memset(p, 0, total)
string.h
socket_windows.h
xds_manager.p
p
Definition: xds_manager.py:60
sockaddr.h
grpc_channel_args
Definition: grpc_types.h:132
endpoint_pair.h
GPR_ASSERT
#define GPR_ASSERT(x)
Definition: include/grpc/impl/codegen/log.h:94
grpc_tcp_create
grpc_endpoint * grpc_tcp_create(grpc_fd *fd, const grpc_channel_args *args, absl::string_view peer_string)
grpc_core::ExecCtx
Definition: exec_ctx.h:97
tcp_windows.h
port.h
exec_ctx
grpc_core::ExecCtx exec_ctx
Definition: end2end_binder_transport_test.cc:75
http2_test_server.listen
def listen(endpoint, test_case)
Definition: http2_test_server.py:87
grpc_iomgr_create_endpoint_pair
grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(const char *name, grpc_channel_args *args)
closesocket
static int closesocket(int sock)
Definition: bio_test.cc:46
grpc_endpoint_pair
Definition: endpoint_pair.h:26
addr
struct sockaddr_in addr
Definition: libuv/docs/code/tcp-echo-server/main.c:10
errno.h
port_platform.h


grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:19