Exemple #1
0
        /************************************************************************/

        /* 데이터를 파싱한다.
         * /************************************************************************/
        public PacketHeader(MemoryStream ms)
            : this()
        {
            // 기본 해더
            baseHeader = (byte)ms.ReadByte();

            // 인크립스
            encryt = (byte)ms.ReadByte();

            // RequestID
            var requestIDBytes = new byte[20];

            ms.Read(requestIDBytes, 0, requestIDBytes.Length);

            RequestID = Encoding.UTF8.GetString(requestIDBytes);

            var commandBuf = new byte[2];

            ms.Read(commandBuf, 0, commandBuf.Length);

            var ohCommand = BitConverter.ToInt16(commandBuf, 0);

            ohCommand = IPAddress.NetworkToHostOrder(ohCommand);

            // 커멘드 처리
            command = (PacketCommandType)ohCommand;

            // 데이터 타입 처리

            dataType = (PacketDataType)ms.ReadByte();

            // 성공 여부 처리
            Success = (PacketSuccessType)ms.ReadByte();
        }
 internal BaseRequestHandler this[PacketDataType dataType]
 {
     get
     {
         return _userEventsHandlers.SingleOrDefault(x => x.DataType == dataType);
     }
 }
Exemple #3
0
        /************************************************************************/

        /* 비어있는 패킷을 생성한다.
         * /************************************************************************/
        public static BasePacket createPacket(PacketDataType dataType)
        {
            BasePacket basePacket = null;

            switch (dataType)
            {
            case PacketDataType.None:
                basePacket = new NonePacketImp();
                break;

            case PacketDataType.KeyValue:
                basePacket = new KeyValuePacketImp();
                break;

            case PacketDataType.Binary:
                basePacket = new BinaryPacketImp();
                break;

            case PacketDataType.Xml:
                basePacket = new XmlPacketImp();
                break;
            }

            return(basePacket);
        }
Exemple #4
0
 public PacketDataElement(PacketDataType dataType, int length, string name, IMemberState memberState)
 {
     DataType    = dataType;
     Length      = length;
     Name        = name;
     MemberState = memberState;
 }
Exemple #5
0
        public Packet(short packetType, byte packetVersion, PacketDataType packetDataType, byte[] dataBody)
        {
            this.PacketLength   = dataBody.Length + PACKET_HEADER_SIZE;
            this.PacketType     = packetType;
            this.PacketVersion  = packetVersion;
            this.PacketDataType = packetDataType;

            this.PacketData = new byte[this.PacketLength];
            int offset = 0;

            // 패킷 사이즈 (전체)
            {
                var v = BitConverter.GetBytes(this.PacketLength);
                Buffer.BlockCopy(v, 0, this.PacketData, offset, v.Length);
                offset += v.Length;
            }

            // 패킷 타입 (전문 종류)
            {
                var v = BitConverter.GetBytes(this.PacketType);
                Buffer.BlockCopy(v, 0, this.PacketData, offset, v.Length);
                offset += v.Length;
            }

            // 패킷 버전
            this.PacketData[offset] = this.PacketVersion;
            offset++;

            // 패킷 데이터 타입
            this.PacketData[offset] = (byte)this.PacketDataType;
            offset++;

            // 패킷 본문
            Buffer.BlockCopy(dataBody, 0, this.PacketData, offset, dataBody.Length);
        }
 protected virtual void SendRespone(IEnumerable<IClient> clientsToSend, PacketData userData, PacketDataType dataType = PacketDataType.Unknown)
 {
     if (OnResponseDataCallBack != null)
     {
         var e = new ResponseDataEventArgs() { ClientsToSend = clientsToSend, UserDataArgs = new PacketContainer(dataType, userData) };
         OnResponseDataCallBack(this, e);
     }
 }
Exemple #7
0
 public Packet(PacketDataType data_type)
 {
     this.data_type = data_type;
 }
 public UsersRequestHandler(PacketDataType dataType, GetPriorityDictionary<int, IClient> onlinePlayers, IDataContext dataContext)
     : base(dataType, onlinePlayers, dataContext)
 {
 }
 public PingRequestHandler(PacketDataType dataType, GetPriorityDictionary<int, IClient> clients, IDataContext dataContext)
     : base(dataType, clients, dataContext)
 {
 }
Exemple #10
0
 public DataPacket(PacketDataType data_type, byte[] data)
     : base(data_type)
 {
     this.data = data;
 }
 protected BaseRequestHandler(PacketDataType dataType, GetPriorityDictionary<int, IClient> clients, IDataContext dataContext)
 {
     this.DataType = dataType;
     this.Clients = clients;
     this.DataContext = dataContext;
 }
Exemple #12
0
 public static async Task <bool> SendStringAsync(Stream stream, PacketDataType data_type, string s)
 {
     return(await WriteInt64Async(stream, (long)data_type) &&
            await WriteSizeAndBytesAsync(stream, Encoding.ASCII.GetBytes(s)));
 }
Exemple #13
0
 static bool EmptyDataType(PacketDataType data_type)
 {
     return(data_type < PacketDataType.File);
 }
Exemple #14
0
 public PacketHeader(PacketDataType dataType)
     : this()
 {
     this.dataType = dataType;
     Success       = PacketSuccessType.None;
 }
        internal static void DeconstructPacket(ref byte[] bytes, out PacketType packetType, out PacketDataType dataType, out short senderId)
        {
            bytes = LZ4Codec.Unwrap(bytes);
            MemoryStream ms = new MemoryStream(bytes);

            packetType = (PacketType)bytes[0];
            dataType   = (PacketDataType)bytes[1];
            senderId   = BytesToShort(bytes[2], bytes[3]);
            bytes      = bytes.Skip(4).ToArray();
        }
Exemple #16
0
 public PacketField(string name, PacketDataType dataType, object defaultValue)
 {
     this.name         = name;
     this.dataType     = dataType;
     this.defaultValue = defaultValue;
 }
Exemple #17
0
 public PacketField(string name, PacketDataType dataType)
 {
     this.name     = name;
     this.dataType = dataType;
 }
 protected override sealed void SendRespone(IEnumerable<IClient> clientsToSend, PacketData userData, PacketDataType dataType = PacketDataType.Unknown)
 {
     base.SendRespone(clientsToSend, userData, DataType);
 }
Exemple #19
0
 public static async Task <bool> SendEmptyAsync(Stream stream, PacketDataType data_type)
 {
     return(await WriteInt64Async(stream, (long)data_type));
 }
 public PacketContainer(PacketDataType dataType, PacketData data)
 {
     DataType = dataType;
     DataObject = data;
 }
Exemple #21
0
 public static async Task <bool> SendStreamAsync(Stream stream, PacketDataType data_type, Stream s)
 {
     return(await WriteInt64Async(stream, (long)data_type) &&
            await WriteSizeAndStreamAsync(stream, s));
 }
 protected BaseRequestHandler(PacketDataType dataType, IDataContext dataContext)
 {
     this.DataType = dataType;
     this.DataContext = dataContext;
 }