|
|
@ -39,6 +39,18 @@ |
|
|
|
grpc_core::TraceFlag grpc_polling_trace(false, |
|
|
|
grpc_core::TraceFlag grpc_polling_trace(false, |
|
|
|
"polling"); /* Disabled by default */ |
|
|
|
"polling"); /* Disabled by default */ |
|
|
|
grpc_core::DebugOnlyTraceFlag grpc_trace_fd_refcount(false, "fd_refcount"); |
|
|
|
grpc_core::DebugOnlyTraceFlag grpc_trace_fd_refcount(false, "fd_refcount"); |
|
|
|
|
|
|
|
grpc_core::DebugOnlyTraceFlag grpc_polling_api_trace(false, "polling_api"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef NDEBUG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Polling API trace only enabled in debug builds
|
|
|
|
|
|
|
|
#define GRPC_POLLING_API_TRACE(format, ...) \ |
|
|
|
|
|
|
|
if (grpc_polling_api_trace.enabled()) { \
|
|
|
|
|
|
|
|
gpr_log(GPR_DEBUG, "(polling-api) " format, __VA_ARGS__); \
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
#define GRPC_POLLING_API_TRACE(...) |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
/** Default poll() function - a pointer so that it can be overridden by some
|
|
|
|
/** Default poll() function - a pointer so that it can be overridden by some
|
|
|
|
* tests */ |
|
|
|
* tests */ |
|
|
@ -177,6 +189,7 @@ void grpc_event_engine_shutdown(void) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
grpc_fd* grpc_fd_create(int fd, const char* name) { |
|
|
|
grpc_fd* grpc_fd_create(int fd, const char* name) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("fd_create(%d)", fd); |
|
|
|
return g_event_engine->fd_create(fd, name); |
|
|
|
return g_event_engine->fd_create(fd, name); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -186,10 +199,14 @@ int grpc_fd_wrapped_fd(grpc_fd* fd) { |
|
|
|
|
|
|
|
|
|
|
|
void grpc_fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd, |
|
|
|
void grpc_fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd, |
|
|
|
bool already_closed, const char* reason) { |
|
|
|
bool already_closed, const char* reason) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("fd_orphan(%d, %p, %p, %d, %s)", |
|
|
|
|
|
|
|
grpc_fd_wrapped_fd(fd), on_done, release_fd, |
|
|
|
|
|
|
|
already_closed, reason); |
|
|
|
g_event_engine->fd_orphan(fd, on_done, release_fd, already_closed, reason); |
|
|
|
g_event_engine->fd_orphan(fd, on_done, release_fd, already_closed, reason); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_fd_shutdown(grpc_fd* fd, grpc_error* why) { |
|
|
|
void grpc_fd_shutdown(grpc_fd* fd, grpc_error* why) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("fd_shutdown(%d)", grpc_fd_wrapped_fd(fd)); |
|
|
|
g_event_engine->fd_shutdown(fd, why); |
|
|
|
g_event_engine->fd_shutdown(fd, why); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -208,65 +225,87 @@ void grpc_fd_notify_on_write(grpc_fd* fd, grpc_closure* closure) { |
|
|
|
size_t grpc_pollset_size(void) { return g_event_engine->pollset_size; } |
|
|
|
size_t grpc_pollset_size(void) { return g_event_engine->pollset_size; } |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_init(grpc_pollset* pollset, gpr_mu** mu) { |
|
|
|
void grpc_pollset_init(grpc_pollset* pollset, gpr_mu** mu) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_init(%p)", pollset); |
|
|
|
g_event_engine->pollset_init(pollset, mu); |
|
|
|
g_event_engine->pollset_init(pollset, mu); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { |
|
|
|
void grpc_pollset_shutdown(grpc_pollset* pollset, grpc_closure* closure) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_shutdown(%p)", pollset); |
|
|
|
g_event_engine->pollset_shutdown(pollset, closure); |
|
|
|
g_event_engine->pollset_shutdown(pollset, closure); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_destroy(grpc_pollset* pollset) { |
|
|
|
void grpc_pollset_destroy(grpc_pollset* pollset) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_destroy(%p)", pollset); |
|
|
|
g_event_engine->pollset_destroy(pollset); |
|
|
|
g_event_engine->pollset_destroy(pollset); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
grpc_error* grpc_pollset_work(grpc_pollset* pollset, |
|
|
|
grpc_error* grpc_pollset_work(grpc_pollset* pollset, |
|
|
|
grpc_pollset_worker** worker, |
|
|
|
grpc_pollset_worker** worker, |
|
|
|
grpc_millis deadline) { |
|
|
|
grpc_millis deadline) { |
|
|
|
return g_event_engine->pollset_work(pollset, worker, deadline); |
|
|
|
GRPC_POLLING_API_TRACE("pollset_work(%p, %ld) begin", pollset, deadline); |
|
|
|
|
|
|
|
grpc_error* err = g_event_engine->pollset_work(pollset, worker, deadline); |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_work(%p, %ld) end", pollset, deadline); |
|
|
|
|
|
|
|
return err; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
grpc_error* grpc_pollset_kick(grpc_pollset* pollset, |
|
|
|
grpc_error* grpc_pollset_kick(grpc_pollset* pollset, |
|
|
|
grpc_pollset_worker* specific_worker) { |
|
|
|
grpc_pollset_worker* specific_worker) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_kick(%p, %p)", pollset, specific_worker); |
|
|
|
return g_event_engine->pollset_kick(pollset, specific_worker); |
|
|
|
return g_event_engine->pollset_kick(pollset, specific_worker); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_add_fd(grpc_pollset* pollset, struct grpc_fd* fd) { |
|
|
|
void grpc_pollset_add_fd(grpc_pollset* pollset, struct grpc_fd* fd) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_add_fd(%p, %d)", pollset, |
|
|
|
|
|
|
|
grpc_fd_wrapped_fd(fd)); |
|
|
|
g_event_engine->pollset_add_fd(pollset, fd); |
|
|
|
g_event_engine->pollset_add_fd(pollset, fd); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
grpc_pollset_set* grpc_pollset_set_create(void) { |
|
|
|
grpc_pollset_set* grpc_pollset_set_create(void) { |
|
|
|
return g_event_engine->pollset_set_create(); |
|
|
|
grpc_pollset_set* pss = g_event_engine->pollset_set_create(); |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_set_create(%p)", pss); |
|
|
|
|
|
|
|
return pss; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_set_destroy(grpc_pollset_set* pollset_set) { |
|
|
|
void grpc_pollset_set_destroy(grpc_pollset_set* pollset_set) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_set_destroy(%p)", pollset_set); |
|
|
|
g_event_engine->pollset_set_destroy(pollset_set); |
|
|
|
g_event_engine->pollset_set_destroy(pollset_set); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_set_add_pollset(grpc_pollset_set* pollset_set, |
|
|
|
void grpc_pollset_set_add_pollset(grpc_pollset_set* pollset_set, |
|
|
|
grpc_pollset* pollset) { |
|
|
|
grpc_pollset* pollset) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_set_add_pollset(%p, %p)", pollset_set, |
|
|
|
|
|
|
|
pollset); |
|
|
|
g_event_engine->pollset_set_add_pollset(pollset_set, pollset); |
|
|
|
g_event_engine->pollset_set_add_pollset(pollset_set, pollset); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_set_del_pollset(grpc_pollset_set* pollset_set, |
|
|
|
void grpc_pollset_set_del_pollset(grpc_pollset_set* pollset_set, |
|
|
|
grpc_pollset* pollset) { |
|
|
|
grpc_pollset* pollset) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_set_del_pollset(%p, %p)", pollset_set, |
|
|
|
|
|
|
|
pollset); |
|
|
|
g_event_engine->pollset_set_del_pollset(pollset_set, pollset); |
|
|
|
g_event_engine->pollset_set_del_pollset(pollset_set, pollset); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_set_add_pollset_set(grpc_pollset_set* bag, |
|
|
|
void grpc_pollset_set_add_pollset_set(grpc_pollset_set* bag, |
|
|
|
grpc_pollset_set* item) { |
|
|
|
grpc_pollset_set* item) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_set_add_pollset_set(%p, %p)", bag, item); |
|
|
|
g_event_engine->pollset_set_add_pollset_set(bag, item); |
|
|
|
g_event_engine->pollset_set_add_pollset_set(bag, item); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_set_del_pollset_set(grpc_pollset_set* bag, |
|
|
|
void grpc_pollset_set_del_pollset_set(grpc_pollset_set* bag, |
|
|
|
grpc_pollset_set* item) { |
|
|
|
grpc_pollset_set* item) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_set_del_pollset_set(%p, %p)", bag, item); |
|
|
|
g_event_engine->pollset_set_del_pollset_set(bag, item); |
|
|
|
g_event_engine->pollset_set_del_pollset_set(bag, item); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_set_add_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) { |
|
|
|
void grpc_pollset_set_add_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_set_add_fd(%p, %d)", pollset_set, |
|
|
|
|
|
|
|
grpc_fd_wrapped_fd(fd)); |
|
|
|
g_event_engine->pollset_set_add_fd(pollset_set, fd); |
|
|
|
g_event_engine->pollset_set_add_fd(pollset_set, fd); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void grpc_pollset_set_del_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) { |
|
|
|
void grpc_pollset_set_del_fd(grpc_pollset_set* pollset_set, grpc_fd* fd) { |
|
|
|
|
|
|
|
GRPC_POLLING_API_TRACE("pollset_set_del_fd(%p, %d)", pollset_set, |
|
|
|
|
|
|
|
grpc_fd_wrapped_fd(fd)); |
|
|
|
g_event_engine->pollset_set_del_fd(pollset_set, fd); |
|
|
|
g_event_engine->pollset_set_del_fd(pollset_set, fd); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|