class Endpoint

Defined at line 183 of file ../../third_party/grpc/src/include/grpc/event_engine/event_engine.h

One end of a connection between a gRPC client and server. Endpoints are

created when connections are established, and Endpoint operations are

gRPC's primary means of communication.

Endpoints must use the provided MemoryAllocator for all data buffer memory

allocations. gRPC allows applications to set memory constraints per

Channel or Server, and the implementation depends on all dynamic memory

allocation being handled by the quota system.

Public Methods

bool Read (absl::AnyInvocable<void (absl::Status)> on_read, SliceBuffer * buffer, ReadArgs args)

Reads data from the Endpoint.

When data is available on the connection, that data is moved into the

If the read succeeds immediately, it returns true and the

callback is not executed. Otherwise it returns false and the

callback executes asynchronously when the read completes. The

caller must ensure that the callback has access to the buffer when it

executes. Ownership of the buffer is not transferred. Either an error is

passed to the callback (like socket closed), or valid data is available

in the buffer, but never both at the same time. Implementations that

receive valid data must not throw that data away - that is, if valid

data is received on the underlying endpoint, a callback will be made

with that data available and an ok status.

There can be at most one outstanding read per Endpoint at any given

time. An outstanding read is one in which the

callback has

not yet been executed for some previous call to

If an attempt

is made to call

while a previous read is still outstanding, the

must abort.

For failed read operations, implementations should pass the appropriate

statuses to

For example, callbacks might expect to receive

CANCELLED on endpoint shutdown.

bool Write (absl::AnyInvocable<void (absl::Status)> on_writable, SliceBuffer * data, WriteArgs args)

Writes data out on the connection.

If the write succeeds immediately, it returns true and the

callback is not executed. Otherwise it returns false and

the

callback is called asynchronously when the connection

is ready for more data. The Slices within the

buffer may be

mutated at will by the Endpoint until

is called. The

SliceBuffer will remain valid after calling

but its state

is otherwise undefined. All bytes in

must have been written

before calling

unless an error has occurred.

There can be at most one outstanding write per Endpoint at any given

time. An outstanding write is one in which the

callback

has not yet been executed for some previous call to

If an

attempt is made to call

while a previous write is still

outstanding, the

must abort.

For failed write operations, implementations should pass the appropriate

statuses to

For example, callbacks might expect to

receive CANCELLED on endpoint shutdown.

const ResolvedAddress & GetPeerAddress ()

Returns an address in the format described in DNSResolver. The returned

values are expected to remain valid for the life of the Endpoint.

const ResolvedAddress & GetLocalAddress ()
std::shared_ptr<TelemetryInfo> GetTelemetryInfo ()
void ~Endpoint ()

Shuts down all connections and invokes all pending read or write

callbacks with an error status.

Defined at line 187 of file ../../third_party/grpc/src/include/grpc/event_engine/event_engine.h

Records