Skip to content

Commit

Permalink
Posix Event Engine listener implementation (grpc#31513)
Browse files Browse the repository at this point in the history
* Util functions to help with posix engine listener implementation

* sanity

* update comments in posix_engine_listener_utils.h

* review comments

* iwyu

* revert prev commit

* iwyu

* update build

* update

* regenerate projects

* regenerate projects

* minor fixes

* update BUILD

* sanity

* update build

* regenerate projects

* fix unused parameter

* sanity

* update

* sanity

* regenerate_projects

* remove unused variable
  • Loading branch information
Vignesh2208 authored Nov 16, 2022
1 parent 0d4000d commit c5a66bb
Show file tree
Hide file tree
Showing 19 changed files with 565 additions and 10 deletions.
6 changes: 5 additions & 1 deletion CMakeLists.txt

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Makefile

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 10 additions & 3 deletions build_autogenerated.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions config.m4

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions config.w32

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions gRPC-C++.podspec

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions gRPC-Core.podspec

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions grpc.gemspec

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions grpc.gyp

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions package.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 32 additions & 0 deletions src/core/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -1732,6 +1732,37 @@ grpc_cc_library(
],
)

grpc_cc_library(
name = "posix_event_engine_listener",
srcs = [
"lib/event_engine/posix_engine/posix_engine_listener.cc",
],
hdrs = [
"lib/event_engine/posix_engine/posix_engine_listener.h",
],
external_deps = [
"absl/base:core_headers",
"absl/functional:any_invocable",
"absl/status",
"absl/status:statusor",
"absl/strings",
"absl/synchronization",
"absl/types:optional",
],
deps = [
"iomgr_port",
"posix_event_engine_closure",
"posix_event_engine_endpoint",
"posix_event_engine_event_poller",
"posix_event_engine_listener_utils",
"posix_event_engine_tcp_socket_utils",
"socket_mutator",
"status_helper",
"//:event_engine_base_hdrs",
"//:gpr",
],
)

grpc_cc_library(
name = "posix_event_engine",
srcs = ["lib/event_engine/posix_engine/posix_engine.cc"],
Expand Down Expand Up @@ -1759,6 +1790,7 @@ grpc_cc_library(
"posix_event_engine_closure",
"posix_event_engine_endpoint",
"posix_event_engine_event_poller",
"posix_event_engine_listener",
"posix_event_engine_poller_posix_default",
"posix_event_engine_tcp_socket_utils",
"posix_event_engine_timer",
Expand Down
20 changes: 15 additions & 5 deletions src/core/lib/event_engine/posix_engine/posix_engine.cc
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
#include "src/core/lib/event_engine/posix_engine/event_poller.h"
#include "src/core/lib/event_engine/posix_engine/event_poller_posix_default.h"
#include "src/core/lib/event_engine/posix_engine/posix_endpoint.h"
#include "src/core/lib/event_engine/posix_engine/posix_engine_listener.h"
#endif // GRPC_POSIX_SOCKET_TCP

// IWYU pragma: no_include <ratio>
Expand All @@ -62,6 +63,7 @@ namespace experimental {
#ifdef GRPC_POSIX_SOCKET_TCP
using ::grpc_event_engine::posix_engine::EventHandle;
using ::grpc_event_engine::posix_engine::PosixEngineClosure;
using ::grpc_event_engine::posix_engine::PosixEngineListener;
using ::grpc_event_engine::posix_engine::PosixEventPoller;
using ::grpc_event_engine::posix_engine::PosixSocketWrapper;
using ::grpc_event_engine::posix_engine::PosixTcpOptions;
Expand Down Expand Up @@ -566,11 +568,19 @@ EventEngine::ConnectionHandle PosixEventEngine::Connect(

absl::StatusOr<std::unique_ptr<EventEngine::Listener>>
PosixEventEngine::CreateListener(
Listener::AcceptCallback /*on_accept*/,
absl::AnyInvocable<void(absl::Status)> /*on_shutdown*/,
const EndpointConfig& /*config*/,
std::unique_ptr<MemoryAllocatorFactory> /*memory_allocator_factory*/) {
GPR_ASSERT(false && "unimplemented");
Listener::AcceptCallback on_accept,
absl::AnyInvocable<void(absl::Status)> on_shutdown,
const EndpointConfig& config,
std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory) {
#ifdef GRPC_POSIX_SOCKET_TCP
return std::make_unique<PosixEngineListener>(
std::move(on_accept), std::move(on_shutdown), config,
std::move(memory_allocator_factory), poller_manager_->Poller(),
shared_from_this());
#else // GRPC_POSIX_SOCKET_TCP
GPR_ASSERT(false &&
"EventEngine::CreateListener is not supported on this platform");
#endif // GRPC_POSIX_SOCKET_TCP
}

} // namespace experimental
Expand Down
Loading

0 comments on commit c5a66bb

Please sign in to comment.