public static Datagram ResolveResponse(byte[] rawDatagram)
        {
            Datagram result = null;

            Datagram temp = new DatagramResponse();

            temp.Parse(rawDatagram);

            if (DatagramResolver.HeadTag.SequenceEqual(temp.Head))
            {
                if (temp.CommandCode.SequenceEqual(HeartbeatResponse.FixCommandCode) &&
                    rawDatagram.Length == HeartbeatResponse.Length)
                {
                    result = new HeartbeatResponse();
                }

                if (temp.CommandCode.SequenceEqual(LoginResponse.FixCommandCode) &&
                    rawDatagram.Length == LoginResponse.Length)
                {
                    result = new LoginResponse();
                }

                if (temp.CommandCode.SequenceEqual(BlacklistQueryResponse.FixCommandCode) &&
                    rawDatagram.Length == BlacklistQueryResponse.Length)
                {
                    result = new BlacklistQueryResponse();
                }

                if (temp.CommandCode.SequenceEqual(BlacklistDownloadResponse.FixCommandCode) &&
                    rawDatagram.Length == BlacklistDownloadResponse.Length)
                {
                    result = new BlacklistDownloadResponse();
                }

                if (temp.CommandCode.SequenceEqual(CurrencyResponse.FixCommandCode) &&
                    rawDatagram.Length == CurrencyResponse.Length)
                {
                    result = new CurrencyResponse();
                }

                if (result != null)
                {
                    result.Parse(rawDatagram);
                }
            }

            return(result);
        }
        public static Datagram ResolveResponse(byte[] rawDatagram)
        {
            Datagram result = null;

            Datagram temp = new DatagramResponse();

            temp.Parse(rawDatagram);

            if (DatagramResolver.HeadTag.SequenceEqual(temp.Head))
            {
                if (temp.CommandCode.SequenceEqual(HeartbeatResponse.FixCommandCode) &&
                    rawDatagram.Length == HeartbeatResponse.Length)
                {
                    result = new HeartbeatResponse();
                }

                if (temp.CommandCode.SequenceEqual(LoginResponse.FixCommandCode) &&
                    rawDatagram.Length == LoginResponse.Length)
                {
                    result = new LoginResponse();
                }

                if (temp.CommandCode.SequenceEqual(BlacklistQueryResponse.FixCommandCode) &&
                   rawDatagram.Length == BlacklistQueryResponse.Length)
                {
                    result = new BlacklistQueryResponse();
                }

                if (temp.CommandCode.SequenceEqual(BlacklistDownloadResponse.FixCommandCode) &&
                   rawDatagram.Length == BlacklistDownloadResponse.Length)
                {
                    result = new BlacklistDownloadResponse();
                }

                if (temp.CommandCode.SequenceEqual(CurrencyResponse.FixCommandCode) &&
                    rawDatagram.Length == CurrencyResponse.Length)
                {
                    result = new CurrencyResponse();
                }

                if (result != null)
                {
                    result.Parse(rawDatagram);
                }
            }

            return result;
        }