Go to the documentation of this file.
25 #define IPC_PIPE_NAME TEST_PIPENAME
26 #define NUM_CONNECTS (250 * 1000)
90 size_t suggested_size,
97 size_t suggested_size,
113 loop = ipc_pipe->loop;
116 pc = calloc(1,
sizeof(*pc));
119 if (ipc_pipe->type == UV_TCP)
121 else if (ipc_pipe->type == UV_NAMED_PIPE)
164 size_t suggested_size,
169 buf->len =
sizeof(
ctx->scratch);
189 else if (
type == UV_NAMED_PIPE)
204 unsigned int num_servers,
211 ctx.num_connects = num_servers;
213 if (
type == UV_TCP) {
230 for (
i = 0;
i < num_servers;
i++)
237 for (
i = 0;
i < num_servers;
i++)
246 ctx.server_handle->data =
"server handle";
314 size_t suggested_size,
316 static char slab[32];
349 if (--
ctx->num_connects == 0) {
362 static int test_tcp(
unsigned int num_servers,
unsigned int num_clients) {
382 for (
i = 0;
i < num_servers;
i++) {
390 for (
i = 0;
i < num_clients;
i++) {
394 handle->data =
"client handle";
410 for (
i = 0;
i < num_servers;
i++) {
417 printf(
"accept%u: %.0f accepts/sec (%u total)\n",
422 for (
i = 0;
i < num_servers;
i++) {
424 printf(
" thread #%u: %.0f accepts/sec (%u total, %.1f%%)\n",
426 ctx->num_connects / time,
UV_EXTERN int uv_pipe_pending_count(uv_pipe_t *handle)
static void sv_async_cb(uv_async_t *handle)
unsigned char handle_storage_t[sizeof(union stream_handle)]
static void cl_idle_cb(uv_idle_t *handle)
static void ipc_connect_cb(uv_connect_t *req, int status)
UV_EXTERN void uv_pipe_connect(uv_connect_t *req, uv_pipe_t *handle, const char *name, uv_connect_cb cb)
UV_EXTERN int uv_pipe_init(uv_loop_t *, uv_pipe_t *handle, int ipc)
static void ipc_connection_cb(uv_stream_t *ipc_pipe, int status)
static uv_idle_t idle_handle
UV_EXTERN int uv_listen(uv_stream_t *stream, int backlog, uv_connection_cb cb)
_Use_decl_annotations_ int __cdecl printf(const char *_Format,...)
static void server_cb(void *arg)
unsigned int num_connects
static struct test_ctx ctx
UV_EXTERN int uv_thread_join(uv_thread_t *tid)
static void sv_connection_cb(uv_stream_t *server_handle, int status)
handle_storage_t server_handle
UV_EXTERN int uv_run(uv_loop_t *, uv_run_mode mode)
#define container_of(ptr, type, member)
static struct sockaddr_in listen_addr
UV_EXTERN void uv_unref(uv_handle_t *)
UV_EXTERN int uv_tcp_bind(uv_tcp_t *handle, const struct sockaddr *addr, unsigned int flags)
UV_EXTERN void uv_close(uv_handle_t *handle, uv_close_cb close_cb)
handle_storage_t client_handle
UV_EXTERN int uv_tcp_connect(uv_connect_t *req, uv_tcp_t *handle, const struct sockaddr *addr, uv_connect_cb cb)
UV_EXTERN int uv_ip4_addr(const char *ip, int port, struct sockaddr_in *addr)
UV_EXTERN int uv_idle_stop(uv_idle_t *idle)
UV_EXTERN int uv_loop_close(uv_loop_t *loop)
UV_EXTERN uv_loop_t * uv_default_loop(void)
static client_t clients[NUM_CLIENTS]
static void get_listen_handle(uv_loop_t *loop, uv_stream_t *server_handle)
static uv_async_t async_handle
unsigned __int64 uint64_t
UV_EXTERN int uv_read_start(uv_stream_t *, uv_alloc_cb alloc_cb, uv_read_cb read_cb)
handle_storage_t peer_handle
static uv_tcp_t server_handle
UV_EXTERN int uv_tcp_init(uv_loop_t *, uv_tcp_t *handle)
UV_EXTERN int uv_accept(uv_stream_t *server, uv_stream_t *client)
UV_EXTERN int uv_loop_init(uv_loop_t *loop)
static void ipc_close_cb(uv_handle_t *handle)
UV_EXTERN int uv_thread_create(uv_thread_t *tid, uv_thread_cb entry, void *arg)
static void ipc_read_cb(uv_stream_t *handle, ssize_t nread, const uv_buf_t *buf)
UV_PLATFORM_SEM_T uv_sem_t
unsigned int num_connects
UV_EXTERN void uv_sem_post(uv_sem_t *sem)
static uv_tcp_t peer_handle
UV_EXTERN int uv_sem_init(uv_sem_t *sem, unsigned int value)
UV_EXTERN int uv_idle_init(uv_loop_t *, uv_idle_t *idle)
uv_stream_t * server_handle
static int test_tcp(unsigned int num_servers, unsigned int num_clients)
#define MAKE_VALGRIND_HAPPY()
static void ipc_alloc_cb(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf)
UV_EXTERN int uv_async_init(uv_loop_t *, uv_async_t *async, uv_async_cb async_cb)
static void sv_read_cb(uv_stream_t *handle, ssize_t nread, const uv_buf_t *buf)
UV_EXTERN int uv_idle_start(uv_idle_t *idle, uv_idle_cb cb)
static uv_connect_t connect_req
static void cl_connect_cb(uv_connect_t *req, int status)
UV_EXTERN void uv_sem_destroy(uv_sem_t *sem)
unsigned int num_connects
UV_EXTERN uv_handle_type uv_pipe_pending_type(uv_pipe_t *handle)
UV_EXTERN uint64_t uv_hrtime(void)
static void ipc_write_cb(uv_write_t *req, int status)
BENCHMARK_IMPL(tcp_multi_accept2)
static void cl_close_cb(uv_handle_t *handle)
static void send_listen_handles(uv_handle_type type, unsigned int num_servers, struct server_ctx *servers)
UV_EXTERN uv_buf_t uv_buf_init(char *base, unsigned int len)
static void sv_alloc_cb(uv_handle_t *handle, size_t suggested_size, uv_buf_t *buf)
void(* uv_close_cb)(uv_handle_t *handle)
UV_EXTERN void uv_sem_wait(uv_sem_t *sem)
handle_storage_t server_handle
UV_EXTERN int uv_write2(uv_write_t *req, uv_stream_t *handle, const uv_buf_t bufs[], unsigned int nbufs, uv_stream_t *send_handle, uv_write_cb cb)
UV_EXTERN int uv_pipe_bind(uv_pipe_t *handle, const char *name)
static ABSL_INTERNAL_ATOMIC_HOOK_ATTRIBUTES absl::base_internal::AtomicHook< StatusPayloadPrinter > storage
static uv_tcp_t client_handle
UV_EXTERN int uv_async_send(uv_async_t *async)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:36