Exemplo n.º 1
0
        private void KeepAliveThread(Object state)
        {
            while (!_disposed)
            {
                try
                {
                    _workingMres.Wait();
                    if (!_client.Connected)
                    {
                        Thread.Sleep(10);
                        continue;
                    }

                    SendMessageQueue.Enqueue(new NetworkMessage()
                    {
                        Type = MessageType.KeepAlive
                    });
                    Thread.Sleep(1000);
                }
                catch (Exception ex)
                {
                    if (ex is SocketException || ex is IOException)
                    {
                        continue;
                    }

                    Debug.WriteLine(ex.Message);
                    throw;
                }
            }
        }
Exemplo n.º 2
0
        public void Queue_SendsMessageToDriver()
        {
            var driver = Substitute.For <IDriver>();
            var logger = Substitute.For <ILogger>();

            var q = new SendMessageQueue(TimeSpan.Zero, driver, logger, null);

            var message = new PostMessage("channel");

            q.Enqueue(message);

            Thread.Sleep(10);

            driver
            .Received()
            .SendMessageAsync(message, logger);
        }
Exemplo n.º 3
0
        public void Queue_OnError()
        {
            var driver = Substitute.For <IDriver>();
            var logger = Substitute.For <ILogger>();

            var message = new PostMessage("channel");

            driver.SendMessageAsync(message, logger)
            .Returns(
                _ => throw new Exception("test"),
                _ => Task.CompletedTask);

            var resetEvent = new AutoResetEvent(false);

            var q = new SendMessageQueue(TimeSpan.Zero, driver, logger, async(queue, msg, l, ex) =>
            {
                await Task.Delay(10);

                Assert.Same(msg, message);
                Assert.Same(logger, l);
                Assert.Equal("test", ex.Message);
                Assert.Equal(1, msg.SendAttempts);

                queue.Enqueue(msg);

                resetEvent.Set();
            });

            q.Enqueue(message);

            if (!resetEvent.WaitOne(100))
            {
                Assert.True(false, "reset event not set in callback");
            }

            driver
            .Received(2)
            .SendMessageAsync(message, logger);
        }
Exemplo n.º 4
0
 public void Queue(BaseScertMessage message)
 {
     SendMessageQueue.Enqueue(message);
 }
Exemplo n.º 5
0
 public void QueueServerEcho()
 {
     SendMessageQueue.Enqueue(new RT_MSG_SERVER_ECHO());
     UtcLastServerEchoSent = DateTime.UtcNow;
 }