group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
OutboundQueue.hpp
Go to the documentation of this file.
1
29
30#pragma once
31
32#include <SDL3/SDL_stdinc.h>
33
34#include <SDL3_net/SDL_net.h>
35#include <cstdint>
36#include <deque>
37#include <memory>
38#include <mutex>
39#include <vector>
40
53{
58 uint8_t replaceKey = 0;
59
61 Uint64 enqueuedNs = 0;
62
66 std::shared_ptr<const std::vector<uint8_t>> framedBytes;
67};
68
85{
86public:
96 void enqueue(uint8_t replaceKey, std::shared_ptr<const std::vector<uint8_t>> framedBytes);
97
102 void enqueue(uint8_t replaceKey, std::vector<uint8_t>&& framedBytes);
103
114 bool flushTo(NET_StreamSocket* socket, Uint32 maxAgeMs);
115
117 [[nodiscard]] size_t depth() const noexcept
118 {
119 std::lock_guard<std::mutex> lock(mutex_);
120 return entries_.size();
121 }
122
124 [[nodiscard]] size_t totalBytes() const noexcept;
125
127 void clear() noexcept
128 {
129 std::lock_guard<std::mutex> lock(mutex_);
130 entries_.clear();
131 }
132
133private:
134 mutable std::mutex mutex_;
135 std::deque<OutboundEntry> entries_;
136};
Per-connection outbound message queue.
Definition OutboundQueue.hpp:85
void enqueue(uint8_t replaceKey, std::shared_ptr< const std::vector< uint8_t > > framedBytes)
Enqueue a framed message (PR-2 broadcast-friendly form).
Definition OutboundQueue.cpp:10
void clear() noexcept
Drop all queued entries (used on disconnect).
Definition OutboundQueue.hpp:127
size_t depth() const noexcept
Number of entries currently queued (for telemetry / tests).
Definition OutboundQueue.hpp:117
std::mutex mutex_
PR-5b: protects entries_ for cross-thread access.
Definition OutboundQueue.hpp:134
bool flushTo(NET_StreamSocket *socket, Uint32 maxAgeMs)
Drain the queue, writing each entry to socket.
Definition OutboundQueue.cpp:54
std::deque< OutboundEntry > entries_
Definition OutboundQueue.hpp:135
size_t totalBytes() const noexcept
Total bytes across all queued entries (for telemetry).
Definition OutboundQueue.cpp:102
Bytes already framed (4-byte length prefix + payload) ready for the wire.
Definition OutboundQueue.hpp:53
Uint64 enqueuedNs
Microsecond timestamp at enqueue time, used for max-age culling.
Definition OutboundQueue.hpp:61
std::shared_ptr< const std::vector< uint8_t > > framedBytes
Pre-framed bytes including the 4-byte length prefix.
Definition OutboundQueue.hpp:66
uint8_t replaceKey
Replace-key.
Definition OutboundQueue.hpp:58