diff options
Diffstat (limited to 'libcmix-common/senderreceiver.hpp')
| -rw-r--r-- | libcmix-common/senderreceiver.hpp | 80 |
1 files changed, 29 insertions, 51 deletions
diff --git a/libcmix-common/senderreceiver.hpp b/libcmix-common/senderreceiver.hpp index 6654809..3514c7e 100644 --- a/libcmix-common/senderreceiver.hpp +++ b/libcmix-common/senderreceiver.hpp @@ -9,76 +9,54 @@ /*! * \file */ - + /*! - * \brief The SenderReciever struct is a shim around ProtobufClient and only exposes things needed - * for Sending and Receiving messages. + * \brief BaseSenderReceiver */ -struct SenderReceiver : private ProtobufClient<CMixProtoFunctor> -{ - /*! +template<template <typename T1> class C> +struct BaseSenderReceiver : private C<CMixProtoFunctor> { +/*! * \brief SenderReceiver Explicit conversion to SenderReceiver * \param r The Receiver to upgrade */ - explicit SenderReceiver(Receiver&& r) - : ProtobufClient(std::move(r)) + explicit BaseSenderReceiver(BaseReceiver<C, BaseSenderReceiver<C>>&& r) + : C<CMixProtoFunctor>(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<CMixProtoFunctor> -{ - /*! - * \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)) + explicit BaseSenderReceiver(BaseSender<C, BaseSenderReceiver<C>> && s) + : C<CMixProtoFunctor>(std::move(s)) {} - using SSLProtobufClient::SSLProtobufClient; - using SSLProtobufClient::operator=; - using SSLProtobufClient::async_receive; + using C<CMixProtoFunctor>::C; + using C<CMixProtoFunctor>::operator=; + + using C<CMixProtoFunctor>::async_receive; - using SSLProtobufClient::async_send; + using C<CMixProtoFunctor>::async_send; - using SSLProtobufClient::async_connect; + using C<CMixProtoFunctor>::async_connect; - using SSLProtobufClient::close; + using C<CMixProtoFunctor>::close; - using SSLProtobufClient::on_done; + using C<CMixProtoFunctor>::on_done; - using SSLProtobufClient::is_open; + using C<CMixProtoFunctor>::is_open; }; +/*! + * \brief Conveniance typedef for SenderReceiver + */ +using SenderReceiver = BaseSenderReceiver<ProtobufClient>; + +/*! + * \brief Conveniance typedef for SSLSenderReceiver + */ + +using SSLSenderReceiver = BaseSenderReceiver<SSLProtobufClient>; + |
