HiveMindBridge
HiveMindBridge.h
Go to the documentation of this file.
1 #ifndef HIVEMIND_BRIDGE_HIVEMINDBRIDGE_H
2 #define HIVEMIND_BRIDGE_HIVEMINDBRIDGE_H
4 #include "UserCallbackMap.h"
14 #include <cpp-common/ILogger.h>
15 #include <memory>
16 #include <pheromones/HiveMindHostDeserializer.h>
17 #include <pheromones/HiveMindHostSerializer.h>
18 
20  public:
28  HiveMindBridge(int tcpPort, ILogger& logger, uint32_t keepAliveNbSpin = 0);
29 
30  ~HiveMindBridge() = default;
31 
32  void spin();
33 
34  void onConnect(std::function<void()> hook);
35 
36  void onDisconnect(std::function<void()> hook);
37 
38  bool onBytesReceived(
39  std::function<void(uint8_t* bytes, uint64_t bytesLength)> callback) override;
40 
41  bool onNeighborListUpdated(std::function<void(std::array<uint16_t, NEIGHBORS_MAX_SIZE>,
42  uint64_t bytesLength)> callback);
43 
44  bool onNeighborUpdated(
45  std::function<void(uint16_t neighborId, std::optional<Position> position)> callback);
46 
47  bool registerCustomAction(std::string name,
48  CallbackFunction callback,
49  CallbackArgsManifest manifest);
50 
51  bool registerCustomAction(std::string name, CallbackFunction callback);
52 
53  bool queueAndSend(MessageDTO message);
54 
55  bool sendBytes(uint32_t destinationId, const uint8_t* const payload, uint16_t payloadSize);
56 
57  bool sendNeighborUpdateRequest(uint16_t neighborId);
58 
60 
61  private:
62  ILogger& m_logger;
64  HiveMindHostDeserializer m_deserializer;
65  HiveMindHostSerializer m_serializer;
74 };
75 
76 #endif // HIVEMIND_BRIDGE_HIVEMINDBRIDGE_H
HiveMindBridge::HiveMindBridge
HiveMindBridge(int tcpPort, ILogger &logger, uint32_t keepAliveNbSpin=0)
Definition: HiveMindBridge.cpp:3
ThreadSafeQueue< MessageDTO >
OutboundRequestHandle.h
CallbackArgsManifest
std::vector< UserCallbackArgumentDescription > CallbackArgsManifest
Definition: Callback.h:11
UserCallbackMap
Definition: UserCallbackMap.h:7
HiveMindBridge::onDisconnect
void onDisconnect(std::function< void()> hook)
Definition: HiveMindBridge.cpp:28
HiveMindBridge::m_userCallbackMap
UserCallbackMap m_userCallbackMap
Definition: HiveMindBridge.h:66
HiveMindBridge::m_hmRequestHandler
HiveMindHostApiRequestHandler m_hmRequestHandler
Definition: HiveMindBridge.h:68
HiveMindBridge::m_userCallRequestHandler
UserCallRequestHandler m_userCallRequestHandler
Definition: HiveMindBridge.h:67
HiveMindBridge::queueAndSend
bool queueAndSend(MessageDTO message)
Definition: HiveMindBridge.cpp:54
HiveMindBridge::onBytesReceived
bool onBytesReceived(std::function< void(uint8_t *bytes, uint64_t bytesLength)> callback) override
Definition: HiveMindBridge.cpp:30
HiveMindHostApiRequestHandler
Definition: HiveMindHostApiRequestHandler.h:10
UserCallRequestHandler.h
HiveMindBridge
Definition: HiveMindBridge.h:19
IHiveMindBridge
Definition: IHiveMindBridge.h:14
HiveMindBridge::m_inboundQueue
ThreadSafeQueue< MessageDTO > m_inboundQueue
Definition: HiveMindBridge.h:71
UserCallRequestHandler
Definition: UserCallRequestHandler.h:10
HiveMindHostApiRequestHandler.h
CallbackFunction
std::function< std::optional< CallbackReturn >CallbackArgs)> CallbackFunction
Definition: Callback.h:31
ThreadSafeQueue.h
MessageHandler
Definition: MessageHandler.h:13
HiveMindBridge::sendNeighborUpdateRequest
bool sendNeighborUpdateRequest(uint16_t neighborId)
Definition: HiveMindBridge.cpp:62
HiveMindBridge::onNeighborListUpdated
bool onNeighborListUpdated(std::function< void(std::array< uint16_t, NEIGHBORS_MAX_SIZE >, uint64_t bytesLength)> callback)
Definition: HiveMindBridge.cpp:34
HiveMindBridge::onNeighborUpdated
bool onNeighborUpdated(std::function< void(uint16_t neighborId, std::optional< Position > position)> callback)
Definition: HiveMindBridge.cpp:39
HiveMindBridge::m_messageHandler
MessageHandler m_messageHandler
Definition: HiveMindBridge.h:70
HiveMindBridgeImpl.h
HiveMindHostApiResponseHandler
Definition: HiveMindHostApiResponseHandler.h:11
HiveMindBridgeImpl
Definition: HiveMindBridgeImpl.h:29
HiveMindBridge::registerCustomAction
bool registerCustomAction(std::string name, CallbackFunction callback, CallbackArgsManifest manifest)
Definition: HiveMindBridge.cpp:44
HiveMindHostApiResponseHandler.h
HiveMindBridge::m_deserializer
HiveMindHostDeserializer m_deserializer
Definition: HiveMindBridge.h:64
HiveMindBridge::m_outboundQueue
ThreadSafeQueue< OutboundRequestHandle > m_outboundQueue
Definition: HiveMindBridge.h:72
UserCallbackMap.h
HiveMindBridge::onConnect
void onConnect(std::function< void()> hook)
Definition: HiveMindBridge.cpp:26
TCPServer
Definition: TCPServer.h:15
HiveMindBridge::m_serializer
HiveMindHostSerializer m_serializer
Definition: HiveMindBridge.h:65
HiveMindBridge::m_bridge
HiveMindBridgeImpl m_bridge
Definition: HiveMindBridge.h:73
IHiveMindBridge.h
BytesAccumulator.h
HiveMindBridge::sendBytes
bool sendBytes(uint32_t destinationId, const uint8_t *const payload, uint16_t payloadSize)
Definition: HiveMindBridge.cpp:56
HiveMindBridge::sendNeighborListUpdateRequest
bool sendNeighborListUpdateRequest()
Definition: HiveMindBridge.cpp:66
HiveMindBridge::spin
void spin()
Definition: HiveMindBridge.cpp:24
MessageHandler.h
HiveMindBridge::m_hmResponseHandler
HiveMindHostApiResponseHandler m_hmResponseHandler
Definition: HiveMindBridge.h:69
TCPServer.h
HiveMindBridge::m_logger
ILogger & m_logger
Definition: HiveMindBridge.h:62
HiveMindBridge::m_tcpServer
TCPServer m_tcpServer
Definition: HiveMindBridge.h:63
HiveMindBridge::~HiveMindBridge
~HiveMindBridge()=default