/************************************************************************/ /* 데이터를 파싱한다. * /************************************************************************/ 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); } }
/************************************************************************/ /* 비어있는 패킷을 생성한다. * /************************************************************************/ 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); }
public PacketDataElement(PacketDataType dataType, int length, string name, IMemberState memberState) { DataType = dataType; Length = length; Name = name; MemberState = memberState; }
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); } }
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) { }
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; }
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))); }
static bool EmptyDataType(PacketDataType data_type) { return(data_type < PacketDataType.File); }
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(); }
public PacketField(string name, PacketDataType dataType, object defaultValue) { this.name = name; this.dataType = dataType; this.defaultValue = defaultValue; }
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); }
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; }
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; }