AChannel.cs 855 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. using System;
  2. using System.Collections.Generic;
  3. namespace Base
  4. {
  5. [Flags]
  6. public enum PacketFlags
  7. {
  8. None = 0,
  9. Reliable = 1 << 0,
  10. Unsequenced = 1 << 1,
  11. NoAllocate = 1 << 2
  12. }
  13. public abstract class AChannel: Entity<AChannel>
  14. {
  15. protected AService service;
  16. protected AChannel(AService service)
  17. {
  18. this.service = service;
  19. }
  20. public abstract void ConnectAsync();
  21. /// <summary>
  22. /// 发送消息
  23. /// </summary>
  24. public abstract void Send(byte[] buffer, byte channelID = 0, PacketFlags flags = PacketFlags.Reliable);
  25. public abstract void Send(List<byte[]> buffers, byte channelID = 0, PacketFlags flags = PacketFlags.Reliable);
  26. /// <summary>
  27. /// 接收消息
  28. /// </summary>
  29. public abstract byte[] Recv();
  30. public override void Dispose()
  31. {
  32. if (this.Id == 0)
  33. {
  34. return;
  35. }
  36. base.Dispose();
  37. }
  38. }
  39. }