Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Side by Side Diff: net/tools/quic/quic_socket_utils.h

Issue 761903003: Update from https://crrev.com/306655 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/tools/quic/quic_server_session_test.cc ('k') | net/tools/quic/quic_socket_utils.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Some socket related helper methods for quic. 5 // Some socket related helper methods for quic.
6 6
7 #ifndef NET_TOOLS_QUIC_QUIC_SOCKET_UTILS_H_ 7 #ifndef NET_TOOLS_QUIC_QUIC_SOCKET_UTILS_H_
8 #define NET_TOOLS_QUIC_QUIC_SOCKET_UTILS_H_ 8 #define NET_TOOLS_QUIC_QUIC_SOCKET_UTILS_H_
9 9
10 #include <stddef.h> 10 #include <stddef.h>
11 #include <sys/socket.h> 11 #include <sys/socket.h>
12 #include <string> 12 #include <string>
13 13
14 #include "base/basictypes.h" 14 #include "base/basictypes.h"
15 #include "net/base/ip_endpoint.h" 15 #include "net/base/ip_endpoint.h"
16 #include "net/quic/quic_bandwidth.h"
16 #include "net/quic/quic_types.h" 17 #include "net/quic/quic_types.h"
17 18
18 namespace net { 19 namespace net {
19 namespace tools { 20 namespace tools {
20 21
21 class QuicSocketUtils { 22 class QuicSocketUtils {
22 public: 23 public:
23 // If the msghdr contains IP_PKTINFO or IPV6_PKTINFO, this will return the 24 // If the msghdr contains IP_PKTINFO or IPV6_PKTINFO, this will return the
24 // IPAddressNumber in that header. Returns an uninitialized IPAddress on 25 // IPAddressNumber in that header. Returns an uninitialized IPAddress on
25 // failure. 26 // failure.
26 static IPAddressNumber GetAddressFromMsghdr(struct msghdr *hdr); 27 static IPAddressNumber GetAddressFromMsghdr(struct msghdr *hdr);
27 28
28 // If the msghdr contains an SO_RXQ_OVFL entry, this will set dropped_packets 29 // If the msghdr contains an SO_RXQ_OVFL entry, this will set dropped_packets
29 // to the correct value and return true. Otherwise it will return false. 30 // to the correct value and return true. Otherwise it will return false.
30 static bool GetOverflowFromMsghdr(struct msghdr *hdr, 31 static bool GetOverflowFromMsghdr(struct msghdr *hdr,
31 uint32 *dropped_packets); 32 QuicPacketCount *dropped_packets);
32 33
33 // Sets either IP_PKTINFO or IPV6_PKTINFO on the socket, based on 34 // Sets either IP_PKTINFO or IPV6_PKTINFO on the socket, based on
34 // address_family. Returns the return code from setsockopt. 35 // address_family. Returns the return code from setsockopt.
35 static int SetGetAddressInfo(int fd, int address_family); 36 static int SetGetAddressInfo(int fd, int address_family);
36 37
37 // Sets the send buffer size to |size| and returns false if it fails. 38 // Sets the send buffer size to |size| and returns false if it fails.
38 static bool SetSendBufferSize(int fd, size_t size); 39 static bool SetSendBufferSize(int fd, size_t size);
39 40
40 // Sets the receive buffer size to |size| and returns false if it fails. 41 // Sets the receive buffer size to |size| and returns false if it fails.
41 static bool SetReceiveBufferSize(int fd, size_t size); 42 static bool SetReceiveBufferSize(int fd, size_t size);
42 43
43 // Reads buf_len from the socket. If reading is successful, returns bytes 44 // Reads buf_len from the socket. If reading is successful, returns bytes
44 // read and sets peer_address to the peer address. Otherwise returns -1. 45 // read and sets peer_address to the peer address. Otherwise returns -1.
45 // 46 //
46 // If dropped_packets is non-null, it will be set to the number of packets 47 // If dropped_packets is non-null, it will be set to the number of packets
47 // dropped on the socket since the socket was created, assuming the kernel 48 // dropped on the socket since the socket was created, assuming the kernel
48 // supports this feature. 49 // supports this feature.
49 // 50 //
50 // If self_address is non-null, it will be set to the address the peer sent 51 // If self_address is non-null, it will be set to the address the peer sent
51 // packets to, assuming a packet was read. 52 // packets to, assuming a packet was read.
52 static int ReadPacket(int fd, 53 static int ReadPacket(int fd,
53 char* buffer, 54 char* buffer,
54 size_t buf_len, 55 size_t buf_len,
55 uint32* dropped_packets, 56 QuicPacketCount* dropped_packets,
56 IPAddressNumber* self_address, 57 IPAddressNumber* self_address,
57 IPEndPoint* peer_address); 58 IPEndPoint* peer_address);
58 59
59 // Writes buf_len to the socket. If writing is successful, sets the result's 60 // Writes buf_len to the socket. If writing is successful, sets the result's
60 // status to WRITE_STATUS_OK and sets bytes_written. Otherwise sets the 61 // status to WRITE_STATUS_OK and sets bytes_written. Otherwise sets the
61 // result's status to WRITE_STATUS_BLOCKED or WRITE_STATUS_ERROR and sets 62 // result's status to WRITE_STATUS_BLOCKED or WRITE_STATUS_ERROR and sets
62 // error_code to errno. 63 // error_code to errno.
63 static WriteResult WritePacket(int fd, 64 static WriteResult WritePacket(int fd,
64 const char* buffer, 65 const char* buffer,
65 size_t buf_len, 66 size_t buf_len,
66 const IPAddressNumber& self_address, 67 const IPAddressNumber& self_address,
67 const IPEndPoint& peer_address); 68 const IPEndPoint& peer_address);
68 69
69 // A helper for WritePacket which fills in the cmsg with the supplied self 70 // A helper for WritePacket which fills in the cmsg with the supplied self
70 // address. 71 // address.
71 // Returns the length of the packet info structure used. 72 // Returns the length of the packet info structure used.
72 static size_t SetIpInfoInCmsg(const IPAddressNumber& self_address, 73 static size_t SetIpInfoInCmsg(const IPAddressNumber& self_address,
73 cmsghdr* cmsg); 74 cmsghdr* cmsg);
74 75
75 private: 76 private:
76 DISALLOW_COPY_AND_ASSIGN(QuicSocketUtils); 77 DISALLOW_COPY_AND_ASSIGN(QuicSocketUtils);
77 }; 78 };
78 79
79 } // namespace tools 80 } // namespace tools
80 } // namespace net 81 } // namespace net
81 82
82 #endif // NET_TOOLS_QUIC_QUIC_SOCKET_UTILS_H_ 83 #endif // NET_TOOLS_QUIC_QUIC_SOCKET_UTILS_H_
OLDNEW
« no previous file with comments | « net/tools/quic/quic_server_session_test.cc ('k') | net/tools/quic/quic_socket_utils.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698