CTCPServer.h 572 B

123456789101112131415161718192021222324252627
  1. #pragma once
  2. #include <AK/IPv4Address.h>
  3. #include <LibCore/CNotifier.h>
  4. #include <LibCore/CObject.h>
  5. class CTCPSocket;
  6. class CTCPServer : public CObject {
  7. C_OBJECT(CTCPServer)
  8. public:
  9. virtual ~CTCPServer() override;
  10. bool is_listening() const { return m_listening; }
  11. bool listen(const IPv4Address& address, u16 port);
  12. ObjectPtr<CTCPSocket> accept();
  13. Function<void()> on_ready_to_accept;
  14. private:
  15. explicit CTCPServer(CObject* parent = nullptr);
  16. int m_fd { -1 };
  17. bool m_listening { false };
  18. ObjectPtr<CNotifier> m_notifier;
  19. };