subscribeToMessageStreams method

List<StreamSubscription<State>> subscribeToMessageStreams(
  1. StreamController<Message> messageStream
)

Subscribe to the message streams of all the services registered with the hub and adds the messages to a single messageStream.

Implementation

List<StreamSubscription<app.State>> subscribeToMessageStreams(
  StreamController<app.Message> messageStream,
) {
  final subscriptions = <StreamSubscription<app.State>>[];
  for (var service in _services) {
    subscriptions.add(
      service.stream.listen(
        (state) {
          _logger.fine('Received state update: $state');

          for (var message in state.messages) {
            service.removeStateMessage(message);
            if (!_queuedMessageHashes.contains(message.hashCode)) {
              _queuedMessageHashes.add(message.hashCode);
              messageStream.add(message);
            }
          }
        },
      ),
    );
  }
  return subscriptions;
}