public static IRequest Serilize(byte[] rawRequest)
        {
            IRequest request;

            if (rawRequest.Length < 1)
            {
                return(null);
            }

            switch ((QRPacketType)rawRequest[0])
            {
            case QRPacketType.AvaliableCheck:
                request = new AvaliableRequest(rawRequest);
                break;

            //verify challenge to check game server is real or fake;
            //after verify we can add game server to server list
            case QRPacketType.Challenge:
                request = new ChallengeRequest(rawRequest);
                break;

            case QRPacketType.HeartBeat:
                request = new HeartBeatRequest(rawRequest);
                break;

            case QRPacketType.KeepAlive:
                request = new KeepAliveRequest(rawRequest);
                break;

            case QRPacketType.EchoResponse:
                request = new QRRequestBase(rawRequest);
                break;

            case QRPacketType.ClientMessageACK:
                request = new QRRequestBase(rawRequest);
                break;

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

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

            if (!(bool)request.Parse())
            {
                LogWriter.ToLog(LogEventLevel.Error, ErrorMessage.GetErrorMessage(QRErrorCode.Parse));
                return(null);
            }

            return(request);
        }
Пример #2
0
 public AddErrorResponse(QRRequestBase request) : base(request)
 {
     PacketType = QRPacketType.ADDError;
 }
 public KeepAliveResponse(QRRequestBase request)
     : base(request)
 {
 }
Пример #4
0
 public ClientMessageResponse(byte[] message, int messageKey, QRRequestBase request) : base(request)
 {
     Message    = message;
     MessageKey = messageKey;
     PacketType = QRPacketType.ClientMessage;
 }
Пример #5
0
 public ChallengeResponse(QRRequestBase request) : base(request)
 {
     PacketType = QRPacketType.Echo;
 }