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 
41  optional<string> pushMessageData(vector<unsigned char> *rawMessageData, ptr<CscMessagingRequestContext> context);
42 
46  static CscMessageMetaparams extractMetaParams(string &message);
47 
48 private:
49  const CscMessageEncryption *encryption;
50  const function<void(const string &message, ptr<CscMessagingRequestContext> context)> onMessageReadComplete;
54  static void extractMetaParams(string &message, CscMessagingRequestContext *context);
55 
56  mutex messagesReconstructionStartMutex;
57  mutex messagesReconstructionMutex;
58  bool messageReconstructionEnable = false;
59  map<CscMessageId, map<string, string>> messagesChunksInReconstruction;
60  map<CscMessageId, unsigned long long> messagesLastChunkTimestampMillis;
61  map<CscMessageId, ptr<CscMessagingRequestContext>> messagesChunksContext;
62  void startMessagesReconstruction();
63  void stopMessagesReconstruction();
64  void checkAllMessageChunkedReceivedAndReconstuctInOrder();
65 
69  string onMessageFull(const string &fullMessage, ptr<CscMessagingRequestContext> context);
70 
71  bool handleTimeoutPrefix(string &messageData, ptr<CscMessagingRequestContext> context);
72  bool handleAutoClosePrefix(string &messageData, ptr<CscMessagingRequestContext> context);
73 
77  void extractMetaParams(string &message, ptr<CscMessagingRequestContext> context);
78 
79  void sanitizeMessage(string &message);
80  bool processMessageChunk(string &message, ptr<CscMessagingRequestContext> context);
81 
82  unique_ptr<CscLogger> logger;
83 };
84 }
85 
86 #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:15
conscience_core::communication::CscMessageReader::~CscMessageReader
~CscMessageReader()
Definition: CscMessageReader.cpp:20
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:151
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:24
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