Exemple #1
0
 /// <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];