Conscience Core
CscMessagingManager.h
Go to the documentation of this file.
1 #ifndef CscMessagingManager_H_
2 #define CscMessagingManager_H_
3 
4 #include "CscCommon.h"
5 
11 
12 #include "TcpServer.h"
13 #include "UdpServer.h"
14 #include "TcpClient.h"
15 #include <algorithm>
16 #include <mutex>
17 
18 #define MAXLINE 4096
19 #define CONSCIENCE_ERROR_MESSAGE "__CSC_COM_ERROR"
20 
21 using namespace conscience_utils::logging;
22 
23 using std::remove, std::mutex, std::recursive_mutex, std::thread;
24 
26 
28  public:
33  CscMessagingManager(CscMessagingPort tcpPort, CscMessagingPort udpPort, const CscMessageEncryption *messageEncryption, CscMessageHandler *messageHandler);
34 
36 
37  optional<string> sendTcp(const string &message, const string &ip, CscMessagingPort port);
38  void sendUdp(const string &message, const string &ip, CscMessagingPort port);
39  void sendMessage(const string &message, ptr<CscMessagingRequestContext> context, CscMessageSender *sender = nullptr);
40  void sendMessageAndDownloadResponseBytes(const string &message, ptr<CscMessagingRequestContext> context, fs::path outPath, optional<function<void(float progress)>> onDownloadProgress = {}, CscMessageSender *sender = nullptr);
41 
42  ptr<CscMessagingRequestContext> sendMessage(const string &message, const string &ip, CscMessagingPort port, CscMessagingProtocol protocol, CscMessageSender *sender = nullptr);
43 
44  const string &getUid() const;
45  optional<CscMessagingPort> getUdpServerPort();
46 
50  CscMessageSender *getSender();
51  private:
52  const string uid;
53 
54  const CscMessageLowLevelHandler *lowLevelHandler = nullptr;
55  CscMessageSender *unencryptedSender = nullptr;
56 
57  const CscMessageEncryption *messageEncryption = nullptr;
58  CscMessageReader *messageReader = nullptr;
59  CscMessageSender *messageSender = nullptr;
60  void initForEncryption(const CscMessageEncryption *messageEncryption);
61 
62  CscMessageHandler *messageHandler = nullptr;
63 
64  TcpServer *tcpServer = nullptr;
65  UdpServer *udpServer = nullptr;
66  CscMessagingPort udpPort;
67 
68  bool started = true;
69  ptr<bool> destroyed = newptr<bool>(false);
70 
71  void startUdpServer(CscMessagingPort udpPort);
72  void startTcpServer(CscMessagingPort tcpPort);
73 
77  bool onMessageDataReceived(vector<unsigned char> *messageData, ptr<CscMessagingRequestContext> context);
78  void onMessageFullyReceived(const string &receivedMessage, ptr<CscMessagingRequestContext> context);
79 
80  void processIncomingMessage(const string message, ptr<CscMessagingRequestContext> context);
81 
82  ptr<CscMessagingRequestContext> sendMessageBytes(vector<unsigned char> *data, const string &ip, CscMessagingPort port, CscMessagingProtocol protocol, optional<fs::path> downloadResponseToPath = {}, optional<function<void(float progress)>> onDownloadProgress = {}, CscMessageSender *sender = nullptr);
83  void sendMessageBytes(vector<unsigned char> *data, ptr<CscMessagingRequestContext> context, optional<fs::path> downloadResponseToPath = {}, optional<function<void(float progress)>> onDownloadProgress = {}, CscMessageSender *sender = nullptr);
84  void sendBack(CscMessageHandlerResult response, ptr<CscMessagingRequestContext> context);
85 
86 
87  unique_ptr<CscLogger> logger;
88  };
89 }
90 
91 #endif
conscience_core::communication::CscMessageLowLevelHandler
Definition: CscMessageLowLevelHandler.h:9
conscience_core::communication::CscMessageEncryption
Definition: CscMessageEncryption.h:8
conscience_core::communication::TcpServer
Definition: TcpServer.h:21
TcpServer.h
CscMessageHandler.h
UdpServer.h
conscience_core::communication::CscMessageReader
Definition: CscMessageReader.h:24
CscMessageEncryption.h
conscience_core::communication::CscMessageSender
Definition: CscMessageSender.h:28
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
TcpClient.h
CscMessageLowLevelHandler.h
conscience_utils::logging
Definition: conscience_log.cpp:20
CscMessageReader.h
conscience_core::communication::CscMessageHandlerResult
Definition: CscMessageHandler.h:9
nlohmann::detail::void
j template void())
Definition: json.hpp:4189
conscience_core::communication::UdpServer
Definition: UdpServer.h:27
CscCommon.h
conscience_core::communication::CscMessagingProtocol
CscMessagingProtocol
Definition: CscMessagingRequestContext.h:17
conscience_core::communication
Definition: CscEntityClient.h:6
conscience_core::communication::CscMessageHandler
Definition: CscMessageHandler.h:32
CscMessageSender.h
conscience_core::communication::CscMessagingPort
unsigned int CscMessagingPort
Definition: CscMessagingRequestContext.h:15
conscience_core::communication::CscMessagingManager
Definition: CscMessagingManager.h:27
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