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

Side by Side Diff: webrtc/p2p/stunprober/stunprober.cc

Issue 1335923002: Add RTC_ prefix to (D)CHECKs and related macros. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. Created 5 years, 3 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
OLDNEW
1 /* 1 /*
2 * Copyright 2015 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2015 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 socket_->Close(); 123 socket_->Close();
124 } 124 }
125 for (auto req : requests_) { 125 for (auto req : requests_) {
126 if (req) { 126 if (req) {
127 delete req; 127 delete req;
128 } 128 }
129 } 129 }
130 } 130 }
131 131
132 void StunProber::Requester::SendStunRequest() { 132 void StunProber::Requester::SendStunRequest() {
133 DCHECK(thread_checker_.CalledOnValidThread()); 133 RTC_DCHECK(thread_checker_.CalledOnValidThread());
134 requests_.push_back(new Request()); 134 requests_.push_back(new Request());
135 Request& request = *(requests_.back()); 135 Request& request = *(requests_.back());
136 cricket::StunMessage message; 136 cricket::StunMessage message;
137 137
138 // Random transaction ID, STUN_BINDING_REQUEST 138 // Random transaction ID, STUN_BINDING_REQUEST
139 message.SetTransactionID( 139 message.SetTransactionID(
140 rtc::CreateRandomString(cricket::kStunTransactionIdLength)); 140 rtc::CreateRandomString(cricket::kStunTransactionIdLength));
141 message.SetType(cricket::STUN_BINDING_REQUEST); 141 message.SetType(cricket::STUN_BINDING_REQUEST);
142 142
143 rtc::scoped_ptr<rtc::ByteBuffer> request_packet( 143 rtc::scoped_ptr<rtc::ByteBuffer> request_packet(
(...skipping 13 matching lines...) Expand all
157 int rv = socket_->SendTo(const_cast<char*>(request_packet->Data()), 157 int rv = socket_->SendTo(const_cast<char*>(request_packet->Data()),
158 request_packet->Length(), addr, options); 158 request_packet->Length(), addr, options);
159 if (rv < 0) { 159 if (rv < 0) {
160 prober_->End(WRITE_FAILED); 160 prober_->End(WRITE_FAILED);
161 return; 161 return;
162 } 162 }
163 163
164 request.sent_time_ms = rtc::Time(); 164 request.sent_time_ms = rtc::Time();
165 165
166 num_request_sent_++; 166 num_request_sent_++;
167 DCHECK(static_cast<size_t>(num_request_sent_) <= server_ips_.size()); 167 RTC_DCHECK(static_cast<size_t>(num_request_sent_) <= server_ips_.size());
168 } 168 }
169 169
170 void StunProber::Requester::Request::ProcessResponse(const char* buf, 170 void StunProber::Requester::Request::ProcessResponse(const char* buf,
171 size_t buf_len) { 171 size_t buf_len) {
172 int64 now = rtc::Time(); 172 int64 now = rtc::Time();
173 rtc::ByteBuffer message(buf, buf_len); 173 rtc::ByteBuffer message(buf, buf_len);
174 cricket::StunMessage stun_response; 174 cricket::StunMessage stun_response;
175 if (!stun_response.Read(&message)) { 175 if (!stun_response.Read(&message)) {
176 // Invalid or incomplete STUN packet. 176 // Invalid or incomplete STUN packet.
177 received_time_ms = 0; 177 received_time_ms = 0;
(...skipping 17 matching lines...) Expand all
195 195
196 srflx_addr = addr_attr->GetAddress(); 196 srflx_addr = addr_attr->GetAddress();
197 } 197 }
198 198
199 void StunProber::Requester::OnStunResponseReceived( 199 void StunProber::Requester::OnStunResponseReceived(
200 rtc::AsyncPacketSocket* socket, 200 rtc::AsyncPacketSocket* socket,
201 const char* buf, 201 const char* buf,
202 size_t size, 202 size_t size,
203 const rtc::SocketAddress& addr, 203 const rtc::SocketAddress& addr,
204 const rtc::PacketTime& time) { 204 const rtc::PacketTime& time) {
205 DCHECK(thread_checker_.CalledOnValidThread()); 205 RTC_DCHECK(thread_checker_.CalledOnValidThread());
206 DCHECK(socket_); 206 RTC_DCHECK(socket_);
207 Request* request = GetRequestByAddress(addr.ipaddr()); 207 Request* request = GetRequestByAddress(addr.ipaddr());
208 if (!request) { 208 if (!request) {
209 // Something is wrong, finish the test. 209 // Something is wrong, finish the test.
210 prober_->End(GENERIC_FAILURE); 210 prober_->End(GENERIC_FAILURE);
211 return; 211 return;
212 } 212 }
213 213
214 num_response_received_++; 214 num_response_received_++;
215 request->ProcessResponse(buf, size); 215 request->ProcessResponse(buf, size);
216 } 216 }
217 217
218 StunProber::Requester::Request* StunProber::Requester::GetRequestByAddress( 218 StunProber::Requester::Request* StunProber::Requester::GetRequestByAddress(
219 const rtc::IPAddress& ipaddr) { 219 const rtc::IPAddress& ipaddr) {
220 DCHECK(thread_checker_.CalledOnValidThread()); 220 RTC_DCHECK(thread_checker_.CalledOnValidThread());
221 for (auto request : requests_) { 221 for (auto request : requests_) {
222 if (request->server_addr == ipaddr) { 222 if (request->server_addr == ipaddr) {
223 return request; 223 return request;
224 } 224 }
225 } 225 }
226 226
227 return nullptr; 227 return nullptr;
228 } 228 }
229 229
230 StunProber::StunProber(rtc::PacketSocketFactory* socket_factory, 230 StunProber::StunProber(rtc::PacketSocketFactory* socket_factory,
(...skipping 17 matching lines...) Expand all
248 } 248 }
249 } 249 }
250 } 250 }
251 251
252 bool StunProber::Start(const std::vector<rtc::SocketAddress>& servers, 252 bool StunProber::Start(const std::vector<rtc::SocketAddress>& servers,
253 bool shared_socket_mode, 253 bool shared_socket_mode,
254 int interval_ms, 254 int interval_ms,
255 int num_request_per_ip, 255 int num_request_per_ip,
256 int timeout_ms, 256 int timeout_ms,
257 const AsyncCallback callback) { 257 const AsyncCallback callback) {
258 DCHECK(thread_checker_.CalledOnValidThread()); 258 RTC_DCHECK(thread_checker_.CalledOnValidThread());
259 interval_ms_ = interval_ms; 259 interval_ms_ = interval_ms;
260 shared_socket_mode_ = shared_socket_mode; 260 shared_socket_mode_ = shared_socket_mode;
261 261
262 requests_per_ip_ = num_request_per_ip; 262 requests_per_ip_ = num_request_per_ip;
263 if (requests_per_ip_ == 0 || servers.size() == 0) { 263 if (requests_per_ip_ == 0 || servers.size() == 0) {
264 return false; 264 return false;
265 } 265 }
266 266
267 timeout_ms_ = timeout_ms; 267 timeout_ms_ = timeout_ms;
268 servers_ = servers; 268 servers_ = servers;
(...skipping 14 matching lines...) Expand all
283 283
284 void StunProber::OnSocketReady(rtc::AsyncPacketSocket* socket, 284 void StunProber::OnSocketReady(rtc::AsyncPacketSocket* socket,
285 const rtc::SocketAddress& addr) { 285 const rtc::SocketAddress& addr) {
286 total_ready_sockets_++; 286 total_ready_sockets_++;
287 if (total_ready_sockets_ == total_socket_required()) { 287 if (total_ready_sockets_ == total_socket_required()) {
288 MaybeScheduleStunRequests(); 288 MaybeScheduleStunRequests();
289 } 289 }
290 } 290 }
291 291
292 void StunProber::OnServerResolved(rtc::AsyncResolverInterface* resolver) { 292 void StunProber::OnServerResolved(rtc::AsyncResolverInterface* resolver) {
293 DCHECK(thread_checker_.CalledOnValidThread()); 293 RTC_DCHECK(thread_checker_.CalledOnValidThread());
294 294
295 if (resolver->GetError() == 0) { 295 if (resolver->GetError() == 0) {
296 rtc::SocketAddress addr(resolver->address().ipaddr(), 296 rtc::SocketAddress addr(resolver->address().ipaddr(),
297 resolver->address().port()); 297 resolver->address().port());
298 all_servers_addrs_.push_back(addr); 298 all_servers_addrs_.push_back(addr);
299 } 299 }
300 300
301 // Deletion of AsyncResolverInterface can't be done in OnResolveResult which 301 // Deletion of AsyncResolverInterface can't be done in OnResolveResult which
302 // handles SignalDone. 302 // handles SignalDone.
303 invoker_.AsyncInvoke<void>( 303 invoker_.AsyncInvoke<void>(
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 if (socket->GetState() == rtc::AsyncPacketSocket::STATE_BINDING) { 336 if (socket->GetState() == rtc::AsyncPacketSocket::STATE_BINDING) {
337 socket->SignalAddressReady.connect(this, &StunProber::OnSocketReady); 337 socket->SignalAddressReady.connect(this, &StunProber::OnSocketReady);
338 } else { 338 } else {
339 OnSocketReady(socket.get(), rtc::SocketAddress(INADDR_ANY, 0)); 339 OnSocketReady(socket.get(), rtc::SocketAddress(INADDR_ANY, 0));
340 } 340 }
341 sockets_.push_back(socket.release()); 341 sockets_.push_back(socket.release());
342 } 342 }
343 } 343 }
344 344
345 StunProber::Requester* StunProber::CreateRequester() { 345 StunProber::Requester* StunProber::CreateRequester() {
346 DCHECK(thread_checker_.CalledOnValidThread()); 346 RTC_DCHECK(thread_checker_.CalledOnValidThread());
347 if (!sockets_.size()) { 347 if (!sockets_.size()) {
348 return nullptr; 348 return nullptr;
349 } 349 }
350 StunProber::Requester* requester; 350 StunProber::Requester* requester;
351 if (shared_socket_mode_) { 351 if (shared_socket_mode_) {
352 requester = new Requester(this, sockets_.back(), all_servers_addrs_); 352 requester = new Requester(this, sockets_.back(), all_servers_addrs_);
353 } else { 353 } else {
354 std::vector<rtc::SocketAddress> server_ip; 354 std::vector<rtc::SocketAddress> server_ip;
355 server_ip.push_back( 355 server_ip.push_back(
356 all_servers_addrs_[(num_request_sent_ % all_servers_addrs_.size())]); 356 all_servers_addrs_[(num_request_sent_ % all_servers_addrs_.size())]);
(...skipping 11 matching lines...) Expand all
368 } 368 }
369 if (!current_requester_) { 369 if (!current_requester_) {
370 return false; 370 return false;
371 } 371 }
372 current_requester_->SendStunRequest(); 372 current_requester_->SendStunRequest();
373 num_request_sent_++; 373 num_request_sent_++;
374 return true; 374 return true;
375 } 375 }
376 376
377 void StunProber::MaybeScheduleStunRequests() { 377 void StunProber::MaybeScheduleStunRequests() {
378 DCHECK(thread_checker_.CalledOnValidThread()); 378 RTC_DCHECK(thread_checker_.CalledOnValidThread());
379 uint32 now = rtc::Time(); 379 uint32 now = rtc::Time();
380 380
381 if (Done()) { 381 if (Done()) {
382 invoker_.AsyncInvokeDelayed<void>( 382 invoker_.AsyncInvokeDelayed<void>(
383 thread_, rtc::Bind(&StunProber::End, this, SUCCESS), timeout_ms_); 383 thread_, rtc::Bind(&StunProber::End, this, SUCCESS), timeout_ms_);
384 return; 384 return;
385 } 385 }
386 if ((now + (thread_wake_up_interval_ms / 2)) >= next_request_time_ms_) { 386 if ((now + (thread_wake_up_interval_ms / 2)) >= next_request_time_ms_) {
387 if (!SendNextRequest()) { 387 if (!SendNextRequest()) {
388 End(GENERIC_FAILURE); 388 End(GENERIC_FAILURE);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 // server reflexive IPs. 453 // server reflexive IPs.
454 if (srflx_ips.size() > 1) { 454 if (srflx_ips.size() > 1) {
455 return false; 455 return false;
456 } 456 }
457 457
458 int num_sent = 0; 458 int num_sent = 0;
459 int num_received = 0; 459 int num_received = 0;
460 int num_server_ip_with_response = 0; 460 int num_server_ip_with_response = 0;
461 461
462 for (const auto& kv : num_response_per_server) { 462 for (const auto& kv : num_response_per_server) {
463 DCHECK_GT(kv.second, 0); 463 RTC_DCHECK_GT(kv.second, 0);
464 num_server_ip_with_response++; 464 num_server_ip_with_response++;
465 num_received += kv.second; 465 num_received += kv.second;
466 num_sent += num_request_per_server[kv.first]; 466 num_sent += num_request_per_server[kv.first];
467 } 467 }
468 468
469 // Not receiving any response, the trial is inconclusive. 469 // Not receiving any response, the trial is inconclusive.
470 if (!num_received) { 470 if (!num_received) {
471 return false; 471 return false;
472 } 472 }
473 473
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 514
515 if (num_received) { 515 if (num_received) {
516 stats.average_rtt_ms = static_cast<int>((rtt_sum / num_received)); 516 stats.average_rtt_ms = static_cast<int>((rtt_sum / num_received));
517 } 517 }
518 518
519 *prob_stats = stats; 519 *prob_stats = stats;
520 return true; 520 return true;
521 } 521 }
522 522
523 void StunProber::End(StunProber::Status status) { 523 void StunProber::End(StunProber::Status status) {
524 DCHECK(thread_checker_.CalledOnValidThread()); 524 RTC_DCHECK(thread_checker_.CalledOnValidThread());
525 if (!finished_callback_.empty()) { 525 if (!finished_callback_.empty()) {
526 AsyncCallback callback = finished_callback_; 526 AsyncCallback callback = finished_callback_;
527 finished_callback_ = AsyncCallback(); 527 finished_callback_ = AsyncCallback();
528 528
529 // Callback at the last since the prober might be deleted in the callback. 529 // Callback at the last since the prober might be deleted in the callback.
530 callback(this, status); 530 callback(this, status);
531 } 531 }
532 } 532 }
533 533
534 } // namespace stunprober 534 } // namespace stunprober
OLDNEW
« no previous file with comments | « webrtc/p2p/base/dtlstransportchannel.cc ('k') | webrtc/system_wrappers/interface/aligned_array.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698