OLD | NEW |
| (Empty) |
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 IPEndPoint; | |
13 class NetLogWithSource; | |
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 // Switch to use non-blocking IO. Must be called right after construction and | |
38 // before other calls. | |
39 virtual void UseNonBlockingIO() = 0; | |
40 | |
41 // Requests that packets sent by this socket not be fragment, either locally | |
42 // by the host, or by routers (via the DF bit in the IPv4 packet header). | |
43 // May not be supported by all platforms. Returns a return a network error | |
44 // code if there was a problem, but the socket will still be usable. Can not | |
45 // return ERR_IO_PENDING. | |
46 virtual int SetDoNotFragment() = 0; | |
47 | |
48 // Gets the NetLog for this socket. | |
49 virtual const NetLogWithSource& NetLog() const = 0; | |
50 }; | |
51 | |
52 } // namespace net | |
53 | |
54 #endif // NET_UDP_DATAGRAM_SOCKET_H_ | |
OLD | NEW |