This commit is contained in:
Timur A. Fatkhullin 2024-06-06 18:09:32 +03:00
parent e99e422701
commit a1b60bcac9
2 changed files with 50 additions and 5 deletions

View File

@ -68,6 +68,12 @@ public:
bool empty() const { return std::ranges::distance(_bytes.begin(), _bytes.end()) == 0; } bool empty() const { return std::ranges::distance(_bytes.begin(), _bytes.end()) == 0; }
size_t byteSize() const
{
//
return std::ranges::distance(_bytes.begin(), _bytes.end());
}
// get a copy of message bytes // get a copy of message bytes
template <traits::adc_output_char_range R> template <traits::adc_output_char_range R>
R bytes() const R bytes() const
@ -138,6 +144,17 @@ public:
return emp; return emp;
} }
size_t byteSize() const
{
size_t sz = 0;
for (const auto& el : _bytes | std::views::drop(_reservedNum)) {
sz += std::ranges::distance(el.begin(), el.end());
}
return sz;
}
// get a copy of message bytes // get a copy of message bytes
template <traits::adc_output_char_range R> template <traits::adc_output_char_range R>
R bytes() const R bytes() const
@ -455,6 +472,12 @@ public:
virtual ~AdcKeyTokenNetMessage() = default; virtual ~AdcKeyTokenNetMessage() = default;
size_t byteSize() const
{
size_t sz = base_t::template byteSize();
return sz + std::distance(this->_bytesbyte[0].begin(), this->_bytes[0].end());
}
// get a copy of message bytes // get a copy of message bytes
template <traits::adc_output_char_range R> template <traits::adc_output_char_range R>
R bytes() const R bytes() const

View File

@ -7,26 +7,43 @@ ABSTRACT DEVICE COMPONENTS LIBRARY
*/ */
#include <utility>
namespace adc namespace adc
{ {
template <typename NetMessageT, typename IOImplT> template <typename IOImplT, typename NetMessageT>
class AdcNetService : public IOImplT class AdcNetServiceInterface : public IOImplT
{ {
protected:
AdcNetServiceInterface::socket _socket;
template <typename... IOImplCtorArgTs>
AdcNetServiceInterface(AdcNetServiceInterface::socket&& sock, IOImplCtorArgTs&&... args)
: IOImplT(std::forward<IOImplCtorArgTs>(args)...), _socket(sock)
{
}
public: public:
using typename IOImplT::endpoint;
using typename IOImplT::socket;
virtual ~AdcNetServiceInterface() = default;
/* asynchronuos operations */ /* asynchronuos operations */
// open connection // open connection
template <typename... ArgTs> template <typename... ArgTs>
auto asyncConnect(ArgTs&&... args) auto asyncConnect(AdcNetServiceInterface::endpoint&& end_point, ArgTs&&... args)
{ {
return IOImplT::asyncConnect(end_point);
} }
template <typename... ArgTs> template <typename... ArgTs>
auto asyncSend(NetMessageT&& msg, ArgTs&&... args) auto asyncSend(const NetMessageT& msg, ArgTs&&... args)
{ {
} }
@ -40,7 +57,12 @@ public:
/* blocking operations */ /* blocking operations */
template <typename... ArgTs> template <typename... ArgTs>
auto send(NetMessageT&& msg, ArgTs&&... args) auto connect(const AdcNetServiceInterface::endpoint& end_point, ArgTs&&... args)
{
}
template <typename... ArgTs>
auto send(const NetMessageT& msg, ArgTs&&... args)
{ {
} }