Skip to content

Commit 4110518

Browse files
committed
Added missing MessagePack bits
1 parent 86aabd9 commit 4110518

3 files changed

Lines changed: 25 additions & 1 deletion

File tree

Include/Asio/AsioDefines.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ enum class eArchiveType : uint8_t
9595
/*! \brief Google protocol buffer. */
9696
protobuf,
9797
/*! \brief Google flat buffers. */
98-
flatBuffer
98+
flatBuffer,
99+
/*! \brief MessagePack serialisation. */
100+
messagePack
99101
};
100102

101103
// Push single byte alignment for the MessageHeader strcuture for maximum portability.

Include/Asio/MessageUtils.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,19 @@ template <> struct ArchiveTypeToEnum<serialize::archives::out_xml_t>
267267
}
268268
};
269269

270+
/*! \brief Archive type enumerators as a specialized template class for MessagePack archives. */
271+
template <> struct ArchiveTypeToEnum<serialize::archives::out_msgpack_t>
272+
{
273+
/*!
274+
* \brief Enumerate method.
275+
* \return The enumerated type.
276+
*/
277+
static defs::eArchiveType Enumerate()
278+
{
279+
return defs::eArchiveType::messagePack;
280+
}
281+
};
282+
270283
/*!
271284
* \brief Default message builder class.
272285
*
@@ -493,6 +506,8 @@ T DeserializeMessage(defs::char_buf_cspan_t messageBuffer, defs::eArchiveType ar
493506
case defs::eArchiveType::flatBuffer:
494507
// Do nothing;
495508
break;
509+
case defs::eArchiveType::messagePack:
510+
return serialize::ToObject<T, serialize::archives::in_msgpack_t>(messageBuffer);
496511
}
497512

498513
return T();

Source/Asio/MessageUtils.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ constexpr const char ARCH_JSON[]{"json"};
232232
constexpr const char ARCH_XML[]{"xml"};
233233
constexpr const char ARCH_PROTOBUF[]{"protobuf"};
234234
constexpr const char ARCH_FLATBUFFER[]{"flatBuffer"};
235+
constexpr const char ARCH_MSGPACK[]{"messagePack"};
235236
constexpr const char ARCH_RAW[]{"raw"};
236237
constexpr const char ARCH_NULL[]{""};
237238

@@ -253,6 +254,8 @@ std::string_view ArchiveTypeToString(defs::eArchiveType archiveType)
253254
return ARCH_PROTOBUF;
254255
case defs::eArchiveType::flatBuffer:
255256
return ARCH_FLATBUFFER;
257+
case defs::eArchiveType::messagePack:
258+
return ARCH_MSGPACK;
256259
}
257260

258261
return ARCH_NULL;
@@ -289,6 +292,10 @@ defs::eArchiveType StringToArchiveType(std::string_view archiveName)
289292
else if (archiveName == ARCH_FLATBUFFER)
290293
{
291294
archiveType = defs::eArchiveType::flatBuffer;
295+
}
296+
else if (archiveName == ARCH_MSGPACK)
297+
{
298+
archiveType = defs::eArchiveType::messagePack;
292299
}
293300
else
294301
{

0 commit comments

Comments
 (0)