public void TestTransport(IAcceptor acc, IConnector conn, string address, string port) { acceptor = acc; connector = conn; acceptor.Start(); acceptor.NewTransportAccepted += SetupServer; acceptorThread = new Thread(RunAcceptor); acceptorThread.Name = "Acceptor"; acceptorThread.IsBackground = true; acceptorThread.Start(); client = connector.Connect(address, port, new Dictionary<string, string>()); Assert.IsNotNull(client); client.PacketReceived += ClientReceivedPacket; for (int i = 0; i < 10; i++) { sourceData[0] = (byte)i; Debug("client: sending packet#" + i + ": " + ByteUtils.DumpBytes(sourceData, 0, sourceData.Length)); client.SendPacket(new TransportPacket(sourceData)); if (failure.Length != 0) { Assert.Fail(failure); } Thread.Sleep(500); client.Update(); } Assert.AreEqual(10, serverPacketCount); Assert.AreEqual(10, clientPacketCount); try { client.SendPacket(new TransportPacket(new byte[client.MaximumPacketSize * 2])); Assert.Fail("Transport allowed sending packets exceeding its capacity"); } catch (ContractViolation) { /* expected */ } }
public void SendPacket(ITransport transport, TransportPacket packet) { try { packet.Retain(); SentPackets.Add(packet); transport.SendPacket(packet); } catch (TransportError e) { } }
protected override void TransportRejected(ITransport transport, IDictionary<string, string> capabilities) { TransportPacket tp = new TransportPacket(LWMCFv11.EncodeHeader(MessageType.System, (byte)SystemMessageType.IncompatibleVersion, 0)); transport.SendPacket(tp); base.TransportRejected(transport, capabilities); }