AService.cs 938 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using System.Net.Sockets;
  3. namespace Base
  4. {
  5. public enum NetworkProtocol
  6. {
  7. TCP,
  8. UDP
  9. }
  10. public abstract class AService: IDisposable
  11. {
  12. /// <summary>
  13. /// 将函数调用加入IService线程
  14. /// </summary>
  15. /// <param name="action"></param>
  16. public abstract void Add(Action action);
  17. public abstract AChannel GetChannel(long id);
  18. public abstract AChannel GetChannel(string host, int port);
  19. public abstract AChannel GetChannel(string address);
  20. public abstract void Remove(long channelId);
  21. public abstract void Update();
  22. private readonly TimerManager timerManager = new TimerManager();
  23. public TimerManager Timer
  24. {
  25. get
  26. {
  27. return timerManager;
  28. }
  29. }
  30. public Action<long, SocketError> OnError;
  31. public void OnChannelError(long channelId, SocketError error)
  32. {
  33. this.OnError?.Invoke(channelId, error);
  34. this.Remove(channelId);
  35. }
  36. public abstract void Dispose();
  37. }
  38. }