| 
									
										
										
										
											2019-08-05 20:47:30 +10:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <AK/IPv4Address.h>
 | 
					
						
							|  |  |  | #include <LibCore/CNotifier.h>
 | 
					
						
							|  |  |  | #include <LibCore/CObject.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CTCPSocket; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class CTCPServer : public CObject { | 
					
						
							|  |  |  |     C_OBJECT(CTCPServer) | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     virtual ~CTCPServer() override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool is_listening() const { return m_listening; } | 
					
						
							|  |  |  |     bool listen(const IPv4Address& address, u16 port); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-21 10:13:34 +02:00
										 |  |  |     ObjectPtr<CTCPSocket> accept(); | 
					
						
							| 
									
										
										
										
											2019-08-05 20:47:30 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Function<void()> on_ready_to_accept; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							| 
									
										
										
										
											2019-09-21 15:18:12 +02:00
										 |  |  |     explicit CTCPServer(CObject* parent = nullptr); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-05 20:47:30 +10:00
										 |  |  |     int m_fd { -1 }; | 
					
						
							|  |  |  |     bool m_listening { false }; | 
					
						
							| 
									
										
										
										
											2019-09-21 15:18:12 +02:00
										 |  |  |     ObjectPtr<CNotifier> m_notifier; | 
					
						
							| 
									
										
										
										
											2019-08-05 20:47:30 +10:00
										 |  |  | }; |