3Cogs::Network::Message::Pool Cogs::Network::Message::messagePool;
4Cogs::Mutex Cogs::Network::Message::mutex;
11 std::unique_lock lock(mutex);
13 if (!messagePool.empty()) {
14 message = messagePool.back();
15 messagePool.pop_back();
21 message->identifier = id;
29 Ptr msg = allocate(src.getID());
31 msg->write(src.data(), src.size());
39 std::unique_lock lock(mutex);
41 for (
Message* message : messagePool) {
69 std::unique_lock lock(mutex);
72 messagePool.push_back(message);
static void flush()
Flushes any messages pooled for reuse.
static void deleteMessage(Message *msg)
Deleter function called by shared_ptr when the last reference to message is destroyed.
Message()
Constructs a new Message instance.
static Ptr duplicate(const Message &src)
Duplicates the provided message.
static Ptr allocate(uint32_t id)
Retrieves an existing message from the pool, or creates a new one if the pool is empty.