#pragma once #include "cmixprotofunctor.hpp" #include "receiver.hpp" #include "sender.hpp" #include "protobufclient.hpp" /*! * \file */ /*! * \brief The SenderReciever struct is a shim around ProtobufClient and only exposes things needed * for Sending and Receiving messages. */ struct SenderReceiver : private ProtobufClient { /*! * \brief SenderReceiver Explicit conversion to SenderReceiver * \param r The Receiver to upgrade */ explicit SenderReceiver(Receiver&& r) : ProtobufClient(std::move(r)) {} /*! * \brief SenderReceiver Explicit conversion to SenderReceiver * \param s The Sender to upgrade */ explicit SenderReceiver(Sender&& s) : ProtobufClient(std::move(s)) {} using ProtobufClient::ProtobufClient; using ProtobufClient::operator=; using ProtobufClient::async_receive; using ProtobufClient::async_send; using ProtobufClient::async_connect; using ProtobufClient::close; using ProtobufClient::on_done; using ProtobufClient::is_open; }; struct SSLSenderReceiver : private SSLProtobufClient { /*! * \brief SenderReceiver Explicit conversion to SenderReceiver * \param r The Receiver to upgrade */ explicit SSLSenderReceiver(SSLReceiver&& r) : SSLProtobufClient(std::move(r)) {} /*! * \brief SenderReceiver Explicit conversion to SenderReceiver * \param s The Sender to upgrade */ explicit SSLSenderReceiver(SSLSender&& s) : SSLProtobufClient(std::move(s)) {} using SSLProtobufClient::SSLProtobufClient; using SSLProtobufClient::operator=; using SSLProtobufClient::async_receive; using SSLProtobufClient::async_send; using SSLProtobufClient::async_connect; using SSLProtobufClient::close; using SSLProtobufClient::on_done; using SSLProtobufClient::is_open; };