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

Side by Side Diff: mojo/services/network/udp_socket_impl.cc

Issue 689153007: Script to upload prebuilt network service (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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 | « no previous file | mojo/services/network/udp_socket_unittest.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "mojo/services/network/udp_socket_impl.h" 5 #include "mojo/services/network/udp_socket_impl.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 } 75 }
76 76
77 net::IPEndPoint bound_ip_end_point; 77 net::IPEndPoint bound_ip_end_point;
78 NetAddressPtr bound_addr; 78 NetAddressPtr bound_addr;
79 net_result = socket_.GetLocalAddress(&bound_ip_end_point); 79 net_result = socket_.GetLocalAddress(&bound_ip_end_point);
80 if (net_result == net::OK) 80 if (net_result == net::OK)
81 bound_addr = NetAddress::From(bound_ip_end_point); 81 bound_addr = NetAddress::From(bound_ip_end_point);
82 82
83 bound_ = true; 83 bound_ = true;
84 callback.Run(MakeNetworkError(net::OK), bound_addr.Pass()); 84 callback.Run(MakeNetworkError(net::OK), bound_addr.Pass());
85
86 if (remaining_recv_slots_ > 0) {
87 DCHECK(!recvfrom_buffer_.get());
88 DoRecvFrom();
89 }
85 } 90 }
86 91
87 void UDPSocketImpl::SetSendBufferSize( 92 void UDPSocketImpl::SetSendBufferSize(
88 uint32_t size, 93 uint32_t size,
89 const Callback<void(NetworkErrorPtr)>& callback) { 94 const Callback<void(NetworkErrorPtr)>& callback) {
90 if (!bound_) { 95 if (!bound_) {
91 callback.Run(MakeNetworkError(net::ERR_FAILED)); 96 callback.Run(MakeNetworkError(net::ERR_FAILED));
92 return; 97 return;
93 } 98 }
94 99
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 pending_send_requests_.resize(max_pending_send_requests_); 136 pending_send_requests_.resize(max_pending_send_requests_);
132 for (auto& discarded_request : discarded_requests) { 137 for (auto& discarded_request : discarded_requests) {
133 discarded_request->callback.Run( 138 discarded_request->callback.Run(
134 MakeNetworkError(net::ERR_INSUFFICIENT_RESOURCES)); 139 MakeNetworkError(net::ERR_INSUFFICIENT_RESOURCES));
135 delete discarded_request; 140 delete discarded_request;
136 } 141 }
137 } 142 }
138 } 143 }
139 144
140 void UDPSocketImpl::ReceiveMore(uint32_t datagram_number) { 145 void UDPSocketImpl::ReceiveMore(uint32_t datagram_number) {
141 if (!bound_ || datagram_number == 0) 146 if (datagram_number == 0)
142 return; 147 return;
143 if (std::numeric_limits<size_t>::max() - remaining_recv_slots_ < 148 if (std::numeric_limits<size_t>::max() - remaining_recv_slots_ <
144 datagram_number) { 149 datagram_number) {
145 return; 150 return;
146 } 151 }
147 152
148 remaining_recv_slots_ += datagram_number; 153 remaining_recv_slots_ += datagram_number;
149 154
150 if (!recvfrom_buffer_.get()) { 155 if (bound_ && !recvfrom_buffer_.get()) {
151 DCHECK_EQ(datagram_number, remaining_recv_slots_); 156 DCHECK_EQ(datagram_number, remaining_recv_slots_);
152 DoRecvFrom(); 157 DoRecvFrom();
153 } 158 }
154 } 159 }
155 160
156 void UDPSocketImpl::SendTo(NetAddressPtr dest_addr, 161 void UDPSocketImpl::SendTo(NetAddressPtr dest_addr,
157 Array<uint8_t> data, 162 Array<uint8_t> data,
158 const Callback<void(NetworkErrorPtr)>& callback) { 163 const Callback<void(NetworkErrorPtr)>& callback) {
159 if (!bound_) { 164 if (!bound_) {
160 callback.Run(MakeNetworkError(net::ERR_FAILED)); 165 callback.Run(MakeNetworkError(net::ERR_FAILED));
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 if (pending_send_requests_.empty()) 271 if (pending_send_requests_.empty())
267 return; 272 return;
268 273
269 scoped_ptr<PendingSendRequest> request(pending_send_requests_.front()); 274 scoped_ptr<PendingSendRequest> request(pending_send_requests_.front());
270 pending_send_requests_.pop_front(); 275 pending_send_requests_.pop_front();
271 276
272 DoSendTo(request->addr.Pass(), request->data.Pass(), request->callback); 277 DoSendTo(request->addr.Pass(), request->data.Pass(), request->callback);
273 } 278 }
274 279
275 } // namespace mojo 280 } // namespace mojo
OLDNEW
« no previous file with comments | « no previous file | mojo/services/network/udp_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698