AChannel.cs 897 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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
  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. long id = this.Id;
  37. base.Dispose();
  38. this.service.Remove(id);
  39. }
  40. }
  41. }