#include <cstdint>
#include <vector>
Go to the source code of this file.
HiveMindBridge(int tcpPort, ILogger &logger, uint32_t keepAliveNbSpin=0)
Definition: HiveMindBridge.cpp:3
constexpr int DELAY_BRFORE_DROP_S
Definition: HiveMindBridgeImpl.h:26
OutboundRequestHandle(MessageDTO message)
Definition: OutboundRequestHandle.cpp:3
GenericResponseStatusDTO m_responseStatus
Definition: InboundResponseHandle.h:33
uint32_t m_swarmAgentID
Definition: HiveMindBridgeImpl.h:105
ILogger & m_logger
Definition: HiveMindHostApiResponseHandler.h:26
void setCallbackName(std::string name)
Definition: InboundRequestHandle.cpp:16
std::variant< std::monostate, InboundRequestHandle, InboundResponseHandle > handleMessage(MessageDTO message) override
Definition: MessageHandler.cpp:14
CallbackArgsManifest getManifest()
Definition: UserCallbackFunctionWrapper.cpp:9
std::vector< UserCallbackArgumentDescription > CallbackArgsManifest
Definition: Callback.h:11
bool onNeighborUpdated(std::function< void(uint16_t neighborId, std::optional< Position > position)> callback)
Definition: HiveMindHostApiResponseHandler.cpp:28
MessageDTO createGreetMessage()
Definition: MessageUtils.cpp:100
IMessageHandler & m_messageHandler
Definition: HiveMindBridgeImpl.h:94
std::string getName()
Definition: UserCallbackArgumentDescription.cpp:9
void onDisconnect(std::function< void()> hook)
Definition: HiveMindBridge.cpp:28
std::thread m_inboundThread
Definition: HiveMindBridgeImpl.h:97
std::optional< MessageDTO > createBytesMessage(uint32_t msgSourceId, uint32_t msgDestinationId, uint32_t requestId, uint32_t byteReqId, uint32_t packetNumber, bool lastPacket, uint8_t *payload, uint16_t payloadLength)
Definition: MessageUtils.cpp:82
int m_delaySinceSent
Definition: OutboundRequestHandle.h:30
bool onBytesReceived(std::function< void(uint8_t *bytes, uint64_t bytesLength)> callback)
Definition: HiveMindBridgeImpl.cpp:115
constexpr int THREAD_SLEEP_MS
Definition: HiveMindBridgeImpl.h:25
uint32_t m_msgSourceId
Definition: InboundRequestHandle.h:44
std::thread m_outboundThread
Definition: HiveMindBridgeImpl.h:99
virtual bool isClientConnected()=0
std::optional< CallbackArgsManifest > getManifestAt(uint32_t index) override
Definition: UserCallbackMap.cpp:34
OutboundRequestState m_state
Definition: OutboundRequestHandle.h:28
FunctionDescriptionArgumentTypeDTO m_type
Definition: UserCallbackArgumentDescription.h:19
uint32_t m_lastPacketNumber
Definition: BytesAccumulator.h:34
MessageDTO m_responseMessage
Definition: InboundRequestHandle.h:41
Definition: BytesAccumulator.h:10
Definition: IUserCallbackMap.h:6
uint32_t m_msgDestinationId
Definition: InboundRequestHandle.h:45
bool registerCallback(std::string name, CallbackFunction callback, CallbackArgsManifest manifest) override
Definition: UserCallbackMap.cpp:3
struct sockaddr_in m_address
Definition: TCPServer.h:73
virtual bool registerCallback(std::string name, CallbackFunction callback, CallbackArgsManifest manifest)=0
HiveMindHostApiResponseHandler(ILogger &logger)
Definition: HiveMindHostApiResponseHandler.cpp:3
bool queueAndSend(MessageDTO message)
Definition: HiveMindBridge.cpp:54
std::function< void(uint16_t neighborId, std::optional< Position > position)> m_neighborUpdateCallback
Definition: HiveMindHostApiResponseHandler.h:31
bool onBytesReceived(std::function< void(uint8_t *bytes, uint64_t bytesLength)> callback) override
Definition: HiveMindBridge.cpp:30
bool send(const uint8_t *data, uint16_t length) override
Definition: TCPServer.cpp:73
HiveMindHostApiRequestHandler(ILogger &logger)
Definition: HiveMindHostApiRequestHandler.cpp:3
MessageDTO getResponse()
Definition: InboundRequestHandle.cpp:10
const MessageDTO & getMessage() const
Definition: OutboundRequestHandle.cpp:9
GenericResponseStatusDTO getResponseStatus() const
Definition: InboundResponseHandle.cpp:13
bool sendNeighborListUpdateRequest()
Definition: HiveMindBridgeImpl.cpp:296
std::variant< std::monostate, InboundRequestHandle, InboundResponseHandle > handleMessage(const MessageDTO &message, const UserCallRequestDTO &ucRequest)
Definition: UserCallRequestHandler.cpp:7
std::string m_name
Definition: UserCallbackArgumentDescription.h:18
bool appendBytes(uint8_t *bytes, uint16_t length, uint32_t packetNumber)
Definition: BytesAccumulator.cpp:4
void init()
Definition: TCPServer.cpp:14
OutboundRequestState
Definition: OutboundRequestHandle.h:6
std::optional< uint32_t > handleGreet(MessageDTO greetMessage) override
Definition: MessageHandler.cpp:79
OutboundRequestState getState() const
Definition: OutboundRequestHandle.cpp:5
void onConnect(std::function< void()> hook) override
Definition: TCPServer.cpp:86
std::function< void()> m_onDisonnect
Definition: TCPServer.h:76
std::function< std::optional< CallbackReturn >CallbackArgs)> CallbackFunction
Definition: Callback.h:31
std::optional< CallbackFunction > getCallback(const std::string &name) override
Definition: UserCallbackMap.cpp:23
void close() override
Definition: TCPServer.cpp:77
ILogger & m_logger
Definition: HiveMindHostApiRequestHandler.h:21
ILogger & m_logger
Definition: UserCallRequestHandler.h:21
void setStatusDetails(const std::string &mStatusDetails)
Definition: InboundResponseHandle.cpp:23
InboundResponseHandle()=default
uint32_t m_responseId
Definition: InboundResponseHandle.h:31
void setResponseId(uint32_t mResponseId)
Definition: InboundResponseHandle.cpp:11
bool sendNeighborUpdateRequest(uint16_t neighborId)
Definition: HiveMindBridge.cpp:62
IThreadSafeQueue< MessageDTO > & m_inboundQueue
Definition: HiveMindBridgeImpl.h:96
UserCallbackFunctionWrapper()=default
uint32_t generateRandomId()
Definition: MessageUtils.cpp:102
bool onNeighborListUpdated(std::function< void(std::array< uint16_t, NEIGHBORS_MAX_SIZE >, uint64_t bytesLength)> callback)
Definition: HiveMindBridge.cpp:34
int m_addressLength
Definition: TCPServer.h:72
bool onNeighborUpdated(std::function< void(uint16_t neighborId, std::optional< Position > position)> callback)
Definition: HiveMindBridge.cpp:39
bool queueAndSend(MessageDTO message)
Definition: HiveMindBridgeImpl.cpp:130
bool inLOS
Definition: IHiveMindHostApiResponseHandler.h:10
MessageDTO createResponseMessage(uint32_t responseId, uint32_t msgSourceId, uint32_t msgDestinationId, UserCallTargetDTO moduleDestination, GenericResponseStatusDTO status, const std::string &ackMessage)
Definition: MessageUtils.cpp:3
Definition: ITCPServer.h:7
FunctionListLengthResponseDTO handleFunctionListLengthRequest(MessageDTO message, FunctionListLengthRequestDTO fcRequest)
Definition: UserCallRequestHandler.cpp:50
std::vector< std::string > m_callbackNames
Definition: UserCallbackMap.h:26
std::vector< uint8_t > * getBytes()
Definition: BytesAccumulator.cpp:19
Definition: UserCallbackFunctionWrapper.h:11
Definition: IHiveMindHostApiResponseHandler.h:15
void setResponseStatus(GenericResponseStatusDTO mResponseStatus)
Definition: InboundResponseHandle.cpp:17
void outboundThread()
Definition: HiveMindBridgeImpl.cpp:188
virtual uint32_t getLength()=0
const uint32_t m_keepAliveNbSpin
Definition: HiveMindBridgeImpl.h:106
bool receive(uint8_t *data, uint16_t length) override
Definition: TCPServer.cpp:58
std::shared_future< std::optional< CallbackReturn > > getCallbackReturnContext()
Definition: InboundRequestHandle.cpp:12
MessageDTO m_message
Definition: OutboundRequestHandle.h:29
void setMessage(const MessageDTO &mMessage)
Definition: OutboundRequestHandle.cpp:11
IHiveMindHostDeserializer & m_deserializer
Definition: HiveMindBridgeImpl.h:88
virtual void push(const T &item)=0
bool sendBytes(uint32_t destinationId, const uint8_t *const payload, uint16_t payloadSize)
Definition: HiveMindBridgeImpl.cpp:140
void handleNeighbor(const MessageDTO &message, const GetNeighborResponseDTO &neighbor)
Definition: HiveMindHostApiResponseHandler.cpp:50
Definition: OutboundRequestHandle.h:8
virtual std::optional< CallbackArgsManifest > getManifestAt(uint32_t index)=0
float azimuth
Definition: IHiveMindHostApiResponseHandler.h:9
Definition: InboundRequestHandle.h:13
IUserCallRequestHandler & m_userCallRequestHandler
Definition: MessageHandler.h:30
FunctionDescriptionResponseDTO handleFunctionDescriptionRequest(MessageDTO message, FunctionDescriptionRequestDTO fcRequest)
Definition: UserCallRequestHandler.cpp:58
uint32_t getResponseId() const
Definition: InboundResponseHandle.cpp:9
void listen()
Definition: TCPServer.cpp:39
int m_port
Definition: TCPServer.h:71
FunctionDescriptionArgumentTypeDTO getType()
Definition: UserCallbackArgumentDescription.cpp:11
std::vector< FunctionCallArgumentDTO > CallbackArgs
Definition: Callback.h:9
TCPServer(int port, ILogger &logger)
Definition: TCPServer.cpp:3
bool sendNeighborUpdateRequest(uint16_t neighborId)
Definition: HiveMindBridgeImpl.cpp:287
std::unordered_map< uint32_t, InboundResponseHandle > m_inboundResponsesMap
Definition: HiveMindBridgeImpl.h:103
~TCPServer()
Definition: TCPServer.cpp:9
FunctionCallResponseDTO handleFunctionCallRequest(MessageDTO message, FunctionCallRequestDTO fcRequest, InboundRequestHandle *result)
Definition: UserCallRequestHandler.cpp:82
uint32_t getSwarmAgentId() const
Definition: HiveMindBridgeImpl.cpp:175
bool registerCustomAction(std::string name, CallbackFunction callback, CallbackArgsManifest manifest)
Definition: HiveMindBridgeImpl.cpp:119
virtual std::variant< std::monostate, InboundRequestHandle, InboundResponseHandle > handleMessage(const MessageDTO &message, const UserCallRequestDTO &ucRequest)=0
bool registerCustomAction(std::string name, CallbackFunction callback, CallbackArgsManifest manifest)
Definition: HiveMindBridge.cpp:44
Definition: InboundResponseHandle.h:10
void setSourceModule(UserCallTargetDTO target)
Definition: InboundRequestHandle.cpp:22
std::mutex m_mutex
Definition: HiveMindBridgeImpl.h:100
MessageDTO createFunctionListLengthResponseMessage(uint32_t responseId, uint32_t msgSourceId, uint32_t msgDestinationId, UserCallTargetDTO moduleDestination, uint32_t length)
Definition: MessageUtils.cpp:18
std::deque< InboundRequestHandle > m_inboundRequestsQueue
Definition: HiveMindBridgeImpl.h:102
std::vector< uint8_t > m_bytes
Definition: BytesAccumulator.h:33
IUserCallbackMap & m_userCallbackMap
Definition: HiveMindBridgeImpl.h:93
bool isTCPClientConnected()
Definition: HiveMindBridgeImpl.cpp:235
void setMessageDestinationId(uint32_t id)
Definition: InboundRequestHandle.cpp:20
virtual void onDisconnect(std::function< void()> hook)=0
int m_clientFd
Definition: TCPServer.h:71
bool onNeighborListUpdated(std::function< void(std::array< uint16_t, NEIGHBORS_MAX_SIZE >, uint64_t bytesLength)> callback)
Definition: HiveMindHostApiResponseHandler.cpp:19
std::shared_future< std::optional< CallbackReturn > > m_callbackReturnContext
Definition: InboundRequestHandle.h:42
float distance
Definition: IHiveMindHostApiResponseHandler.h:8
std::function< void()> m_onConnect
Definition: TCPServer.h:75
bool greet()
Definition: HiveMindBridgeImpl.cpp:268
IHiveMindHostRequestHandler & m_hmRequestHandler
Definition: MessageHandler.h:28
ILogger & m_logger
Definition: HiveMindBridgeImpl.h:85
UserCallTargetDTO m_sourceModule
Definition: InboundRequestHandle.h:46
ITCPServer & m_tcpServer
Definition: HiveMindBridgeImpl.h:87
bool onBytesReceived(std::function< void(uint8_t *bytes, uint64_t bytesLength)> callback) override
Definition: HiveMindHostApiRequestHandler.cpp:15
void onConnect(std::function< void()> hook)
Definition: HiveMindBridge.cpp:26
Definition: IHiveMindHostApiRequestHandler.h:8
void setMessageSourceId(uint32_t id)
Definition: InboundRequestHandle.cpp:18
std::string m_callbackName
Definition: InboundRequestHandle.h:40
CallbackFunction m_function
Definition: UserCallbackFunctionWrapper.h:22
uint32_t getLength() override
Definition: UserCallbackMap.cpp:32
IHiveMindHostRequestHandler & m_hmRequestHandler
Definition: HiveMindBridgeImpl.h:91
UserCallbackArgumentDescription()=default
void handleBytes(const MessageDTO &message, const BytesDTO &bytes)
Definition: HiveMindHostApiRequestHandler.cpp:27
void handleMessage(const MessageDTO &message, const HiveMindHostApiRequestDTO &hmRequest) override
Definition: HiveMindHostApiRequestHandler.cpp:5
uint32_t getLastPacketNumber() const
Definition: BytesAccumulator.cpp:21
bool isClientConnected() override
Definition: TCPServer.cpp:84
ILogger & m_logger
Definition: MessageHandler.h:27
void spin()
Definition: HiveMindBridgeImpl.cpp:40
uint32_t m_keepAliveCounter
Definition: HiveMindBridgeImpl.h:107
CallbackMap m_callbacks
Definition: UserCallbackMap.h:25
uint32_t getMessageSourceId() const
Definition: InboundRequestHandle.cpp:24
HiveMindBridgeImpl m_bridge
Definition: HiveMindBridge.h:73
std::optional< std::string > getNameAt(uint32_t index) override
Definition: UserCallbackMap.cpp:47
MessageDTO createFunctionDescriptionResponseMessage(uint32_t responseId, uint32_t msgSourceId, uint32_t msgDestinationId, UserCallTargetDTO moduleDestination, FunctionDescriptionDTO functionDescription)
Definition: MessageUtils.cpp:34
std::function< void(uint8_t *bytes, uint64_t bytesLength)> m_bytesReceivedCallback
Definition: HiveMindHostApiRequestHandler.h:24
bool sendBytes(uint32_t destinationId, const uint8_t *const payload, uint16_t payloadSize)
Definition: HiveMindBridge.cpp:56
IHiveMindHostApiResponseHandler & m_hmResponseHandler
Definition: MessageHandler.h:29
virtual std::optional< std::string > getNameAt(uint32_t index)=0
ILogger & m_logger
Definition: TCPServer.h:70
std::function< void(std::array< uint16_t, NEIGHBORS_MAX_SIZE >, uint64_t bytesLength)> m_neighborListUpdateCallback
Definition: HiveMindHostApiResponseHandler.h:29
bool sendNeighborListUpdateRequest()
Definition: HiveMindBridge.cpp:66
void onDisconnect(std::function< void()> hook)
Definition: HiveMindBridgeImpl.cpp:111
virtual std::optional< uint32_t > handleGreet(MessageDTO greetMessage)=0
void setState(OutboundRequestState mState)
Definition: OutboundRequestHandle.cpp:7
IHiveMindHostSerializer & m_serializer
Definition: HiveMindBridgeImpl.h:89
void sendReturn(InboundRequestHandle &result)
Definition: HiveMindBridgeImpl.cpp:240
UserCallTargetDTO getSourceModule() const
Definition: InboundRequestHandle.cpp:28
void spin()
Definition: HiveMindBridge.cpp:24
std::map< uint32_t, BytesAccumulator > m_bytesAccumulatorMap
Definition: HiveMindHostApiRequestHandler.h:22
std::string m_statusDetails
Definition: InboundResponseHandle.h:34
void setCallbackReturnContext(std::shared_future< std::optional< CallbackReturn >> future)
Definition: InboundRequestHandle.cpp:5
MessageHandler(ILogger &logger, IUserCallRequestHandler &userCallRequestManager, IHiveMindHostRequestHandler &hmRequestHandler, IHiveMindHostApiResponseHandler &hmResponseHandler)
Definition: MessageHandler.cpp:4
virtual bool onBytesReceived(std::function< void(uint8_t *bytes, uint64_t bytesLength)> callback)=0
virtual std::variant< std::monostate, InboundRequestHandle, InboundResponseHandle > handleMessage(MessageDTO message)=0
HiveMindHostApiResponseHandler m_hmResponseHandler
Definition: HiveMindBridge.h:69
void onDisconnect(std::function< void()> hook) override
Definition: TCPServer.cpp:88
IUserCallbackMap & m_callbackMap
Definition: UserCallRequestHandler.h:22
uint32_t getMessageDestinationId() const
Definition: InboundRequestHandle.cpp:26
CallbackArgsManifest m_manifest
Definition: UserCallbackFunctionWrapper.h:23
virtual std::optional< CallbackFunction > getCallback(const std::string &name)=0
int m_serverFd
Definition: TCPServer.h:71
void inboundThread()
Definition: HiveMindBridgeImpl.cpp:177
void setResponse(MessageDTO message)
Definition: InboundRequestHandle.cpp:3
std::optional< CallbackReturn > callbackWrapper(const CallbackArgs &args, const std::string &functionName)
Definition: UserCallRequestHandler.cpp:108
Definition: IHiveMindHostApiResponseHandler.h:7
virtual void handleMessage(const MessageDTO &message, const HiveMindHostApiResponseDTO &hmResponse)=0
std::string getStatusDetails() const
Definition: InboundResponseHandle.cpp:21
IThreadSafeQueue< OutboundRequestHandle > & m_outboundQueue
Definition: HiveMindBridgeImpl.h:98
Definition: IUserCallRequestHandler.h:7
MessageDTO createFunctionCallRequest(uint32_t msgSourceId, uint32_t msgDestinationId, uint32_t requestId, UserCallTargetDTO moduleDestination, const std::string &callbackName, const CallbackArgs &args)
Definition: MessageUtils.cpp:50
~HiveMindBridgeImpl()
Definition: HiveMindBridgeImpl.cpp:28
void handleMessage(const MessageDTO &message, const HiveMindHostApiResponseDTO &hmResponse) override
Definition: HiveMindHostApiResponseHandler.cpp:6
virtual void handleMessage(const MessageDTO &message, const HiveMindHostApiRequestDTO &hmRequest)=0
bool m_isClientConnected
Definition: TCPServer.h:74
UserCallRequestHandler(ILogger &logger, IUserCallbackMap &callbackMap)
Definition: UserCallRequestHandler.cpp:3
CallbackFunction getFunction()
Definition: UserCallbackFunctionWrapper.cpp:7
virtual void onConnect(std::function< void()> hook)=0
int bumpDelaySinceSent(int bumpValue)
Definition: OutboundRequestHandle.cpp:13
void onConnect(std::function< void()> hook)
Definition: HiveMindBridgeImpl.cpp:107
HiveMindBridgeImpl(ITCPServer &tcpServer, IHiveMindHostSerializer &serializer, IHiveMindHostDeserializer &deserializer, IUserCallRequestHandler &userCallRequestManager, IHiveMindHostRequestHandler &hmRequestHandler, IUserCallbackMap &userCallbackMap, IMessageHandler &messageHandler, IThreadSafeQueue< MessageDTO > &inboundQueue, IThreadSafeQueue< OutboundRequestHandle > &outboundQueue, ILogger &logger, uint32_t keepAliveNbSpin)
Definition: HiveMindBridgeImpl.cpp:5
Definition: IMessageHandler.h:17
void handleNeighborList(const MessageDTO &message, const GetNeighborsListResponseDTO &list)
Definition: HiveMindHostApiResponseHandler.cpp:37