public async Task ReceiveTwoKeepAlives() { var message = new KeepAliveMessage(); var buffer = message.Encode(); var handle = new AutoResetEvent(false); await NetworkIO.SendAsync(Outgoing, buffer, 0, buffer.Length, null, null, null); var sendTask = NetworkIO.SendAsync(Outgoing, buffer, 0, buffer.Length, null, null, null); var task = PeerIO.ReceiveMessageAsync(Incoming, PlainTextEncryption.Instance, null, null, null); Assert.IsTrue(task.Wait(TimeSpan.FromSeconds(2)), "#Should receive first message"); task = PeerIO.ReceiveMessageAsync(Incoming, PlainTextEncryption.Instance, null, null, null); Assert.IsTrue(task.Wait(TimeSpan.FromSeconds(2)), "#Should receive second message"); await sendTask; }
public void ReceiveTwoKeepAlives() { var message = new KeepAliveMessage(); var buffer = message.Encode(); var handle = new AutoResetEvent(false); NetworkIO.EnqueueSend(Outgoing, buffer, 0, buffer.Length, null, null, null, delegate { }, null); NetworkIO.EnqueueSend(Outgoing, buffer, 0, buffer.Length, null, null, null, delegate { }, null); AsyncMessageReceivedCallback callback = (s, m, state) => { if (s && m is KeepAliveMessage) { handle.Set(); } }; PeerIO.EnqueueReceiveMessage(Incoming, new PlainTextEncryption(), null, null, null, callback, null); Assert.IsTrue(handle.WaitOne(TimeSpan.FromSeconds(2)), "#Should receive first message"); PeerIO.EnqueueReceiveMessage(Incoming, new PlainTextEncryption(), null, null, null, callback, null); Assert.IsTrue(handle.WaitOne(TimeSpan.FromSeconds(2)), "#Should receive second message"); }