class Extensible

Defined at line 25 of file ../../third_party/grpc-migrating/src/include/grpc/event_engine/extensible.h

Public Methods

void * QueryExtension (absl::string_view )

A method which allows users to query whether an implementation supports a

specified extension. The name of the extension is provided as an input.

An extension could be any type with a unique string id. Each extension may

support additional capabilities and if the implementation supports the

queried extension, it should return a valid pointer to the extension type.

E.g., use case of an EventEngine::Endpoint supporting a custom extension.

class CustomEndpointExtension {

public:

static std::string EndpointExtensionName() {

return "my.namespace.extension_name";

}

virtual void Process() = 0;

}

class CustomEndpoint :

public EventEngine::Endpoint, public CustomEndpointExtension {

public:

void* QueryExtension(absl::string_view id) override {

if (id == CustomEndpointExtension::EndpointExtensionName()) {

return static_cast

<CustomEndpointExtension

*>(this);

}

return nullptr;

}

void Process() override { ... }

...

}

auto endpoint =

static_cast

<CustomEndpointExtension

*>(endpoint->QueryExtension(

CustomEndpointExtension::EndpointExtensionName()));

if (endpoint != nullptr) endpoint->Process();

Defined at line 62 of file ../../third_party/grpc-migrating/src/include/grpc/event_engine/extensible.h