...
This commit is contained in:
@@ -10,9 +10,9 @@
|
||||
#include <string_view>
|
||||
|
||||
|
||||
#include "mcc_utils.h"
|
||||
#include "mcc_serializer.h"
|
||||
#include "mcc_deserializer.h"
|
||||
#include "mcc_serializer.h"
|
||||
#include "mcc_utils.h"
|
||||
|
||||
namespace mcc::network
|
||||
{
|
||||
@@ -251,10 +251,8 @@ template <mcc::traits::mcc_char_range BYTEREPR_T = std::string_view,
|
||||
class MccNetMessage
|
||||
{
|
||||
protected:
|
||||
|
||||
// just a wrapper class to hold MccSerializer<T> specializations
|
||||
struct DefaultSerializer
|
||||
{
|
||||
struct DefaultSerializer {
|
||||
template <traits::mcc_output_char_range OR, typename T>
|
||||
auto operator()(OR& bytes, const T& value, mcc_serialization_params_c auto const& pars) const
|
||||
{
|
||||
@@ -403,7 +401,13 @@ public:
|
||||
template <typename T, typename DeserFuncT>
|
||||
std::expected<T, std::error_code> paramValue(size_t idx, DeserFuncT&& deser_func) const
|
||||
{
|
||||
static_assert(std::invocable<DeserFuncT, typename decltype(_params)::value_type const&, T&, impl::mcc_serialization_params_t const&>, "INVALID DESERIALIZTION FUNCTION!");
|
||||
static_assert(std::invocable<DeserFuncT, typename decltype(_params)::value_type const&, T&,
|
||||
impl::mcc_serialization_params_t const&>,
|
||||
"INVALID DESERIALIZATION FUNCTION!");
|
||||
static_assert(std::same_as<std::invoke_result_t<DeserFuncT, typename decltype(_params)::value_type const&, T&,
|
||||
impl::mcc_serialization_params_t const&>,
|
||||
std::error_code>,
|
||||
"INVALID DESERIALIZATION FUNCTION!");
|
||||
|
||||
if (idx >= _params.size()) {
|
||||
return std::unexpected{std::make_error_code(std::errc::value_too_large)};
|
||||
@@ -422,7 +426,8 @@ public:
|
||||
template <typename T>
|
||||
std::expected<T, std::error_code> paramValue(size_t idx) const
|
||||
{
|
||||
return paramValue<T>(idx, impl::MccDeserializer<T>{}); // use one of specialization of MccDeserializer templated class
|
||||
return paramValue<T>(
|
||||
idx, impl::MccDeserializer<T>{}); // use one of specialization of MccDeserializer templated class
|
||||
}
|
||||
|
||||
|
||||
@@ -562,13 +567,12 @@ protected:
|
||||
|
||||
DefaultSerializer _defaultSerializer{};
|
||||
|
||||
impl::mcc_serialization_params_t _serializationParams{.seq_delim{MCC_COMMPROTO_PARAMPARAM_DELIM_SEQ}, .elem_delim{MCC_COMMPROTO_RANGEPARAM_DELIM_SEQ}};
|
||||
impl::mcc_serialization_params_t _serializationParams{.seq_delim{MCC_COMMPROTO_PARAMPARAM_DELIM_SEQ},
|
||||
.elem_delim{MCC_COMMPROTO_RANGEPARAM_DELIM_SEQ}};
|
||||
|
||||
template <typename SerFuncT, typename T, typename... Ts>
|
||||
void convertFunc(SerFuncT&& ser_func, std::vector<size_t>& idx, const T& par, const Ts&... pars)
|
||||
requires(!std::same_as<std::remove_cvref_t<SerFuncT>, std::vector<size_t>>)
|
||||
{
|
||||
|
||||
if constexpr (std::same_as<T, MccSerializedCoordPairFormat>) {
|
||||
_serializationParams.coordpair_format = par;
|
||||
} else if constexpr (std::same_as<T, MccSerializedAngleFormatPrec>) {
|
||||
@@ -576,8 +580,6 @@ protected:
|
||||
} else {
|
||||
idx.emplace_back(std::distance(_msgBuffer.begin(), _msgBuffer.end()));
|
||||
|
||||
// convertFunc(std::forward<SerFuncT>(ser_func), idx, par);
|
||||
|
||||
std::forward<SerFuncT>(ser_func)(_msgBuffer, par, _serializationParams);
|
||||
|
||||
idx.emplace_back(std::distance(_msgBuffer.begin(), _msgBuffer.end()));
|
||||
|
||||
Reference in New Issue
Block a user