send method

Future<CoapResponse> send(
  1. CoapRequest request, {
  2. CoapMulticastResponseHandler? onMulticastResponse,
})

Send

Implementation

Future<CoapResponse> send(
  final CoapRequest request, {
  final CoapMulticastResponseHandler? onMulticastResponse,
}) async {
  await _prepare(request);
  if (request.isMulticast) {
    if (onMulticastResponse == null) {
      throw ArgumentError('Missing onMulticastResponse argument');
    }
    _eventBus
        .on<CoapRespondEvent>()
        .where(
          (final e) =>
              e.resp.token!.equals(request.token!) ||
              e.resp.multicastToken!.equals(request.token!),
        )
        .takeWhile((final _) => !request.isTimedOut && !request.isCancelled)
        .listen(
          onMulticastResponse.onData,
          onError: onMulticastResponse.onError,
          onDone: onMulticastResponse.onDone,
          cancelOnError: onMulticastResponse.cancelOnError,
        );
  }
  _endpoint!.sendEpRequest(request);
  return _waitForResponse(request);
}