/net/EventHandler.h

https://github.com/caozhiyi/CppNet · C Header · 63 lines · 51 code · 12 blank · 0 comment · 0 complexity · 98d0ded9c0fc2b836064a716ee71fed0 MD5 · raw file

  1. #ifndef HEADER_NET_EVENTHANDLER
  2. #define HEADER_NET_EVENTHANDLER
  3. #include <memory>
  4. #include <atomic>
  5. #include "CppDefine.h"
  6. #include "SocketImpl.h"
  7. #include "AcceptSocket.h"
  8. #include "PoolSharedPtr.h"
  9. #define INVALID_TIMER -1
  10. namespace cppnet {
  11. enum EVENT_FLAG {
  12. EVENT_READ = 0x0001, // read event
  13. EVENT_WRITE = 0x0002, // write event
  14. EVENT_ACCEPT = 0x0004, // accept event
  15. EVENT_TIMER = 0x0008, // timer event
  16. EVENT_CONNECT = 0x0010, // connect event
  17. EVENT_DISCONNECT = 0x0020, // disconnect event
  18. EVENT_TIMER_ALWAYS = 0x0040, // timer always check
  19. ERR_CONNECT_BREAK = 0x0080, // connect break
  20. ERR_CONNECT_FAILED = 0x0100, // connect faild
  21. ERR_CONNECT_CLOSE = 0x0200, // connect close
  22. ERR_TIME_OUT = 0x0400, // time out
  23. EVENT_ERR_MAX = 0x0800 // max event flag define
  24. };
  25. class Cevent {
  26. public:
  27. void* _data = nullptr;
  28. int _event_flag_set = 0;
  29. };
  30. struct CTimerEvent {
  31. int _event_flag;
  32. uint64_t _timer_id;
  33. unsigned int _interval;
  34. void* _timer_param;
  35. std::function<void(void*)> _timer_call_back; // only timer event
  36. base::CMemWeakPtr<CEventHandler> _event;
  37. };
  38. class CBuffer;
  39. class CEventHandler : public Cevent {
  40. public:
  41. base::CMemSharePtr<base::CBuffer> _buffer;
  42. base::CMemWeakPtr<CSocketImpl> _client_socket;
  43. int _off_set; //read or write size
  44. };
  45. class CAcceptEventHandler : public Cevent {
  46. public:
  47. base::CMemSharePtr<CSocketImpl> _client_socket;
  48. base::CMemSharePtr<CAcceptSocket> _accept_socket = nullptr;
  49. };
  50. }
  51. #endif