#pragma once #include #include #include #include #include struct RecvSequenceBuffer { struct RSBEntry { std::vector data; }; // sequence_id -> entry std::map entries; uint16_t next_seq_id {0}; // list of seq_ids to ack, this is seperate bc rsbentries are deleted once processed std::deque ack_seq_ids; void erase(uint16_t seq); // inflight chunks size_t size(void) const; void add(uint16_t seq_id, std::vector&& data); bool canPop(void) const; std::vector pop(void); // for acking, might be bad since its front std::vector frontSeqIDs(size_t count = 5) const; };