Index: net/socket/tcp_server_socket.h |
diff --git a/net/socket/tcp_server_socket.h b/net/socket/tcp_server_socket.h |
index 4970a150e8d64cf7b100996aa08b3462be904659..faff9ad826af3115ac25bb31e64706c9a290f926 100644 |
--- a/net/socket/tcp_server_socket.h |
+++ b/net/socket/tcp_server_socket.h |
@@ -5,21 +5,48 @@ |
#ifndef NET_SOCKET_TCP_SERVER_SOCKET_H_ |
#define NET_SOCKET_TCP_SERVER_SOCKET_H_ |
-#include "build/build_config.h" |
- |
-#if defined(OS_WIN) |
-#include "net/socket/tcp_server_socket_win.h" |
-#elif defined(OS_POSIX) |
-#include "net/socket/tcp_server_socket_libevent.h" |
-#endif |
+#include "base/basictypes.h" |
+#include "base/compiler_specific.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "net/base/ip_endpoint.h" |
+#include "net/base/net_export.h" |
+#include "net/base/net_log.h" |
+#include "net/socket/server_socket.h" |
+#include "net/socket/tcp_socket.h" |
namespace net { |
-#if defined(OS_WIN) |
-typedef TCPServerSocketWin TCPServerSocket; |
-#elif defined(OS_POSIX) |
-typedef TCPServerSocketLibevent TCPServerSocket; |
-#endif |
+class NET_EXPORT_PRIVATE TCPServerSocket : public ServerSocket { |
+ public: |
+ TCPServerSocket(NetLog* net_log, const NetLog::Source& source); |
+ virtual ~TCPServerSocket(); |
+ |
+ // net::ServerSocket implementation. |
+ virtual int Listen(const IPEndPoint& address, int backlog) OVERRIDE; |
+ virtual int GetLocalAddress(IPEndPoint* address) const OVERRIDE; |
+ virtual int Accept(scoped_ptr<StreamSocket>* socket, |
+ const CompletionCallback& callback) OVERRIDE; |
+ |
+ private: |
+ // Converts |accepted_socket_| and stores the result in |
+ // |output_accepted_socket|. |
+ // |output_accepted_socket| is untouched on failure. But |accepted_socket_| is |
+ // set to NULL in any case. |
+ int ConvertAcceptedSocket(int result, |
+ scoped_ptr<StreamSocket>* output_accepted_socket); |
+ // Completion callback for calling TCPSocket::Accept(). |
+ void OnAcceptCompleted(scoped_ptr<StreamSocket>* output_accepted_socket, |
+ const CompletionCallback& forward_callback, |
+ int result); |
+ |
+ TCPSocket socket_; |
+ |
+ scoped_ptr<TCPSocket> accepted_socket_; |
+ IPEndPoint accepted_address_; |
+ bool pending_accept_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TCPServerSocket); |
+}; |
} // namespace net |