add method

  1. @override
Future<void> add(
  1. Uint8List data
)
override

Adds a data event to the sink.

Must not be called on a closed sink.

Implementation

@override
Future<void> add(Uint8List data) async {
  if (streamType == StreamType.unidirectionalRemote) {
    throw StateError('UDXStream ($id): Cannot write to a receive-only unidirectional stream');
  }
  if (!_connected) throw StateError('UDXStream ($id): Stream is not connected');
  if (_socket == null) throw StateError('UDXStream ($id): Stream is not connected to a socket');
  if (_localWriteClosed) throw StateError('UDXStream ($id): Cannot write after closeWrite() has been called');

  if (remoteId == null || remoteHost == null || remotePort == null) {
    throw StateError('UDXStream ($id): Remote peer details not set');
  }
  if (data.isEmpty) return;

  final fragments = _fragmentData(data);
  for (final fragment in fragments) {
    await _sendFragment(fragment);
  }
  emit('send', data);
}