AChannel.cs 711 B

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.Threading.Tasks;
  3. using Common.Base;
  4. namespace Common.Network
  5. {
  6. [Flags]
  7. public enum PacketFlags
  8. {
  9. None = 0,
  10. Reliable = 1 << 0,
  11. Unsequenced = 1 << 1,
  12. NoAllocate = 1 << 2
  13. }
  14. public abstract class AChannel: Entity<AChannel>, IDisposable
  15. {
  16. /// <summary>
  17. /// 发送消息
  18. /// </summary>
  19. public abstract void SendAsync(byte[] buffer, byte channelID = 0, PacketFlags flags = PacketFlags.Reliable);
  20. /// <summary>
  21. /// 接收消息
  22. /// </summary>
  23. public abstract Task<byte[]> RecvAsync();
  24. public abstract Task<bool> DisconnnectAsync();
  25. public abstract string RemoteAddress { get; }
  26. public abstract void Dispose();
  27. }
  28. }