#ifndef NET_SOCKET_SOCKET_INTERFACE #define NET_SOCKET_SOCKET_INTERFACE #include #include #include namespace cppnet { class Buffer; class Address; class CppNetBase; class EventActions; class Socket { public: Socket(): _sock(0) {} virtual ~Socket() {} void SetSocket(const uint64_t& sock) { _sock = sock; } uint64_t GetSocket() { return _sock; } void SetAddress(std::shared_ptr
& addr) { _addr = addr; } const std::shared_ptr
& GetAddress() const { return _addr; } void SetCppNetBase(std::shared_ptr base) { _cppnet_base = base; } const std::shared_ptr& GetCppNetBase() const { return _cppnet_base.lock(); } void SetEventActions(std::shared_ptr actions) { _event_actions = actions; } const std::shared_ptr& GetEventActions() const { return _event_actions; } protected: uint64_t _sock; std::shared_ptr
_addr; std::weak_ptr _cppnet_base; std::shared_ptr _event_actions; static thread_local std::unordered_map> __all_socket_map; }; thread_local std::unordered_map> Socket::__all_socket_map; } #endif