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; } } }
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); }
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); }
public void Queue(BaseScertMessage message) { SendMessageQueue.Enqueue(message); }
public void QueueServerEcho() { SendMessageQueue.Enqueue(new RT_MSG_SERVER_ECHO()); UtcLastServerEchoSent = DateTime.UtcNow; }