private void ClientReceivePackets(GenericNetworkDriver <IPCSocket, TestNetworkPipelineStageCollection> clientDriver, int packetCount, NetworkConnection clientToServer, long startTime, int minDelay) { DataStreamReader readStrm; NetworkEvent.Type netEvent; var abortTimer = new Timer(); while (true) { if (abortTimer.ElapsedMilliseconds > 2000) { Assert.Fail("Did not receive first delayed packet"); } netEvent = clientToServer.PopEvent(clientDriver, out readStrm); if (netEvent == NetworkEvent.Type.Data) { break; } m_ServerDriver.ScheduleUpdate().Complete(); clientDriver.ScheduleUpdate().Complete(); } // All delayed packets (from first patch) should be poppable now for (int i = 0; i < packetCount; i++) { var delay = Stopwatch.GetTimestamp() / TimeSpan.TicksPerMillisecond - startTime; Assert.AreEqual(NetworkEvent.Type.Data, netEvent); Assert.That(delay >= minDelay, "Delay too low on packet " + i + ": " + delay); Assert.AreEqual(64, readStrm.Length); var readCtx = default(DataStreamReader.Context); for (int j = 0; j < 16; j++) { var read = readStrm.ReadInt(ref readCtx); Assert.AreEqual(i + 1, read); Assert.True(read > 0 && read <= packetCount, "read incorrect value: " + read); } // Test done when all packets have been verified if (i == packetCount - 1) { break; } // It could be not all patch of packets were processed in one update (depending on how the timers land) abortTimer = new Timer(); while ((netEvent = clientToServer.PopEvent(clientDriver, out readStrm)) == NetworkEvent.Type.Empty) { if (abortTimer.ElapsedMilliseconds > 1000) { Assert.Fail("Didn't receive all delayed packets"); } clientDriver.ScheduleUpdate().Complete(); m_ServerDriver.ScheduleUpdate().Complete(); } } }
public void IPC_Setup() { IPCManager.Instance.Initialize(100); // NOTE: MaxPacketSize should be 64 for all the tests using simulator except needs to account for header size as well (one test has 2x2B headers) var simulatorParams = new SimulatorUtility.Parameters() { MaxPacketSize = 68, MaxPacketCount = 30, PacketDelayMs = 100 }; m_ServerDriver = new GenericNetworkDriver <IPCSocket, TestNetworkPipelineStageCollection>(simulatorParams); m_ServerDriver.Bind(IPCManager.Instance.CreateEndPoint()); m_ServerDriver.Listen(); m_ClientDriver = new GenericNetworkDriver <IPCSocket, TestNetworkPipelineStageCollection>(simulatorParams); m_ClientDriver2 = new GenericNetworkDriver <IPCSocket, TestNetworkPipelineStageCollection>(simulatorParams); }
public UdpNetworkDriver(params INetworkParameter[] param) { m_genericDriver = new GenericNetworkDriver <IPv4UDPSocket, DefaultPipelineStageCollection>(param); }
internal Concurrent(GenericNetworkDriver <IPv4UDPSocket, DefaultPipelineStageCollection> .Concurrent genericConcurrent) { m_genericConcurrent = genericConcurrent; }