diff --git a/mobile/library/common/internal_engine.cc b/mobile/library/common/internal_engine.cc index 52b7b0c167d2..43434ee48f9a 100644 --- a/mobile/library/common/internal_engine.cc +++ b/mobile/library/common/internal_engine.cc @@ -11,8 +11,6 @@ namespace Envoy { static std::atomic current_stream_handle_{0}; -envoy_stream_t InternalEngine::initStream() { return current_stream_handle_++; } - InternalEngine::InternalEngine(std::unique_ptr callbacks, std::unique_ptr logger, std::unique_ptr event_tracker, @@ -47,6 +45,42 @@ envoy_status_t InternalEngine::run(const std::string& config, const std::string& return run(std::move(options)); } +envoy_stream_t InternalEngine::initStream() { return current_stream_handle_++; } + +envoy_status_t InternalEngine::startStream(envoy_stream_t stream, + envoy_http_callbacks bridge_callbacks, + bool explicit_flow_control) { + return dispatcher_->post([&, stream, bridge_callbacks, explicit_flow_control]() { + http_client_->startStream(stream, bridge_callbacks, explicit_flow_control); + }); +} + +envoy_status_t InternalEngine::sendHeaders(envoy_stream_t stream, envoy_headers headers, + bool end_stream) { + return dispatcher_->post([&, stream, headers, end_stream]() { + http_client_->sendHeaders(stream, headers, end_stream); + }); +} + +envoy_status_t InternalEngine::readData(envoy_stream_t stream, size_t bytes_to_read) { + return dispatcher_->post( + [&, stream, bytes_to_read]() { http_client_->readData(stream, bytes_to_read); }); +} + +envoy_status_t InternalEngine::sendData(envoy_stream_t stream, envoy_data data, bool end_stream) { + return dispatcher_->post( + [&, stream, data, end_stream]() { http_client_->sendData(stream, data, end_stream); }); +} + +envoy_status_t InternalEngine::sendTrailers(envoy_stream_t stream, envoy_headers trailers) { + return dispatcher_->post( + [&, stream, trailers]() { http_client_->sendTrailers(stream, trailers); }); +} + +envoy_status_t InternalEngine::cancelStream(envoy_stream_t stream) { + return dispatcher_->post([&, stream]() { http_client_->cancelStream(stream); }); +} + // This function takes a `std::shared_ptr` instead of `std::unique_ptr` because `std::function` is a // copy-constructible type, so it's not possible to move capture `std::unique_ptr` with // `std::function`. diff --git a/mobile/library/common/internal_engine.h b/mobile/library/common/internal_engine.h index 06f84e797db9..bdd273e8aeb0 100644 --- a/mobile/library/common/internal_engine.h +++ b/mobile/library/common/internal_engine.h @@ -62,32 +62,16 @@ class InternalEngine : public Logger::Loggable { // to http client functions of the same name after doing a dispatcher post // (thread context switch) envoy_status_t startStream(envoy_stream_t stream, envoy_http_callbacks bridge_callbacks, - bool explicit_flow_control) { - return dispatcher_->post([&, stream, bridge_callbacks, explicit_flow_control]() { - http_client_->startStream(stream, bridge_callbacks, explicit_flow_control); - }); - } - envoy_status_t sendHeaders(envoy_stream_t stream, envoy_headers headers, bool end_stream) { - return dispatcher_->post([&, stream, headers, end_stream]() { - http_client_->sendHeaders(stream, headers, end_stream); - }); - } - envoy_status_t readData(envoy_stream_t stream, size_t bytes_to_read) { - return dispatcher_->post( - [&, stream, bytes_to_read]() { http_client_->readData(stream, bytes_to_read); }); - } - envoy_status_t sendData(envoy_stream_t stream, envoy_data data, bool end_stream) { - return dispatcher_->post( - [&, stream, data, end_stream]() { http_client_->sendData(stream, data, end_stream); }); - } - envoy_status_t sendTrailers(envoy_stream_t stream, envoy_headers trailers) { - return dispatcher_->post( - [&, stream, trailers]() { http_client_->sendTrailers(stream, trailers); }); - } - - envoy_status_t cancelStream(envoy_stream_t stream) { - return dispatcher_->post([&, stream]() { http_client_->cancelStream(stream); }); - } + bool explicit_flow_control); + envoy_status_t sendHeaders(envoy_stream_t stream, envoy_headers headers, bool end_stream); + + envoy_status_t readData(envoy_stream_t stream, size_t bytes_to_read); + + envoy_status_t sendData(envoy_stream_t stream, envoy_data data, bool end_stream); + + envoy_status_t sendTrailers(envoy_stream_t stream, envoy_headers trailers); + + envoy_status_t cancelStream(envoy_stream_t stream); // These functions are wrappers around networkConnectivityManager functions, which hand off // to networkConnectivityManager after doing a dispatcher post (thread context switch)