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: Entity
{
protected AService service;
protected AChannel(AService service)
{
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 override void Dispose()
{
if (this.Id == 0)
{
return;
}
long id = this.Id;
base.Dispose();
this.service.Remove(id);
}
}
}