sendApplicationStream method

void sendApplicationStream(
  1. int streamId,
  2. Uint8List data, {
  3. bool fin = false,
  4. int offset = 0,
})

Implementation

void sendApplicationStream(
  int streamId,
  Uint8List data, {
  bool fin = false,
  int offset = 0,
}) {
  if (!applicationSecretsDerived || appWrite == null) {
    throw StateError('Cannot send application stream before 1-RTT keys');
  }

  final frame = _buildStreamFrame(
    streamId: streamId,
    data: data,
    offset: offset,
    fin: fin,
  );

  final pn = _allocateSendPn(EncryptionLevel.application);

  final raw = encryptQuicPacket(
    'short',
    frame,
    appWrite!.key,
    appWrite!.iv,
    appWrite!.hp,
    pn,
    _dcidForShortHeader(), // ✅ REQUIRED
    localCid,
    Uint8List(0),
  );

  if (raw == null) {
    throw StateError('Failed to encrypt application STREAM packet');
  }

  socket.send(raw, peerAddress, peerPort);

  print(
    '✅ Sent application STREAM pn=$pn streamId=$streamId '
    'len=${data.length} fin=$fin',
  );
}