SubscribingClient constructor

SubscribingClient(
  1. dynamic channel
)

Implementation

SubscribingClient(channel) : super(channel) {
  // This "fallback" handles all valid notifications from the server
  peer.registerFallback((Parameters params) async {
    var methodPrefix = Subscribable.getMethodPrefix(params.method);
    var subscribable = _subscribables[methodPrefix];
    if (subscribable == null) {
      throw RpcException.methodNotFound(methodPrefix);
    }

    var key = subscribable.key(params.asList);
    var controllers = _subscriptions[key] ?? [];
    try {
      var result = subscribable.notificationResult(params.asList);
      for (var controller in controllers) {
        controller.sink.add(result);
      }
    } catch (err) {
      for (var controller in controllers) {
        controller.sink.addError(err);
      }
    }
  });
}