1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_SOCKET_SERVER_SOCKET_H_ 6 #define NET_SOCKET_SERVER_SOCKET_H_ 7 8 #include "base/memory/scoped_ptr.h" 9 #include "net/base/completion_callback.h" 10 #include "net/base/net_export.h" 11 12 namespace net { 13 14 class IPEndPoint; 15 class StreamSocket; 16 17 class NET_EXPORT ServerSocket { 18 public: 19 ServerSocket() { } 20 virtual ~ServerSocket() { } 21 22 // Bind the socket and start listening. Destroy the socket to stop 23 // listening. 24 virtual int Listen(const net::IPEndPoint& address, int backlog) = 0; 25 26 // Gets current address the socket is bound to. 27 virtual int GetLocalAddress(IPEndPoint* address) const = 0; 28 29 // Accept connection. Callback is called when new connection is 30 // accepted. 31 virtual int Accept(scoped_ptr<StreamSocket>* socket, 32 const CompletionCallback& callback) = 0; 33 34 private: 35 DISALLOW_COPY_AND_ASSIGN(ServerSocket); 36 }; 37 38 } // namespace net 39 40 #endif // NET_SOCKET_SERVER_SOCKET_H_ 41