4#include "../Platform/Threads.h"
13 constexpr uint32_t cApplicationHubID = 0x7FFF0000;
14 constexpr uint32_t cFirstWindowHubID = 0x7FFF1000;
32 using MessageQueue = std::deque< Message::Ptr >;
33 using HubList = std::vector< MessageHub* >;
35 static constexpr size_t noLimit = 10000000;
40 bool addListener(
MessageHub* hub,
bool bidirectional =
false);
41 bool addListener(uint32_t hubid,
bool bidirectional =
false);
42 bool listenTo(
MessageHub* hub,
bool bidirectional =
false);
43 bool listenTo(uint32_t hubid,
bool bidirectional =
false);
45 bool removeListener(uint32_t hubid);
46 void removeAllListeners();
48 void disconnectFromSender(uint32_t hubid);
49 void disconnectFromAllSenders();
51 virtual void broadcastMessage(
const Message::Ptr& message);
52 virtual void sendMessage(
const Message::Ptr& message);
53 virtual void queueMessage(
const Message::Ptr& message);
54 virtual bool processMessages(
size_t limit = noLimit);
55 virtual bool isSendOnly()
const {
return false; }
57 uint32_t getID()
const {
return id; }
58 size_t getNoOfQueuedMessages();
59 void flushQueuedMessages();
62 Message::Ptr getNextMessage();
73 virtual void processMessage(
Message& ) {}
86 virtual bool isSendOnly()
const override {
return true; }
A MessageHub connects to other hubs to form a simple peer-to-peer application-internal networking sys...
MessageQueue messages
Messages waiting to be processed by this hub.
Mutex hubsMutex
Mutex protecting the above lists.
Mutex messagesMutex
Mutex for the above queue.
HubList listeners
List of hubs listening to our messages.
HubList senders
List of hubs to which we are listening.
A MessageHub that only supports sending messages.
virtual void queueMessage(const Message::Ptr &) override
Queue a message for this hub to process.
Contains all Cogs related functionality.