Conscience Core
CscMessageSender.h
Go to the documentation of this file.
1 #ifndef CscMessageSender_H_
2 #define CscMessageSender_H_
3 
4 #include "CscCommon.h"
5 #include "CscMessageEncryption.h"
7 #include "TcpClient.h"
8 #include <mutex>
9 
10 using std::mutex, std::function;;
11 
13 
14  typedef string CscMessageId;
15  typedef string CscMessageChunkId;
16 
17  class CannotSendMessageException : public exception {
18  public:
19  CannotSendMessageException(const string &errorMessage) noexcept : errorMessage(errorMessage) {}
20  ~CannotSendMessageException() noexcept override = default;
21  const char *what() const noexcept override {
22  return errorMessage.c_str();
23  }
24  private:
25  const string errorMessage;
26  };
27 
29  public:
33  CscMessageSender(const CscMessageEncryption *encryption, const CscMessagingPort udpResponsePort);
35  }
36 
40  void sendAndDownloadResponseBytes(vector<unsigned char> *data, fs::path downloadResponseToPath, ptr<CscMessagingRequestContext> context, optional<function<void(float progress)>> onDownloadProgress = {});
44  optional<vector<unsigned char>*> send(vector<unsigned char> *data, ptr<CscMessagingRequestContext> context);
48  optional<vector<unsigned char>*> send(vector<unsigned char> *data, const string ip, CscMessagingPort port, CscMessagingProtocol protocol);
52  optional<vector<unsigned char>*> sendTcp(vector<unsigned char> *data, const string ip, const int port);
56  optional<vector<unsigned char>*> sendTcpWithClient(TcpClient *tcpClient, vector<unsigned char> *data, bool noResponseExpected, bool closeClient);
57 
58  optional<vector<unsigned char>*> sendMessage(const string &message, ptr<CscMessagingRequestContext> context);
59  optional<vector<unsigned char>*> sendMessage(const string &message, const string ip, CscMessagingPort port, CscMessagingProtocol protocol);
60 
61  optional<vector<unsigned char>*> sendUdp(const string &message, const string ip, CscMessagingPort port) const;
65  optional<vector<unsigned char>*> sendUdp(vector<unsigned char> *data, const string ip, CscMessagingPort port) const;
66  optional<vector<unsigned char>*> sendTcpWithClient(TcpClient *tcpClient, const string &message, bool noResponseExpected, bool closeClient);
67 
68  private:
69  const CscMessageEncryption *encryption;
70 
71  inline static unsigned long long chunkedMessageCounter = 0;
72  string requestIdPrefix;
73  inline static mutex chunkedMessageCounterMutex;
74  const CscMessagingPort udpResponsePort;
75 
76  unique_ptr<CscLogger> logger;
77  };
78 }
79 
80 #endif
conscience_core::communication::CscMessageSender::~CscMessageSender
~CscMessageSender()
Definition: CscMessageSender.h:34
conscience_core::communication::CscMessageSender::sendAndDownloadResponseBytes
void sendAndDownloadResponseBytes(vector< unsigned char > *data, fs::path downloadResponseToPath, ptr< CscMessagingRequestContext > context, optional< function< void(float progress)>> onDownloadProgress={})
Definition: CscMessageSender.cpp:34
conscience_core::communication::CscMessageSender::send
optional< vector< unsigned char > * > send(vector< unsigned char > *data, ptr< CscMessagingRequestContext > context)
conscience_core::communication::CannotSendMessageException::~CannotSendMessageException
~CannotSendMessageException() noexcept override=default
conscience_core::communication::CscMessageEncryption
Definition: CscMessageEncryption.h:8
conscience_core::communication::CscMessageSender::sendUdp
optional< vector< unsigned char > * > sendUdp(const string &message, const string ip, CscMessagingPort port) const
conscience_core::communication::CannotSendMessageException::what
const char * what() const noexcept override
Definition: CscMessageSender.h:21
CscMessageEncryption.h
conscience_core::communication::CscMessageSender
Definition: CscMessageSender.h:28
TcpClient.h
conscience_core::communication::CscMessageChunkId
string CscMessageChunkId
Definition: CscMessageReader.h:15
CscMessagingRequestContext.h
conscience_core::communication::CannotSendMessageException
Definition: CscMessageSender.h:17
conscience_core::communication::CscMessageSender::sendMessage
optional< vector< unsigned char > * > sendMessage(const string &message, ptr< CscMessagingRequestContext > context)
CscCommon.h
conscience_core::communication::CscMessageSender::sendTcp
optional< vector< unsigned char > * > sendTcp(vector< unsigned char > *data, const string ip, const int port)
conscience_core::communication::CscMessagingProtocol
CscMessagingProtocol
Definition: CscMessagingRequestContext.h:17
conscience_core::communication
Definition: CscEntityClient.h:6
conscience_core::communication::CscMessageSender::sendTcpWithClient
optional< vector< unsigned char > * > sendTcpWithClient(TcpClient *tcpClient, vector< unsigned char > *data, bool noResponseExpected, bool closeClient)
conscience_core::communication::CscMessageSender::CscMessageSender
CscMessageSender(const CscMessageEncryption *encryption, const CscMessagingPort udpResponsePort)
Definition: CscMessageSender.cpp:21
conscience_core::communication::CscMessagingPort
unsigned int CscMessagingPort
Definition: CscMessagingRequestContext.h:15
conscience_core::communication::CscMessageId
string CscMessageId
Definition: CscMessageReader.h:14
ptr
std::shared_ptr< T > ptr
Definition: CscCommon.h:29
conscience_core::communication::CannotSendMessageException::CannotSendMessageException
CannotSendMessageException(const string &errorMessage) noexcept
Definition: CscMessageSender.h:19