/// <summary> /// 根据字节数组构造封包读取工具类的实例 /// </summary> /// <param name="buffer">用于创建流的字节数组</param> public ClientPacketReader(byte[] buffer) { Stream = new MemoryStream(buffer, false); _reader = new BinaryReader(Stream, Encoding.ASCII); OperationCode = (ReceiveOperationCodes)ReadInt16(); Disposing += MyOnDisposing; }
/// <summary> /// 对特定操作码添加新的处理方法 /// </summary> /// <param name="operationCode"></param> /// <param name="handler"></param> public void Add(ReceiveOperationCodes operationCode, PacketHandler handler) { var code = (short)operationCode; if (_handlers[code] != null) { throw new InvalidOperationException($"Operation code {operationCode} has been registered!"); } _handlers[code] = handler; Count++; }
/// <summary> /// 根据操作码索引处理方法 /// </summary> /// <param name="operationCode"></param> /// <returns></returns> public PacketHandler this[ReceiveOperationCodes operationCode] => _handlers[(short)operationCode];