Conscience Core
CscMessageReader.h
Go to the documentation of this file.
1 #ifndef CscMessageReader_H_
2 #define CscMessageReader_H_
3 
4 #include "CscCommon.h"
5 #include "CscMessageEncryption.h"
7 #include <functional>
8 #include <mutex>
9 
10 using std::mutex, std::function;
11 
13 
14 typedef string CscMessageId;
15 typedef string CscMessageChunkId;
16 
19  optional<CscMessagingPort> udpResponsePort = {};
20 };
21 
22 static const string CONSCIENCE_COMMUNICATION_TIMEOUT_PREFIX = "__CSC_COM_SET_TIMEOUT";
23 
25 public:
29  CscMessageReader(const CscMessageEncryption *encryption,
30  function<void(const string &message, ptr<CscMessagingRequestContext> context)> onMessage);
32 
40  optional<string> pushMessageData(vector<unsigned char> *rawMessageData, ptr<CscMessagingRequestContext> context);
41 
45  static CscMessageMetaparams extractMetaParams(string &message);
46 
47 private:
48  const CscMessageEncryption *encryption;
49  const function<void(const string &message, ptr<CscMessagingRequestContext> context)> onMessageReadComplete;
53  static void extractMetaParams(string &message, CscMessagingRequestContext *context);
54 
55  mutex messagesReconstructionStartMutex;
56  mutex messagesReconstructionMutex;
57  bool messageReconstructionEnable = false;
58  map<CscMessageId, map<string, string>> messagesChunksInReconstruction;
59  map<CscMessageId, unsigned long long> messagesLastChunkTimestampMillis;
60  map<CscMessageId, ptr<CscMessagingRequestContext>> messagesChunksContext;
61  void startMessagesReconstruction();
62  void stopMessagesReconstruction();
63  void checkAllMessageChunkedReceivedAndReconstuctInOrder();
64 
68  string onMessageFull(const string &fullMessage, ptr<CscMessagingRequestContext> context);
69 
70  bool handleTimeoutPrefix(string &messageData, ptr<CscMessagingRequestContext> context);
71  bool handleAutoClosePrefix(string &messageData, ptr<CscMessagingRequestContext> context);
72 
76  void extractMetaParams(string &message, ptr<CscMessagingRequestContext> context);
77 
78  void sanitizeMessage(string &message);
79  bool processMessageChunk(string &message, ptr<CscMessagingRequestContext> context);
80 
81  unique_ptr<CscLogger> logger;
82 };
83 }
84 
85 #endif
conscience_core::communication::CscMessageEncryption
Definition: CscMessageEncryption.h:8
conscience_core::communication::CscMessageReader::CscMessageReader
CscMessageReader(const CscMessageEncryption *encryption, function< void(const string &message, ptr< CscMessagingRequestContext > context)> onMessage)
Definition: CscMessageReader.cpp:14
conscience_core::communication::CscMessageReader::~CscMessageReader
~CscMessageReader()
Definition: CscMessageReader.cpp:19
conscience_core::communication::CscMessageReader
Definition: CscMessageReader.h:24
conscience_core::communication::CONSCIENCE_COMMUNICATION_TIMEOUT_PREFIX
static const string CONSCIENCE_COMMUNICATION_TIMEOUT_PREFIX
Definition: CscMessageReader.h:22
CscMessageEncryption.h
conscience_core::communication::CscMessageMetaparams::udpRemoteClientId
optional< string > udpRemoteClientId
Definition: CscMessageReader.h:18
conscience_core::communication::CscMessageChunkId
string CscMessageChunkId
Definition: CscMessageReader.h:15
CscMessagingRequestContext.h
conscience_core::communication::CscMessageMetaparams::udpResponsePort
optional< CscMessagingPort > udpResponsePort
Definition: CscMessageReader.h:19
conscience_core::communication::CscMessageMetaparams
Definition: CscMessageReader.h:17
nlohmann::detail::void
j template void())
Definition: json.hpp:4189
CscCommon.h
conscience_core::communication::CscMessageReader::extractMetaParams
static CscMessageMetaparams extractMetaParams(string &message)
Definition: CscMessageReader.cpp:124
conscience_core::communication::CscMessagingRequestContext
Definition: CscMessagingRequestContext.h:22
conscience_core::communication
Definition: CscEntityClient.h:6
conscience_core::communication::CscMessageReader::pushMessageData
optional< string > pushMessageData(vector< unsigned char > *rawMessageData, ptr< CscMessagingRequestContext > context)
Definition: CscMessageReader.cpp:23
conscience_core::communication::CscMessageId
string CscMessageId
Definition: CscMessageReader.h:14
conscience_core::bridging::commands::environment_objects::optional< string >
const ptr< CscObjectModel > const string const CscPoint3d const CscPoint3d optional< string >
Definition: environmentObjectsCommands.h:373
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29