libMVRgdtf 40bc00a
A library for GDTF and MVR
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
mvrxchange_message.h
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2//----- Copyright MVR Group
3//-----------------------------------------------------------------------------
4#pragma once
5
6#include "mvrxchange_prefix.h"
8#include "json.h"
9
10namespace MVRxchangeNetwork
11{
13 {
14 private:
15 enum { header_flag = sizeof(uint32_t) };
16 enum { header_version = sizeof(uint32_t) };
17 enum { header_number = sizeof(uint32_t) };
18 enum { header_count = sizeof(uint32_t) };
19 enum { header_type = sizeof(uint32_t) };
20 enum { header_payload_length = sizeof(uint64_t) };
21 public:
22 enum { total_header_length = header_flag + header_version + header_number + header_count + header_type + header_payload_length };
23
24 public:
27 MVRxchangePacket(const MVRxchangePacket* ref ) = delete;
29
30 const char* GetData() const;
31 char* GetData();
32 size_t GetLength() const;
33 const char* GetBody() const;
34 char* GetBody();
35 size_t GetBodyLength() const;
36 void SetBody(size_t length, char* buffer);
37 bool DecodeHeader();
38 void EncodeHeader();
39
40
41 void FromExternalMessage(const VectorworksMVR::IMVRxchangeService::IMVRxchangeMessage&);
42 void ToExternalMessage(VectorworksMVR::IMVRxchangeService::IMVRxchangeMessage&);
43#ifdef IS_UNITTEST
44 void FromString(const std::string& in);
45 std::string ToString();
46#endif
47
48 private:
49 void Internal_ToExternalMessage(const nlohmann::json& payload, VectorworksMVR::IMVRxchangeService::IMVRxchangeMessage &in);
50
51
52 uint32_t fFlag;
53 uint32_t fVersion;
54 uint32_t fNumber;
55 uint32_t fCount;
56 uint32_t fType;
57 uint64_t fBodyLength;
58
59 std::shared_ptr<MVRxchangeNetwork::MVRxchangeDynamicBuffer> fData;
60 };
61
62 using MVRxchangePacketDeque = std::deque<MVRxchangePacket>;
63}
Definition mvrxchange_message.h:13
void ToExternalMessage(VectorworksMVR::IMVRxchangeService::IMVRxchangeMessage &)
Definition mvrxchange_message.cpp:430
MVRxchangePacket(const MVRxchangePacket *ref)=delete
@ total_header_length
Definition mvrxchange_message.h:22
void FromExternalMessage(const VectorworksMVR::IMVRxchangeService::IMVRxchangeMessage &)
Definition mvrxchange_message.cpp:192
const char * GetBody() const
Definition mvrxchange_message.cpp:72
void SetBody(size_t length, char *buffer)
Definition mvrxchange_message.cpp:87
size_t GetBodyLength() const
Definition mvrxchange_message.cpp:82
MVRxchangePacket()
Definition mvrxchange_message.cpp:30
void EncodeHeader()
Definition mvrxchange_message.cpp:121
const char * GetData() const
Definition mvrxchange_message.cpp:57
size_t GetLength() const
Definition mvrxchange_message.cpp:67
~MVRxchangePacket()
Definition mvrxchange_message.cpp:53
bool DecodeHeader()
Definition mvrxchange_message.cpp:94
a class to store JSON values
Definition json.h:16658
Definition mvrxchange_client.h:11
std::deque< MVRxchangePacket > MVRxchangePacketDeque
Definition mvrxchange_message.h:62