|
44 | 44 | #include "absl/strings/string_view.h" |
45 | 45 | #include "src/core/lib/channel/channel_args.h" |
46 | 46 | #include "src/core/lib/event_engine/default_event_engine.h" |
| 47 | +#ifdef GPR_WINDOWS |
| 48 | +#include "src/core/lib/event_engine/windows/windows_engine.h" |
| 49 | +#endif |
47 | 50 | #include "src/core/lib/experiments/experiments.h" |
48 | 51 | #include "src/core/lib/iomgr/closure.h" |
49 | 52 | #include "src/core/lib/iomgr/error.h" |
@@ -131,6 +134,8 @@ class TestDNSResolver : public EventEngine::DNSResolver { |
131 | 134 | absl::StatusOr<std::unique_ptr<EventEngine::DNSResolver>> default_resolver_; |
132 | 135 | }; |
133 | 136 |
|
| 137 | +#ifndef GPR_WINDOWS |
| 138 | + |
134 | 139 | class TestEventEngine : public EventEngine { |
135 | 140 | public: |
136 | 141 | explicit TestEventEngine(std::shared_ptr<EventEngine> default_event_engine) |
@@ -195,6 +200,78 @@ class TestEventEngine : public EventEngine { |
195 | 200 | std::shared_ptr<EventEngine> default_event_engine_; |
196 | 201 | }; |
197 | 202 |
|
| 203 | +#else // GPR_WINDOWS |
| 204 | + |
| 205 | +class TestEventEngine : public WindowsEventEngine { |
| 206 | + public: |
| 207 | + explicit TestEventEngine( |
| 208 | + std::shared_ptr<WindowsEventEngine> default_event_engine) |
| 209 | + : default_event_engine_(std::move(default_event_engine)) {} |
| 210 | + ~TestEventEngine() override = default; |
| 211 | + |
| 212 | + absl::StatusOr<std::unique_ptr<Listener>> CreateListener( |
| 213 | + Listener::AcceptCallback on_accept, |
| 214 | + absl::AnyInvocable<void(absl::Status)> on_shutdown, |
| 215 | + const EndpointConfig& config, |
| 216 | + std::unique_ptr<MemoryAllocatorFactory> memory_allocator_factory) |
| 217 | + override { |
| 218 | + return default_event_engine_->CreateListener( |
| 219 | + std::move(on_accept), std::move(on_shutdown), config, |
| 220 | + std::move(memory_allocator_factory)); |
| 221 | + } |
| 222 | + |
| 223 | + ConnectionHandle Connect(OnConnectCallback on_connect, |
| 224 | + const ResolvedAddress& addr, |
| 225 | + const EndpointConfig& args, |
| 226 | + MemoryAllocator memory_allocator, |
| 227 | + Duration timeout) override { |
| 228 | + return default_event_engine_->Connect(std::move(on_connect), addr, args, |
| 229 | + std::move(memory_allocator), timeout); |
| 230 | + } |
| 231 | + |
| 232 | + bool CancelConnect(ConnectionHandle handle) override { |
| 233 | + return default_event_engine_->CancelConnect(handle); |
| 234 | + } |
| 235 | + |
| 236 | + bool IsWorkerThread() override { |
| 237 | + return default_event_engine_->IsWorkerThread(); |
| 238 | + } |
| 239 | + |
| 240 | + absl::StatusOr<std::unique_ptr<DNSResolver>> GetDNSResolver( |
| 241 | + const DNSResolver::ResolverOptions& options) override { |
| 242 | + return std::make_unique<TestDNSResolver>(default_event_engine_); |
| 243 | + } |
| 244 | + |
| 245 | + void Run(Closure* closure) override { |
| 246 | + return default_event_engine_->Run(closure); |
| 247 | + } |
| 248 | + |
| 249 | + void Run(absl::AnyInvocable<void()> closure) override { |
| 250 | + return default_event_engine_->Run(std::move(closure)); |
| 251 | + } |
| 252 | + |
| 253 | + TaskHandle RunAfter(Duration when, Closure* closure) override { |
| 254 | + return default_event_engine_->RunAfter(when, closure); |
| 255 | + } |
| 256 | + |
| 257 | + TaskHandle RunAfter(Duration when, |
| 258 | + absl::AnyInvocable<void()> closure) override { |
| 259 | + return default_event_engine_->RunAfter(when, std::move(closure)); |
| 260 | + } |
| 261 | + |
| 262 | + bool Cancel(TaskHandle handle) override { |
| 263 | + return default_event_engine_->Cancel(handle); |
| 264 | + } |
| 265 | + |
| 266 | + ThreadPool* thread_pool() { return default_event_engine_->thread_pool(); } |
| 267 | + IOCP* poller() { return default_event_engine_->poller(); } |
| 268 | + |
| 269 | + private: |
| 270 | + std::shared_ptr<WindowsEventEngine> default_event_engine_; |
| 271 | +}; |
| 272 | + |
| 273 | +#endif // GPR_WINDOWS |
| 274 | + |
198 | 275 | } // namespace |
199 | 276 |
|
200 | 277 | int main(int argc, char** argv) { |
|
0 commit comments