public static IRequest Serialize(byte[] rawRequest)
        {
            if (rawRequest.Length < 1)
            {
                return(null);
            }
            IRequest request;

            switch ((NatPacketType)rawRequest[7])
            {
            case NatPacketType.Init:
                request = new InitRequest(rawRequest);
                break;

            case NatPacketType.AddressCheck:
                request = new AddressRequest(rawRequest);
                break;

            case NatPacketType.NatifyRequest:
                request = new NatifyRequest(rawRequest);
                break;

            case NatPacketType.ConnectAck:
                request = null;
                break;

            case NatPacketType.Report:
                request = new ReportRequest(rawRequest);
                break;

            case NatPacketType.ErtAck:
                request = new ErtAckRequest(rawRequest);
                break;

            default:
                request = null;
                LogWriter.UnknownDataRecieved(rawRequest);
                break;
            }

            if (request == null)
            {
                return(null);
            }

            if (!(bool)request.Parse())
            {
                return(null);
            }

            return(request);
        }
        public void NatifyTest()
        {
            var rawRequest = new byte[] {
                0xfd, 0xfc, 0x1e, 0x66, 0x6a, 0xb2, 0x03,
                0x0c,
                0x00, 0x00, 0x03, 0x09,
                0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };
            var request = new NatifyRequest(rawRequest);
            var handler = new NatifyHandler(_client, request);

            handler.Handle();
        }
Beispiel #3
0
 public NatifyResponse(NatifyRequest request, EndPoint endPoint) : base(request, endPoint)
 {
     PacketType = NatPacketType.ErtTest;
 }
Beispiel #4
0
 public NatifyHandler(ISession session, IRequest request) : base(session, request)
 {
     _request = (NatifyRequest)request;
 }