sendStreamPacket method
void
sendStreamPacket(})
Sends a packet with the given frames on behalf of a stream.
Uses connection-level sequence numbers (per QUIC RFC 9000).
If trackForRetransmit is true, the packet is registered with the PacketManager
for retransmission and congestion control.
Implementation
void sendStreamPacket(int dstStreamId, int srcStreamId, List<Frame> frames, {bool trackForRetransmit = true}) {
if (_closing) return;
final seq = _packetManager.nextSequence;
final packet = UDXPacket(
destinationCid: cids.remoteCid,
sourceCid: cids.localCid,
destinationStreamId: dstStreamId,
sourceStreamId: srcStreamId,
sequence: seq,
frames: frames,
);
// Calculate data size for congestion control
int dataSize = 0;
for (final frame in frames) {
if (frame is StreamFrame) dataSize += frame.data.length;
}
if (trackForRetransmit) {
_packetManager.sendPacket(packet);
_congestionController.onPacketSent(dataSize);
_sentPacketsForRtt[seq] = (DateTime.now(), dataSize);
}
send(packet.toBytes());
if (dataSize > 0) {
incrementConnectionBytesSent(dataSize);
_congestionController.pacingController.onPacketSent(packet.toBytes().length);
}
}