send<T> method

  1. @override
Future? send<T>(
  1. T data, {
  2. String? path,
  3. String? fragment,
  4. String? target,
  5. Map<String, String>? arguments,
})
override

Sends an event to the bus. If a handler exists for the topic, it will be called. Returns a Future that completes with the result if EventDTO.completer was called by the handler. If no handler exists, returns null.

Implementation

@override
Future? send<T>(T data, {String? path, String? fragment, String? target, Map<String, String>? arguments}) async {
  if (_toEBSender != null) {
    var c = Completer();
    var dto =
        EventDTO<T>(data, path: path, fragment: fragment, arguments: arguments, target: target, completer: null);

    ///We send EventDTO to Isolate and wait return
    if (_request.containsKey(dto.hashCode)) {
      _request[dto.hashCode]!.add(c);
    } else {
      _request[dto.hashCode] = [];
      _request[dto.hashCode]!.add(c);
    }

    _toEBSender!.send(dto);
    return c.future;
    // }
    // var node = _map[dto.topic];
    // if (node != null && node is EventNode<T>) {
    //   node._streamController.add(dto);
    //   return dto.completer?.future;
    // }
    // _allEventStream.add(dto);
    // return null;
    // return super.send(data, path, fragment, target, arguments);
  }
}