using System; using System.Collections.Generic; namespace Base { [Flags] public enum PacketFlags { None = 0, Reliable = 1 << 0, Unsequenced = 1 << 1, NoAllocate = 1 << 2 } public abstract class AChannel: IDisposable { public long Id { get; private set; } protected AService service; protected AChannel(AService service) { this.Id = IdGenerater.GenerateId(); this.service = service; } public abstract void ConnectAsync(); /// /// 发送消息 /// public abstract void Send(byte[] buffer, byte channelID = 0, PacketFlags flags = PacketFlags.Reliable); public abstract void Send(List buffers, byte channelID = 0, PacketFlags flags = PacketFlags.Reliable); /// /// 接收消息 /// public abstract byte[] Recv(); public virtual void Dispose() { if (this.Id == 0) { return; } this.service.Remove(this.Id); this.Id = 0; } } }