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;
}
}
}