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_UDP_DATAGRAM_SOCKET_H_ 6 #define NET_UDP_DATAGRAM_SOCKET_H_ 7 8 #include "net/base/net_export.h" 9 10 namespace net { 11 12 class BoundNetLog; 13 class IPEndPoint; 14 15 // A datagram socket is an interface to a protocol which exchanges 16 // datagrams, like UDP. 17 class NET_EXPORT_PRIVATE DatagramSocket { 18 public: 19 // Type of source port binding to use. 20 enum BindType { 21 RANDOM_BIND, 22 DEFAULT_BIND, 23 }; 24 25 virtual ~DatagramSocket() {} 26 27 // Close the socket. 28 virtual void Close() = 0; 29 30 // Copy the remote udp address into |address| and return a network error code. 31 virtual int GetPeerAddress(IPEndPoint* address) const = 0; 32 33 // Copy the local udp address into |address| and return a network error code. 34 // (similar to getsockname) 35 virtual int GetLocalAddress(IPEndPoint* address) const = 0; 36 37 // Gets the NetLog for this socket. 38 virtual const BoundNetLog& NetLog() const = 0; 39 }; 40 41 } // namespace net 42 43 #endif // NET_UDP_DATAGRAM_SOCKET_H_ 44