#ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENGINE_LISTENER_H
#define GRPC_SRC_CORE_LIB_EVENT_ENGINE_POSIX_ENGINE_POSIX_ENGINE_LISTENER_H
#include <grpc/support/port_platform.h>
#include <string.h>
#include <atomic>
#include <list>
#include <memory>
#include <string>
#include <utility>
#include "absl/base/thread_annotations.h"
#include "absl/functional/any_invocable.h"
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "absl/synchronization/mutex.h"
#include <grpc/event_engine/endpoint_config.h>
#include <grpc/event_engine/event_engine.h>
#include <grpc/event_engine/memory_allocator.h>
#include <grpc/event_engine/slice_buffer.h>
#include "src/core/lib/event_engine/posix.h"
#include "src/core/lib/iomgr/port.h"
#ifdef GRPC_POSIX_SOCKET_TCP
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
#include "src/core/lib/event_engine/posix_engine/posix_engine_closure.h"
#include "src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h"
#include "src/core/lib/event_engine/posix_engine/tcp_socket_utils.h"
#include "src/core/lib/event_engine/tcp_socket_utils.h"
#endif
namespace grpc_event_engine {
namespace experimental {
#ifdef GRPC_POSIX_SOCKET_TCP
class PosixEngineListenerImpl
: public std::enable_shared_from_this<PosixEngineListenerImpl> { … };
class PosixEngineListener : public PosixListenerWithFdSupport { … };
#else
#include "src/core/lib/gprpp/crash.h"
class PosixEngineListener : public PosixListenerWithFdSupport {
public:
PosixEngineListener() = default;
~PosixEngineListener() override = default;
absl::StatusOr<int> Bind(const grpc_event_engine::experimental::EventEngine::
ResolvedAddress& ) override {
grpc_core::Crash(
"EventEngine::Listener::Bind not supported on this platform");
}
absl::Status Start() override {
grpc_core::Crash(
"EventEngine::Listener::Start not supported on this platform");
}
absl::StatusOr<int> BindWithFd(
const EventEngine::ResolvedAddress& ,
PosixListenerWithFdSupport::OnPosixBindNewFdCallback
) override {
grpc_core::Crash(
"PosixEngineListener::BindWithFd not supported on this "
"platform");
}
absl::Status HandleExternalConnection(
int , int , SliceBuffer* ) override {
grpc_core::Crash(
"PosixEngineListener::HandleExternalConnection not "
"supported on this platform");
}
void ShutdownListeningFds() override {
grpc_core::Crash(
"PosixEngineListener::ShutdownListeningFds not supported on "
"this platform");
}
};
#endif
}
}
#endif