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 10namespace net { 11 12class BoundNetLog; 13class IPEndPoint; 14 15// A datagram socket is an interface to a protocol which exchanges 16// datagrams, like UDP. 17class 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