public void SendMessage_Callback() { var clock = new Clock(); var logger = new ConsoleLogger(clock); var firstClient = new QueuedUdpSocket(logger); var secondClient = new QueuedUdpSocket(logger); firstClient.Start(); secondClient.Start(); var data = new byte[] { 1, }; var remoteEndPoint = new IPEndPoint(IPAddress.Loopback, secondClient.LocalEndPoint.Port); firstClient.Send(data, remoteEndPoint); Datagram datagram; while (!secondClient.TryDequeueNext(out datagram)) { } Assert.AreEqual(1, datagram.Data[0]); data = new byte[] { 2, }; secondClient.Send(data, datagram.IpEndPoint); while (!firstClient.TryDequeueNext(out datagram)) { } Assert.AreEqual(2, datagram.Data[0]); firstClient.Close(); secondClient.Close(); }
public void Connect(IAccount addAccount, IAccount connectAccount) { var clock = new Clock(); var playerFactory = new PlayerFactory(); var playerDatabase = new PlayerDiskDatabase <IPlayer, IPlayerFactory <IPlayer> >(testDatabasePath, false); var logger = new ConsoleLogger(clock); var room = new RoomUdpSocket <IPlayer, IPlayerFactory <IPlayer> >(0, "Test Room #0", clock, playerFactory, playerDatabase, logger); var client = new QueuedUdpSocket(logger); room.Start(); client.Start(); room.AddPlayer(addAccount, out Token connectToken); var remoteEndPoint = new IPEndPoint(IPAddress.Loopback, room.LocalEndPoint.Port); client.Send(new ConnectUdpRequest(connectAccount.ID, connectToken, remoteEndPoint)); Datagram datagram; while (!client.TryDequeueNext(out datagram)) { } Assert.AreEqual((byte)RoomDatagramType.Connect, datagram.Type); var response = new ConnectUdpResponse(datagram); Assert.AreEqual((byte)ConnectUdpResponse.ResultType.Success, response.result); room.Close(); client.Close(); }
public void SendMessage_ToClosed() { var clock = new Clock(); var logger = new ConsoleLogger(clock); var firstClient = new QueuedUdpSocket(logger); var secondClient = new QueuedUdpSocket(logger); firstClient.Start(); secondClient.Start(); var data = new byte[] { 1, }; var remoteEndPoint = new IPEndPoint(IPAddress.Loopback, secondClient.LocalEndPoint.Port); secondClient.Close(); firstClient.Send(data, remoteEndPoint); firstClient.Close(); }