AChannel.cs 717 B

1234567891011121314151617181920212223242526272829303132333435
  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(
  20. byte[] buffer, byte channelID = 0, PacketFlags flags = PacketFlags.Reliable);
  21. /// <summary>
  22. /// 接收消息
  23. /// </summary>
  24. public abstract Task<byte[]> RecvAsync();
  25. public abstract Task<bool> DisconnnectAsync();
  26. public abstract string RemoteAddress { get; }
  27. public abstract void Dispose();
  28. }
  29. }