public BaseTeleportProcessor(TeleportUdpTransport transport) { _socketStarted = false; _transport = transport; _incomingMessageProcessors = new Dictionary <byte, Action <EndPoint, TeleportReader> >(); _unityHelper = null; }
private IEnumerator Start() { float testDuration = 30; var port = 6000; var serverTransport = new TeleportUdpTransport(() => new TeleportPacketBuffer(), () => new SequencedTeleportChannel(new SimpleTeleportChannel())); var clientTransport = new TeleportUdpTransport(() => new TeleportPacketBuffer(), () => new SequencedTeleportChannel(new SimpleTeleportChannel())); var server = new TeleportServerProcessor(serverTransport); var client = new TeleportClientProcessor(clientTransport); server.RegisterMessage <TestMessage>(); client.RegisterMessage <TestMessage>(); server.RegisterMessage <TimedMessageTest>(); client.RegisterMessage <TimedMessageTest>(); Debug.Log("Test will start in 3 seconds"); yield return(new WaitForSeconds(3)); server.Listen(port); client.Connect("localhost", port); Debug.Log("Waiting for client to authenticate..."); while (client.State != TeleportClientProcessor.StateType.Connected) { yield return(null); } Debug.Log("Client authenticated with server!"); Debug.Log("Starting transfer, please wait for results (" + testDuration + " seconds)"); while (testDuration > 0) { for (int i = 0; i < 5; i++) { server.SendToAll(new TimedMessageTest()); server.SendToAll(new TestMessage()); } for (int i = 0; i < 5; i++) { client.SendToServer(new TestMessage()); } testDuration -= Time.deltaTime; yield return(null); } Debug.Log("Stopping client and server..."); yield return(new WaitForSeconds(5)); server.StopListening(); client.Disconnect(); Debug.Log("Test complete! Checking results.."); if (TestStats.ClientMissingSeqs.Count > 0) { Debug.LogError("Client missing " + TestStats.ClientMissingSeqs.Count + " messages"); } else if (TestStats.ClientMissingTimedSeqs.Count > 0) { Debug.LogError("Client missing " + TestStats.ClientMissingTimedSeqs.Count + " timed messages"); } else if (TestStats.ServerMissingSeqs.Count > 0) { Debug.LogError("Client missing " + TestStats.ServerMissingSeqs.Count + " timed messages"); } else { Debug.Log("All passed! Client msgs: " + TestStats.ClientSeq + " Client timed msgs: " + TestStats.ClientTimedSeq + " Server msgs: " + TestStats.ServerSeq); } }
public TeleportServerProcessor(TeleportUdpTransport transport) : base(transport) { _nextClientId = 0; _clientDataByEndpoint = new Dictionary <EndPoint, TeleportClientData>(); _clientDataById = new Dictionary <uint, TeleportClientData>(); }
public TeleportClientProcessor(TeleportUdpTransport transport, float timedMessagePlaybackDelay = 0.08f) : base(transport) { State = StateType.Disconnected; _timedMessageQueue = new TimedMessageQueue(); _timedMessagePlaybackDelay = timedMessagePlaybackDelay; }
private IEnumerator Start() { var port = 5006; float testDuration = 30; _clientDataSeq = 0; _serverDataSeq = 0; _clientMissingSeqs = new List <int>(); _serverMissingSeqs = new List <int>(); Debug.Log("Starting test in 3 seconds..."); yield return(new WaitForSeconds(3)); var server = new TeleportUdpTransport(() => new TeleportPacketBuffer(), () => new SequencedTeleportChannel(new SimpleTeleportChannel())); var client = new TeleportUdpTransport(() => new TeleportPacketBuffer(), () => new SequencedTeleportChannel(new SimpleTeleportChannel())); server.StartListener(port); client.StartClient("127.0.0.1", port); Debug.Log("Waiting for client and server to start..."); while (!client.ThreadStarted || !server.ThreadStarted) { yield return(null); } yield return(new WaitForSeconds(3)); client.Send(new byte[] { 0, 0, 0, 0 }); // Say hello so server will recognize us bool didServerGetHello = false; while (!didServerGetHello) { server.ProcessIncoming((e, r) => { didServerGetHello = true; }); yield return(null); } Debug.Log("Server got hello from client"); yield return(new WaitForSeconds(1)); while (testDuration > 0) { for (int i = 0; i < 20; i++) { client.Send(SerializeClient); } for (int i = 0; i < 20; i++) { server.Send(SerializeServer); } server.ProcessIncoming(DeserializeServer); client.ProcessIncoming(DeserializeClient); testDuration -= Time.deltaTime; yield return(null); } yield return(new WaitForSeconds(10)); server.StopListener(); client.StopClient(); for (int i = 0; i < _serverMissingSeqs.Count; i++) { Debug.LogError("Missing sequence never got to server: " + i); } for (int i = 0; i < _clientMissingSeqs.Count; i++) { Debug.LogError("Missing sequence never got to client: " + i); } if (_clientMissingSeqs.Count == 0 && _serverMissingSeqs.Count == 0) { Debug.Log("All passed!"); } }