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

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

Issue 1396423002: Move //mojo/services/network/public/interfaces to //mojo/services/network/interfaces. (Closed) Base URL: https://github.com/domokit/monet.git@master
Patch Set: Created 5 years, 2 months 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 | « mojo/services/network/udp_socket_wrapper.h ('k') | mojo/services/network/url_loader_impl.h » ('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 "network/public/cpp/udp_socket_wrapper.h" 5 #include "mojo/services/network/udp_socket_wrapper.h"
6 6
7 #include <assert.h> 7 #include "base/logging.h"
8
9 #include "third_party/mojo/src/mojo/public/cpp/environment/logging.h"
10 8
11 namespace mojo { 9 namespace mojo {
12 namespace { 10 namespace {
13 11
14 const uint32_t kDefaultReceiveQueueSlots = 32; 12 const uint32_t kDefaultReceiveQueueSlots = 32;
15 13
16 } // namespace 14 } // namespace
17 15
18 UDPSocketWrapper::NegotiateCallbackHandler::NegotiateCallbackHandler( 16 UDPSocketWrapper::NegotiateCallbackHandler::NegotiateCallbackHandler(
19 UDPSocketWrapper* delegate) 17 UDPSocketWrapper* delegate)
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 const ErrorCallback& callback) { 143 const ErrorCallback& callback) {
146 if (current_pending_sends_ >= max_pending_sends_) { 144 if (current_pending_sends_ >= max_pending_sends_) {
147 SendRequest* request = new SendRequest(); 145 SendRequest* request = new SendRequest();
148 request->dest_addr = dest_addr.Pass(); 146 request->dest_addr = dest_addr.Pass();
149 request->data = data.Pass(); 147 request->data = data.Pass();
150 request->callback = callback; 148 request->callback = callback;
151 send_requests_.push(request); 149 send_requests_.push(request);
152 return; 150 return;
153 } 151 }
154 152
155 MOJO_DCHECK(send_requests_.empty()); 153 DCHECK(send_requests_.empty());
156 current_pending_sends_++; 154 current_pending_sends_++;
157 socket_->SendTo(dest_addr.Pass(), data.Pass(), 155 socket_->SendTo(dest_addr.Pass(), data.Pass(),
158 ErrorCallback(static_cast<ErrorCallback::Runnable*>( 156 ErrorCallback(static_cast<ErrorCallback::Runnable*>(
159 new SendCallbackHandler(this, callback)))); 157 new SendCallbackHandler(this, callback))));
160 } 158 }
161 159
162 void UDPSocketWrapper::OnReceived(NetworkErrorPtr result, 160 void UDPSocketWrapper::OnReceived(NetworkErrorPtr result,
163 NetAddressPtr src_addr, 161 NetAddressPtr src_addr,
164 Array<uint8_t> data) { 162 Array<uint8_t> data) {
165 if (!receive_requests_.empty()) { 163 if (!receive_requests_.empty()) {
166 // The cache should be empty if there are user requests waiting for data. 164 // The cache should be empty if there are user requests waiting for data.
167 MOJO_DCHECK(receive_queue_.empty()); 165 DCHECK(receive_queue_.empty());
168 166
169 socket_->ReceiveMore(1); 167 socket_->ReceiveMore(1);
170 168
171 ReceiveCallback callback = receive_requests_.front(); 169 ReceiveCallback callback = receive_requests_.front();
172 receive_requests_.pop(); 170 receive_requests_.pop();
173 171
174 callback.Run(result.Pass(), src_addr.Pass(), data.Pass()); 172 callback.Run(result.Pass(), src_addr.Pass(), data.Pass());
175 return; 173 return;
176 } 174 }
177 175
178 MOJO_DCHECK(receive_queue_.size() < max_receive_queue_size_); 176 DCHECK_LT(receive_queue_.size(), max_receive_queue_size_);
179 ReceivedData* received_data = new ReceivedData(); 177 ReceivedData* received_data = new ReceivedData();
180 received_data->result = result.Pass(); 178 received_data->result = result.Pass();
181 received_data->src_addr = src_addr.Pass(); 179 received_data->src_addr = src_addr.Pass();
182 received_data->data = data.Pass(); 180 received_data->data = data.Pass();
183 receive_queue_.push(received_data); 181 receive_queue_.push(received_data);
184 } 182 }
185 183
186 void UDPSocketWrapper::Initialize(uint32_t requested_max_pending_sends) { 184 void UDPSocketWrapper::Initialize(uint32_t requested_max_pending_sends) {
187 socket_->NegotiateMaxPendingSendRequests( 185 socket_->NegotiateMaxPendingSendRequests(
188 requested_max_pending_sends, 186 requested_max_pending_sends,
189 Callback<void(uint32_t)>( 187 Callback<void(uint32_t)>(
190 static_cast< Callback<void(uint32_t)>::Runnable*>( 188 static_cast< Callback<void(uint32_t)>::Runnable*>(
191 new NegotiateCallbackHandler(this)))); 189 new NegotiateCallbackHandler(this))));
192 } 190 }
193 191
194 void UDPSocketWrapper::OnNegotiateMaxPendingSendRequestsCompleted( 192 void UDPSocketWrapper::OnNegotiateMaxPendingSendRequestsCompleted(
195 uint32_t actual_size) { 193 uint32_t actual_size) {
196 MOJO_DCHECK(max_pending_sends_ == 1); 194 DCHECK_EQ(max_pending_sends_, 1u);
197 195
198 if (actual_size == 0) { 196 if (actual_size == 0) {
199 assert(false); 197 NOTREACHED();
200 return; 198 return;
201 } 199 }
202 200
203 max_pending_sends_ = actual_size; 201 max_pending_sends_ = actual_size;
204 202
205 while (ProcessNextSendRequest()); 203 while (ProcessNextSendRequest());
206 } 204 }
207 205
208 void UDPSocketWrapper::OnSendToCompleted( 206 void UDPSocketWrapper::OnSendToCompleted(
209 NetworkErrorPtr result, 207 NetworkErrorPtr result,
(...skipping 23 matching lines...) Expand all
233 return true; 231 return true;
234 } 232 }
235 233
236 void UDPSocketWrapper::StartReceivingData( 234 void UDPSocketWrapper::StartReceivingData(
237 InterfaceRequest<UDPSocketReceiver> request) { 235 InterfaceRequest<UDPSocketReceiver> request) {
238 binding_.Bind(request.Pass()); 236 binding_.Bind(request.Pass());
239 socket_->ReceiveMore(max_receive_queue_size_); 237 socket_->ReceiveMore(max_receive_queue_size_);
240 } 238 }
241 239
242 } // namespace mojo 240 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/network/udp_socket_wrapper.h ('k') | mojo/services/network/url_loader_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698