88 PendingTransmission(Clock::time_point expiry,
const DataRequest& request, std::unique_ptr<ChunkPacket> packet) :
89 expiry(expiry), request(request), packet(std::move(packet)) {}
91 Clock::time_point expiry;
93 std::unique_ptr<ChunkPacket> packet;
95 Profile profile()
const override {
return request.dcc_profile; }
97 std::size_t body_length()
const override {
return packet ? packet->size() : 0; }
100 using Queue = std::list<PendingTransmission>;
102 void enqueue(
const DataRequest&, std::unique_ptr<ChunkPacket>);
103 boost::optional<PendingTransmission> dequeue();
104 void transmit(
const DataRequest&, std::unique_ptr<ChunkPacket>);
116 std::map<access::AccessCategory, Queue, std::greater<access::AccessCategory>> m_queues;
117 std::size_t m_queue_length;
118 PacketDropHook m_packet_drop_hook;
119 PacketTransmitHook m_packet_transmit_hook;