1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef NET_SOCKET_UDP_SERVER_SOCKET_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define NET_SOCKET_UDP_SERVER_SOCKET_H_ 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#pragma once 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "net/base/completion_callback.h" 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "net/udp/datagram_server_socket.h" 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "net/udp/udp_socket.h" 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsennamespace net { 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass IPEndPoint; 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass BoundNetLog; 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// A client socket that uses UDP as the transport layer. 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass UDPServerSocket : public DatagramServerSocket { 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public: 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen UDPServerSocket(net::NetLog* net_log, 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen const net::NetLog::Source& source); 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ~UDPServerSocket(); 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Implement DatagramServerSocket: 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual int Listen(const IPEndPoint& address); 27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual int RecvFrom(IOBuffer* buf, 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen int buf_len, 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen IPEndPoint* address, 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CompletionCallback* callback); 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual int SendTo(IOBuffer* buf, 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen int buf_len, 33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const IPEndPoint& address, 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen CompletionCallback* callback); 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual void Close(); 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual int GetPeerAddress(IPEndPoint* address) const; 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual int GetLocalAddress(IPEndPoint* address) const; 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private: 40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen UDPSocket socket_; 41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen DISALLOW_COPY_AND_ASSIGN(UDPServerSocket); 42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen} // namespace net 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // NET_SOCKET_UDP_SERVER_SOCKET_H_ 47