|
|
|
@ -104,12 +104,25 @@ const grpc_event_engine_vtable* init_non_polling(bool explicit_request) { |
|
|
|
|
#define ENGINE_HEAD_CUSTOM "head_custom" |
|
|
|
|
#define ENGINE_TAIL_CUSTOM "tail_custom" |
|
|
|
|
|
|
|
|
|
// The global array of event-engine factories. Each entry is a pair with a name
|
|
|
|
|
// and an event-engine generator function (nullptr if there is no generator
|
|
|
|
|
// registered for this name). The middle entries are the engines predefined by
|
|
|
|
|
// open-source gRPC. The head entries represent an opportunity for specific
|
|
|
|
|
// high-priority custom pollers to be added by the initializer plugins of
|
|
|
|
|
// custom-built gRPC libraries. The tail entries represent the same, but for
|
|
|
|
|
// low-priority custom pollers. The actual poller selected is either the first
|
|
|
|
|
// available one in the list if no specific poller is requested, or the first
|
|
|
|
|
// specific poller that is requested by name in the GRPC_POLL_STRATEGY
|
|
|
|
|
// environment variable if that variable is set (which should be a
|
|
|
|
|
// comma-separated list of one or more event engine names)
|
|
|
|
|
static event_engine_factory g_factories[] = { |
|
|
|
|
{ENGINE_HEAD_CUSTOM, nullptr}, {ENGINE_HEAD_CUSTOM, nullptr}, |
|
|
|
|
{ENGINE_HEAD_CUSTOM, nullptr}, {ENGINE_HEAD_CUSTOM, nullptr}, |
|
|
|
|
{"epollex", grpc_init_epollex_linux}, {"epoll1", grpc_init_epoll1_linux}, |
|
|
|
|
{"epollsig", grpc_init_epollsig_linux}, {"poll", grpc_init_poll_posix}, |
|
|
|
|
{"poll-cv", grpc_init_poll_cv_posix}, {"none", init_non_polling}, |
|
|
|
|
{ENGINE_TAIL_CUSTOM, nullptr}, {ENGINE_TAIL_CUSTOM, nullptr}, |
|
|
|
|
{ENGINE_TAIL_CUSTOM, nullptr}, {ENGINE_TAIL_CUSTOM, nullptr}, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static void add(const char* beg, const char* end, char*** ss, size_t* ns) { |
|
|
|
|