iomgr_engine.h
Go to the documentation of this file.
1 // Copyright 2022 The gRPC Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 #ifndef GRPC_CORE_LIB_EVENT_ENGINE_IOMGR_ENGINE_IOMGR_ENGINE_H
15 #define GRPC_CORE_LIB_EVENT_ENGINE_IOMGR_ENGINE_IOMGR_ENGINE_H
17 
18 #include <stdint.h>
19 
20 #include <atomic>
21 #include <functional>
22 #include <memory>
23 
24 #include "absl/base/thread_annotations.h"
25 #include "absl/status/status.h"
26 #include "absl/status/statusor.h"
27 #include "absl/strings/string_view.h"
28 
33 
39 
40 namespace grpc_event_engine {
41 namespace experimental {
42 
43 // An iomgr-based EventEngine implementation.
44 // All methods require an ExecCtx to already exist on the thread's stack.
45 class IomgrEventEngine final : public EventEngine {
46  public:
48  public:
49  ~IomgrEndpoint() override;
51  const ReadArgs* args) override;
52  void Write(std::function<void(absl::Status)> on_writable, SliceBuffer* data,
53  const WriteArgs* args) override;
54  const ResolvedAddress& GetPeerAddress() const override;
55  const ResolvedAddress& GetLocalAddress() const override;
56  };
58  public:
59  ~IomgrListener() override;
61  absl::Status Start() override;
62  };
64  public:
65  ~IomgrDNSResolver() override;
68  absl::string_view default_port,
69  Duration timeout) override;
72  Duration timeout) override;
75  Duration timeout) override;
76  bool CancelLookup(LookupTaskHandle handle) override;
77  };
78 
80  ~IomgrEventEngine() override;
81 
84  std::function<void(absl::Status)> on_shutdown,
85  const EndpointConfig& config,
86  std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory)
87  override;
88 
90  const ResolvedAddress& addr,
91  const EndpointConfig& args,
92  MemoryAllocator memory_allocator,
93  Duration timeout) override;
94 
95  bool CancelConnect(ConnectionHandle handle) override;
96  bool IsWorkerThread() override;
97  std::unique_ptr<DNSResolver> GetDNSResolver(
98  const DNSResolver::ResolverOptions& options) override;
99  void Run(Closure* closure) override;
100  void Run(std::function<void()> closure) override;
101  TaskHandle RunAfter(Duration when, Closure* closure) override;
102  TaskHandle RunAfter(Duration when, std::function<void()> closure) override;
103  bool Cancel(TaskHandle handle) override;
104 
105  private:
106  struct ClosureData;
108  std::function<void()> cb);
110 
113 
115  TaskHandleSet known_handles_ ABSL_GUARDED_BY(mu_);
116  std::atomic<intptr_t> aba_token_{0};
117 };
118 
119 } // namespace experimental
120 } // namespace grpc_event_engine
121 
122 #endif // GRPC_CORE_LIB_EVENT_ENGINE_IOMGR_ENGINE_IOMGR_ENGINE_H
grpc_event_engine::experimental::IomgrEventEngine::~IomgrEventEngine
~IomgrEventEngine() override
Definition: iomgr_engine.cc:71
grpc_event_engine::experimental::IomgrEventEngine::IomgrDNSResolver::CancelLookup
bool CancelLookup(LookupTaskHandle handle) override
grpc_event_engine::experimental::IomgrEventEngine::IsWorkerThread
bool IsWorkerThread() override
Definition: iomgr_engine.cc:134
grpc_event_engine::experimental::IomgrEventEngine::aba_token_
std::atomic< intptr_t > aba_token_
Definition: iomgr_engine.h:116
grpc_event_engine::experimental::EventEngine::Listener::AcceptCallback
std::function< void(std::unique_ptr< Endpoint >, MemoryAllocator memory_allocator)> AcceptCallback
Called when the listener has accepted a new client connection.
Definition: event_engine.h:232
grpc_event_engine::experimental::MemoryAllocator
Definition: memory_allocator.h:35
grpc_event_engine::experimental::IomgrEventEngine::ABSL_GUARDED_BY
TaskHandleSet known_handles_ ABSL_GUARDED_BY(mu_)
grpc_event_engine::experimental::IomgrEventEngine::IomgrEventEngine
IomgrEventEngine()
Definition: iomgr_engine.cc:69
event_engine.h
grpc_event_engine::experimental::IomgrEventEngine::RunAfter
TaskHandle RunAfter(Duration when, Closure *closure) override
Definition: iomgr_engine.cc:99
options
double_dict options[]
Definition: capstone_test.c:55
absl::string_view
Definition: abseil-cpp/absl/strings/string_view.h:167
grpc_core::Timestamp
Definition: src/core/lib/gprpp/time.h:62
grpc_event_engine::iomgr_engine::TimerManager
Definition: event_engine/iomgr_engine/timer_manager.h:47
grpc_event_engine::experimental::IomgrEventEngine::CreateListener
absl::StatusOr< std::unique_ptr< Listener > > CreateListener(Listener::AcceptCallback on_accept, std::function< void(absl::Status)> on_shutdown, const EndpointConfig &config, std::unique_ptr< MemoryAllocatorFactory > memory_allocator_factory) override
Definition: iomgr_engine.cc:150
grpc_event_engine::experimental::EventEngine
Definition: event_engine.h:74
grpc_event_engine::experimental::EventEngine::DNSResolver::LookupSRVCallback
std::function< void(absl::StatusOr< std::vector< SRVRecord > >)> LookupSRVCallback
Called with a collection of SRV records.
Definition: event_engine.h:314
grpc_event_engine::experimental::EventEngine::Duration
std::chrono::duration< int64_t, std::nano > Duration
Definition: event_engine.h:80
grpc_event_engine::experimental::EventEngine::Endpoint
Definition: event_engine.h:141
grpc_event_engine::experimental::IomgrEventEngine::GetDNSResolver
std::unique_ptr< DNSResolver > GetDNSResolver(const DNSResolver::ResolverOptions &options) override
Definition: iomgr_engine.cc:129
setup.name
name
Definition: setup.py:542
grpc_event_engine::experimental::IomgrEventEngine::IomgrListener::Start
absl::Status Start() override
grpc_event_engine::experimental::EventEngine::TaskHandle
Definition: event_engine.h:102
grpc_event_engine::experimental::IomgrEventEngine::IomgrDNSResolver
Definition: iomgr_engine.h:63
grpc_event_engine::experimental::IomgrEventEngine::ToTimestamp
grpc_core::Timestamp ToTimestamp(EventEngine::Duration when)
Definition: iomgr_engine.cc:44
grpc_event_engine::experimental::EndpointConfig
Definition: endpoint_config.h:31
grpc_event_engine::experimental::EventEngine::ResolvedAddress
Definition: event_engine.h:118
grpc_event_engine::experimental::EventEngine::DNSResolver::LookupHostnameCallback
std::function< void(absl::StatusOr< std::vector< ResolvedAddress > >)> LookupHostnameCallback
Definition: event_engine.h:311
grpc_event_engine::experimental::IomgrEventEngine::IomgrDNSResolver::~IomgrDNSResolver
~IomgrDNSResolver() override
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
on_read
static grpc_closure on_read
Definition: bad_server_response_test.cc:88
grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs
Definition: event_engine.h:181
grpc_event_engine::experimental::EventEngine::DNSResolver::LookupTXTCallback
std::function< void(absl::StatusOr< std::string >)> LookupTXTCallback
Called with the result of a TXT record lookup.
Definition: event_engine.h:316
grpc_event_engine::experimental::IomgrEventEngine::timer_manager_
iomgr_engine::TimerManager timer_manager_
Definition: iomgr_engine.h:111
absl::flat_hash_set
Definition: abseil-cpp/absl/container/flat_hash_set.h:105
grpc_event_engine::experimental::EventEngine::ConnectionHandle
Definition: event_engine.h:108
time.h
thread_pool.h
grpc_event_engine::experimental::IomgrEventEngine::Cancel
bool Cancel(TaskHandle handle) override
Definition: iomgr_engine.cc:84
grpc_event_engine::experimental::IomgrEventEngine::IomgrDNSResolver::LookupSRV
LookupTaskHandle LookupSRV(LookupSRVCallback on_resolve, absl::string_view name, Duration timeout) override
grpc_event_engine::experimental::EventEngine::DNSResolver
Provides asynchronous resolution.
Definition: event_engine.h:289
data
char data[kBufferLength]
Definition: abseil-cpp/absl/strings/internal/str_format/float_conversion.cc:1006
buffer
char buffer[1024]
Definition: libuv/docs/code/idle-compute/main.c:8
grpc_event_engine::experimental::EventEngine::Endpoint::ReadArgs
Definition: event_engine.h:150
grpc_event_engine::experimental::EventEngine::DNSResolver::LookupTaskHandle
Task handle for DNS Resolution requests.
Definition: event_engine.h:292
stdint.h
grpc_event_engine::experimental::EventEngine::Listener
Definition: event_engine.h:228
on_connect
void on_connect(uv_connect_t *req, int status)
Definition: libuv/docs/code/dns/main.c:32
grpc_event_engine::experimental::IomgrEventEngine::IomgrListener
Definition: iomgr_engine.h:57
grpc_event_engine::experimental::IomgrEventEngine::RunAfterInternal
EventEngine::TaskHandle RunAfterInternal(Duration when, std::function< void()> cb)
Definition: iomgr_engine.cc:112
grpc_event_engine::experimental::IomgrEventEngine::Connect
ConnectionHandle Connect(OnConnectCallback on_connect, const ResolvedAddress &addr, const EndpointConfig &args, MemoryAllocator memory_allocator, Duration timeout) override
Definition: iomgr_engine.cc:142
grpc_event_engine::experimental::EventEngine::OnConnectCallback
std::function< void(absl::StatusOr< std::unique_ptr< Endpoint > >)> OnConnectCallback
Definition: event_engine.h:224
grpc_core::Mutex
Definition: src/core/lib/gprpp/sync.h:61
grpc_event_engine::experimental::EventEngine::Closure
Definition: event_engine.h:87
slice_buffer.h
grpc_event_engine::experimental::IomgrEventEngine::thread_pool_
iomgr_engine::ThreadPool thread_pool_
Definition: iomgr_engine.h:112
grpc_event_engine::experimental::IomgrEventEngine::IomgrDNSResolver::LookupTXT
LookupTaskHandle LookupTXT(LookupTXTCallback on_resolve, absl::string_view name, Duration timeout) override
grpc_event_engine::experimental::IomgrEventEngine::IomgrEndpoint::GetPeerAddress
const ResolvedAddress & GetPeerAddress() const override
absl::Status
Definition: third_party/abseil-cpp/absl/status/status.h:424
on_accept
static void on_accept(void *arg, grpc_endpoint *endpoint, grpc_pollset *, grpc_tcp_server_acceptor *acceptor)
Definition: http_proxy_fixture.cc:567
grpc_event_engine::experimental::SliceBuffer
Definition: include/grpc/event_engine/slice_buffer.h:51
grpc_event_engine
Definition: endpoint_config.h:24
grpc_event_engine::experimental::IomgrEventEngine::IomgrEndpoint::GetLocalAddress
const ResolvedAddress & GetLocalAddress() const override
grpc_event_engine::experimental::IomgrEventEngine::IomgrEndpoint
Definition: iomgr_engine.h:47
timer_manager.h
grpc_event_engine::experimental::IomgrEventEngine::IomgrEndpoint::Read
void Read(std::function< void(absl::Status)> on_read, SliceBuffer *buffer, const ReadArgs *args) override
handle_containers.h
closure
Definition: proxy.cc:59
config_s
Definition: bloaty/third_party/zlib/deflate.c:120
grpc_event_engine::experimental::IomgrEventEngine::mu_
grpc_core::Mutex mu_
Definition: iomgr_engine.h:114
grpc_event_engine::experimental::IomgrEventEngine::IomgrEndpoint::Write
void Write(std::function< void(absl::Status)> on_writable, SliceBuffer *data, const WriteArgs *args) override
handle
static csh handle
Definition: test_arm_regression.c:16
memory_allocator.h
Duration
Definition: bloaty/third_party/protobuf/src/google/protobuf/duration.pb.h:69
grpc_event_engine::experimental::IomgrEventEngine
Definition: iomgr_engine.h:45
absl::StatusOr
Definition: abseil-cpp/absl/status/statusor.h:187
grpc_event_engine::experimental::IomgrEventEngine::IomgrListener::Bind
absl::StatusOr< int > Bind(const ResolvedAddress &addr) override
grpc_event_engine::iomgr_engine::ThreadPool
Definition: src/core/lib/event_engine/iomgr_engine/thread_pool.h:37
endpoint_config.h
function
std::function< bool(GrpcTool *, int, const char **, const CliCredentials &, GrpcToolOutputCallback)> function
Definition: grpc_tool.cc:250
grpc_event_engine::experimental::IomgrEventEngine::IomgrEndpoint::~IomgrEndpoint
~IomgrEndpoint() override
grpc_event_engine::experimental::IomgrEventEngine::ClosureData
Definition: iomgr_engine.cc:51
grpc_event_engine::experimental::IomgrEventEngine::IomgrDNSResolver::LookupHostname
LookupTaskHandle LookupHostname(LookupHostnameCallback on_resolve, absl::string_view name, absl::string_view default_port, Duration timeout) override
addr
struct sockaddr_in addr
Definition: libuv/docs/code/tcp-echo-server/main.c:10
timeout
uv_timer_t timeout
Definition: libuv/docs/code/uvwget/main.c:9
sync.h
cb
OPENSSL_EXPORT pem_password_cb * cb
Definition: pem.h:351
grpc_event_engine::experimental::IomgrEventEngine::Run
void Run(Closure *closure) override
Definition: iomgr_engine.cc:108
grpc_event_engine::experimental::IomgrEventEngine::CancelConnect
bool CancelConnect(ConnectionHandle handle) override
Definition: iomgr_engine.cc:138
grpc_event_engine::experimental::IomgrEventEngine::IomgrListener::~IomgrListener
~IomgrListener() override
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:22