#include <grpc/support/port_platform.h>
#include "src/core/lib/iomgr/event_engine_shims/endpoint.h"
#include <atomic>
#include <memory>
#include "absl/status/status.h"
#include "absl/strings/string_view.h"
#include <grpc/event_engine/event_engine.h>
#include <grpc/impl/codegen/slice.h>
#include <grpc/slice.h>
#include <grpc/slice_buffer.h>
#include <grpc/support/log.h>
#include <grpc/support/time.h>
#include "src/core/lib/event_engine/posix.h"
#include "src/core/lib/event_engine/shim.h"
#include "src/core/lib/event_engine/tcp_socket_utils.h"
#include "src/core/lib/event_engine/trace.h"
#include "src/core/lib/gpr/string.h"
#include "src/core/lib/gprpp/construct_destruct.h"
#include "src/core/lib/gprpp/debug_location.h"
#include "src/core/lib/gprpp/sync.h"
#include "src/core/lib/iomgr/closure.h"
#include "src/core/lib/iomgr/endpoint.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/event_engine_shims/closure.h"
#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/port.h"
#include "src/core/lib/slice/slice_string_helpers.h"
#include "src/core/lib/transport/error_utils.h"
extern grpc_core::TraceFlag grpc_tcp_trace;
namespace grpc_event_engine {
namespace experimental {
namespace {
constexpr int64_t kShutdownBit = …;
class EventEngineEndpointWrapper { … };
void EndpointRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
grpc_closure* cb, bool , int min_progress_size) { … }
void EndpointWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
grpc_closure* cb, void* arg, int max_frame_size) { … }
void EndpointAddToPollset(grpc_endpoint* ,
grpc_pollset* ) { … }
void EndpointAddToPollsetSet(grpc_endpoint* ,
grpc_pollset_set* ) { … }
void EndpointDeleteFromPollsetSet(grpc_endpoint* ,
grpc_pollset_set* ) { … }
void EndpointShutdown(grpc_endpoint* ep, grpc_error_handle why) { … }
void EndpointDestroy(grpc_endpoint* ep) { … }
absl::string_view EndpointGetPeerAddress(grpc_endpoint* ep) { … }
absl::string_view EndpointGetLocalAddress(grpc_endpoint* ep) { … }
int EndpointGetFd(grpc_endpoint* ep) { … }
bool EndpointCanTrackErr(grpc_endpoint* ) { … }
grpc_endpoint_vtable grpc_event_engine_endpoint_vtable = …;
EventEngineEndpointWrapper::EventEngineEndpointWrapper(
std::unique_ptr<EventEngine::Endpoint> endpoint)
: … { … }
}
grpc_endpoint* grpc_event_engine_endpoint_create(
std::unique_ptr<EventEngine::Endpoint> ee_endpoint) { … }
bool grpc_is_event_engine_endpoint(grpc_endpoint* ep) { … }
void grpc_event_engine_endpoint_destroy_and_release_fd(
grpc_endpoint* ep, int* fd, grpc_closure* on_release_fd) { … }
}
}