SocketListenerBase.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using System.Text;
  7. using SuperSocket.SocketBase;
  8. using SuperSocket.SocketBase.Config;
  9. namespace SuperSocket.SocketEngine
  10. {
  11. abstract class SocketListenerBase : ISocketListener
  12. {
  13. public ListenerInfo Info { get; private set; }
  14. public IPEndPoint EndPoint
  15. {
  16. get { return Info.EndPoint; }
  17. }
  18. protected SocketListenerBase(ListenerInfo info)
  19. {
  20. Info = info;
  21. }
  22. /// <summary>
  23. /// Starts to listen
  24. /// </summary>
  25. /// <param name="config">The server config.</param>
  26. /// <returns></returns>
  27. public abstract bool Start(IServerConfig config);
  28. public abstract void Stop();
  29. public event NewClientAcceptHandler NewClientAccepted;
  30. public event ErrorHandler Error;
  31. protected void OnError(Exception e)
  32. {
  33. var handler = Error;
  34. if(handler != null)
  35. handler(this, e);
  36. }
  37. protected void OnError(string errorMessage)
  38. {
  39. OnError(new Exception(errorMessage));
  40. }
  41. protected virtual void OnNewClientAccepted(Socket socket, object state)
  42. {
  43. var handler = NewClientAccepted;
  44. if (handler != null)
  45. handler(this, socket, state);
  46. }
  47. protected void OnNewClientAcceptedAsync(Socket socket, object state)
  48. {
  49. var handler = NewClientAccepted;
  50. if (handler != null)
  51. handler.BeginInvoke(this, socket, state, null, null);
  52. }
  53. /// <summary>
  54. /// Occurs when [stopped].
  55. /// </summary>
  56. public event EventHandler Stopped;
  57. protected void OnStopped()
  58. {
  59. var handler = Stopped;
  60. if (handler != null)
  61. handler(this, EventArgs.Empty);
  62. }
  63. }
  64. }