diff --git a/src/io/thrift/thrift_handle.hpp b/src/io/thrift/thrift_handle.hpp index d28cab204..834d81070 100644 --- a/src/io/thrift/thrift_handle.hpp +++ b/src/io/thrift/thrift_handle.hpp @@ -11,11 +11,14 @@ #pragma once +#include "io/message_conversion.hpp" #include "io/transport.hpp" namespace memgraph::io::thrift { using memgraph::io::Address; +using memgraph::io::OpaqueMessage; +using memgraph::io::OpaquePromise; class ThriftHandle { // the responses to requests that are being waited on @@ -24,16 +27,27 @@ class ThriftHandle { // messages that are sent to servers that may later receive them std::map<Address, std::vector<OpaqueMessage>> can_receive_; + // TODO(tyler) thrift clients for each outbound address combination + std::map<Address, void> clients_; + public: template <Message Request, Message Response> void SubmitRequest(Address to_address, Address from_address, uint64_t request_id, Request &&request, Duration timeout, - ResponsePromise<Response> &&promise); + ResponsePromise<Response> &&promise) { + // TODO(tyler) simular to simulator transport, add the promise to the promises_ map + + Send(to_address, from_address, request_id, request); + } template <Message... Ms> - requires(sizeof...(Ms) > 0) RequestResult<Ms...> Receive(const Address &receiver, Duration timeout); + requires(sizeof...(Ms) > 0) RequestResult<Ms...> Receive(const Address &receiver, Duration timeout) { + // TODO(tyler) block for the specified duration on the Inbox's receipt of a message of this type. + } template <Message M> - void Send(Address to_address, Address from_address, uint64_t request_id, M message); + void Send(Address to_address, Address from_address, uint64_t request_id, M message) { + // TODO(tyler) call thrift client for address (or create one if it doesn't exist yet) + } }; } // namespace memgraph::io::thrift