Exemplo n.º 1
0
        public MessageDispatcherTests()
        {
            _hooks = new Subject <MessageHook>();
            _messageSenderProvider = A.Fake <IMessageSenderProvider>();
            _logger        = A.Fake <ILogger <MessageDispatcher> >();
            _messageSender = A.Fake <IMessageSender>();

            A.CallTo(() => _messageSenderProvider.GetMessageSenderForHub(A <string> ._)).Returns(_messageSender);

            _dispatcher     = new MessageDispatcher(_messageSenderProvider, _logger, _hooks);
            _messageHandler = _dispatcher.OnMessageReceived;
        }
        public MessageDispatcherTests()
        {
            _nodeIdProvider        = A.Fake <INodeIdProvider>();
            _messageSenderProvider = A.Fake <IMessageSenderProvider>();
            _listener      = A.Fake <IServiceBusListener>();
            _logger        = A.Fake <ILogger <MessageDispatcher> >();
            _messageSender = A.Fake <IMessageSender>();

            A.CallTo(() => _nodeIdProvider.NodeId).Returns(Guid.NewGuid());

            A.CallTo(() => _messageSenderProvider.GetMessageSenderForHub(A <string> ._)).Returns(_messageSender);

            A.CallTo(() => _listener.StartListeningAsync(A <MessageHandler> ._, A <CancellationToken> ._))
            .Invokes((MessageHandler mh, CancellationToken _) => _messageHandler = mh);

            _dispatcher = new MessageDispatcher(_nodeIdProvider, _messageSenderProvider, _listener, _logger);
        }
Exemplo n.º 3
0
        public async Task OnMessageReceived(SignalRMessage message, CancellationToken cancellationToken)
        {
            var messageSender = _messageSenderProvider.GetMessageSenderForHub(message.HubTypeName);

            if (messageSender == null)
            {
                _logger.LogWarning("Can't find message sender for hub '{HubTypeName}'", message.HubTypeName);
                return;
            }

            _hook.OnNext(new MessageHook(message.HubTypeName, message.Method, message.Args));

            foreach (var recipient in message.Recipients)
            {
                _logger.LogDebug("Dispatched {MethodName} to {Hub}", message.Method, message.HubTypeName);
                await recipient.SendCoreAsync(messageSender, message.Method, message.Args, cancellationToken);
            }
        }
        private async Task OnMessageReceived(SignalRMessage message, CancellationToken cancellationToken)
        {
            if (message.SenderId == _nodeIdProvider.NodeId)
            {
                // Ignore messages sent by self
                return;
            }

            var messageSender = _messageSenderProvider.GetMessageSenderForHub(message.HubTypeName);

            if (messageSender == null)
            {
                _logger.LogWarning("Can't find message sender for hub '{HubTypeName}'", message.HubTypeName);
                return;
            }

            foreach (var recipient in message.Recipients)
            {
                await recipient.SendCoreAsync(messageSender, message.Method, message.Args, cancellationToken);
            }
        }
Exemplo n.º 5
0
        public async Task Messages_For_Unknown_Hub_Are_Not_Dispatched()
        {
            A.CallTo(() => _messageSenderProvider.GetMessageSenderForHub(A <string> ._)).Returns(null);

            // Sanity check
            _messageHandler.Should().NotBeNull();

            var recipients = A.CollectionOfFake <SignalRMessageRecipient>(3);

            var message = new SignalRMessage
            {
                HubTypeName = "MyHub",
                Method      = "Foo",
                Args        = new object[] { "Hello", 42 },
                Recipients  = recipients.ToArray()
            };

            await _messageHandler(message, CancellationToken.None);

            foreach (var recipient in recipients)
            {
                A.CallTo(() => recipient.SendCoreAsync(default, default, default, default))