subscribe method

Future<Stream<Stats>> subscribe({
  1. bool useMetadata = false,
  2. bool asBroadcast = true,
  3. int refreshTimePeriodInMs = 60000,
})

Subscribe to stream of Stats from EventStore as stream

Implementation

Future<Stream<Stats>> subscribe({
  bool useMetadata = false,
  bool asBroadcast = true,
  int refreshTimePeriodInMs = 60000,
}) async {
  return $runRequest(() async {
    final client = await $getClient();
    final request = $a.StatsReq()
      ..useMetadata = useMetadata
      ..refreshTimePeriodInMs = Int64(refreshTimePeriodInMs);
    final response = client.stats(request);
    late StreamSubscription<$a.StatsResp> subscription;
    final controller = StreamController<Stats>.broadcast(
      onCancel: () => subscription.cancel(),
    );
    subscription = response.listen(
      (value) {
        controller.add(Stats._from(
          value,
          useMetadata,
          refreshTimePeriodInMs,
        ));
      },
    );
    return controller.stream;
  });
}