Beispiel #1
0
        private static bool PushIfCompatibleType(
            ILazyMessageStreamEnumerable lazyStream,
            int messageId,
            TMessage message,
            CancellationToken cancellationToken,
            out Task messageProcessingTask)
        {
            if (message == null)
            {
                messageProcessingTask = Task.CompletedTask;
                return(false);
            }

            if (lazyStream.MessageType.IsInstanceOfType(message))
            {
                var pushedMessage = new PushedMessage(messageId, message, message);
                messageProcessingTask = lazyStream.GetOrCreateStream().PushAsync(pushedMessage, cancellationToken);
                return(true);
            }

            var envelope = message as IEnvelope;

            if (envelope?.Message != null && envelope.AutoUnwrap &&
                lazyStream.MessageType.IsInstanceOfType(envelope.Message))
            {
                var pushedMessage = new PushedMessage(messageId, envelope.Message, message);
                messageProcessingTask = lazyStream.GetOrCreateStream().PushAsync(pushedMessage, cancellationToken);
                return(true);
            }

            messageProcessingTask = Task.CompletedTask;
            return(false);
        }
 private static LazyMessageStreamObservable <TMessage> CreateObservable <TMessage>(
     ILazyMessageStreamEnumerable <TMessage> enumerable) =>
Beispiel #3
0
 public LazyMessageStreamObservable(ILazyMessageStreamEnumerable <TMessage> lazyStream)
 {
     _lazyStream = lazyStream;
 }