public IEnumerator RawByteDispatcherAddRemoveListenerTest() { _dispatcher = new RawByteDispatcher(1, 0, (num, bytes) => { _receivedMsgNum = num; _receivedBytes = bytes; }); _dispatcher.AddListener(0); var dataPack = DataPackPool.GetDataPack(); var msgBytes = new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 1 }; dataPack.TryAddDataToDict("VersionNum", -1, -1, 1, typeof(int)); dataPack.TryAddDataToDict("MsgNum", -1, -1, 0, typeof(int)); dataPack.TryAddDataToDict("MsgBodu", 0, msgBytes.Length, null, null); dataPack.PrepareWriteAfter(msgBytes.Length); dataPack.Writer.Write(msgBytes); dataPack.Position = 0; try { _dispatcher.Input(dataPack); } catch (Exception e) { Assert.Fail(e.Message); } yield return(null); Assert.AreEqual(_receivedMsgNum, 0); Assert.AreEqual(_receivedBytes, new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 1 }); dataPack = DataPackPool.GetDataPack(); msgBytes = new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 0 }; dataPack.TryAddDataToDict("VersionNum", -1, -1, 1, typeof(int)); dataPack.TryAddDataToDict("MsgNum", -1, -1, 0, typeof(int)); dataPack.TryAddDataToDict("MsgBodu", 0, msgBytes.Length, null, null); dataPack.PrepareWriteAfter(msgBytes.Length); dataPack.Writer.Write(msgBytes); dataPack.Position = 0; _dispatcher.RemoveListener(0); try { _dispatcher.Input(dataPack); } catch (Exception e) { Assert.Fail(e.Message); } Assert.AreEqual(_receivedMsgNum, 0); Assert.AreEqual(_receivedBytes, new byte[] { 1, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 1 }); yield return(null); }
public IEnumerator KcpLinkUdpLayerSendBytesTest() { try { _kcp1 = new KcpLayer(0); _kcp2 = new KcpLayer(0); _kcp1.Recv += pack => { _kcp1Receive = Encoding.ASCII.GetString(pack.ReadAllBytes()); }; _kcp2.Recv += pack => { _kcp2Receive = Encoding.ASCII.GetString(pack.ReadAllBytes()); }; _udp1 = new UdpLayer(); _udp2 = new UdpLayer(); _kcp1.Link(_udp1); _kcp2.Link(_udp2); _udp1.Connect("127.0.0.1", 10001, 10000); yield return(null); _udp2.Connect("127.0.0.1", 10000, 10001); yield return(null); _kcp1.Send(DataPackPool.GetDataPack(0, Encoding.ASCII.GetBytes("i am kcp 1"))); yield return(null); _kcp2.Send(DataPackPool.GetDataPack(0, Encoding.ASCII.GetBytes("i am kcp 2"))); for (var i = 0; i < 50; i++) { yield return(null); _kcp1.Update(); _kcp2.Update(); _udp1.Update(); _udp2.Update(); } } finally { _kcp1.Dispose(); _kcp2.Dispose(); _udp1.Dispose(); _udp2.Dispose(); } Assert.AreEqual(_kcp1Receive, "i am kcp 2"); Assert.AreEqual(_kcp2Receive, "i am kcp 1"); }
public IEnumerator KcpLayerSendBytesTest() { try { _kcp1 = new KcpLayer(0); _kcp2 = new KcpLayer(0); _kcp1.Recv += pack => { _kcp1Receive = Encoding.ASCII.GetString(pack.ReadAllBytes()); }; _kcp2.Recv += pack => { _kcp2Receive = Encoding.ASCII.GetString(pack.ReadAllBytes()); }; _kcp1.OutPut += _kcp2.Input; _kcp2.OutPut += _kcp1.Input; yield return(null); _kcp1.Send(DataPackPool.GetDataPack(0, Encoding.ASCII.GetBytes("i am kcp 1"))); yield return(null); _kcp2.Send(DataPackPool.GetDataPack(0, Encoding.ASCII.GetBytes("i am kcp 2"))); for (var i = 0; i < 50; i++) { yield return(null); _kcp1.Update(); _kcp2.Update(); } } finally { _kcp1.Dispose(); _kcp2.Dispose(); } Assert.AreEqual(_kcp1Receive, "i am kcp 2"); Assert.AreEqual(_kcp2Receive, "i am kcp 1"); }
public IEnumerator TcpSendAndRecvTest() { try { _serverThread = new Thread(MyTcpListener.Start); _serverThread.Start(); _tcpLayer = new TcpLayer(); _tcpLayer.Connect("127.0.0.1", 13000, ok => { if (ok) { _tcpLayer.Send(DataPackPool.GetDataPack(0, Encoding.ASCII.GetBytes("abcdefg"))); } }); _tcpLayer.Recv += pack => { _tcpLayerRecv = Encoding.ASCII.GetString(pack.ReadAllBytes()); }; for (var i = 0; i < 50; i++) { _tcpLayer.Update(); yield return(null); } } finally { _tcpLayer.Dispose(); _serverThread.Interrupt(); _serverThread.Abort(); } Assert.AreEqual("ABCDEFG", _tcpLayerRecv); }
public IEnumerator CombineTest() { try { _dispatcher = new MessageDispatcher(1); _protobuf = new ProtobufLayer(12); _head = new HeadLayer(); _kcp = new KcpLayer(0); _udp = new UdpLayer(); _dispatcher.Link(_protobuf); _protobuf.Link(_head); _head.Link(_kcp); _kcp.Link(_udp); _dispatcher.AddListener <Person>(0, person => { _receivedObj = person; }); _head.BindMsgNumToType(0, typeof(Person)); _udp2 = new UdpLayer(); _udp2.Recv += pack => { var bytes = pack.ReadAllBytes(); var newPack = DataPackPool.GetDataPack(0, bytes); _udp2.Send(newPack); }; _udp.Connect("127.0.0.1", 10001, 10000); yield return(null); _udp2.Connect("127.0.0.1", 10000, 10001); yield return(null); var msgObj = new Person { Email = "*****@*****.**", Id = 1, Name = "Meow", Phone = new List <Person.PhoneNumber> { new Person.PhoneNumber { Number = "13512347890", Type = Person.PhoneType.HOME }, new Person.PhoneNumber { Number = "13823455678", Type = Person.PhoneType.MOBILE }, new Person.PhoneNumber { Number = "15867893456", Type = Person.PhoneType.WORK } } }; _dispatcher.Send(0, msgObj); yield return(null); for (var i = 0; i < 50; i++) { _kcp.Update(); _udp.Update(); _udp2.Update(); yield return(null); } } finally { _kcp.Dispose(); _udp.Dispose(); _udp2.Dispose(); } Assert.AreEqual("*****@*****.**", _receivedObj.Email); Assert.AreEqual(1, _receivedObj.Id); Assert.AreEqual("Meow", _receivedObj.Name); Assert.AreEqual("13512347890", _receivedObj.Phone[0].Number); Assert.AreEqual(Person.PhoneType.HOME, _receivedObj.Phone[0].Type); Assert.AreEqual("13823455678", _receivedObj.Phone[1].Number); Assert.AreEqual(Person.PhoneType.MOBILE, _receivedObj.Phone[1].Type); Assert.AreEqual("15867893456", _receivedObj.Phone[2].Number); Assert.AreEqual(Person.PhoneType.WORK, _receivedObj.Phone[2].Type); }