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

Side by Side Diff: webrtc/base/virtualsocketserver.cc

Issue 2883313003: Remove VirtualSocketServer's dependency on PhysicalSocketServer. (Closed)
Patch Set: Created 3 years, 7 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 | « webrtc/base/virtualsocketserver.h ('k') | webrtc/ortc/ortcfactory_integrationtest.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 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 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 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 ready_to_send_ = true; 508 ready_to_send_ = true;
509 SignalWriteEvent(this); 509 SignalWriteEvent(this);
510 } else { 510 } else {
511 RTC_DCHECK(type_ == SOCK_STREAM); 511 RTC_DCHECK(type_ == SOCK_STREAM);
512 // This will attempt to empty the full send buffer, and will fire 512 // This will attempt to empty the full send buffer, and will fire
513 // SignalWriteEvent if successful. 513 // SignalWriteEvent if successful.
514 server_->SendTcp(this); 514 server_->SendTcp(this);
515 } 515 }
516 } 516 }
517 517
518 VirtualSocketServer::VirtualSocketServer(SocketServer* ss) 518 VirtualSocketServer::VirtualSocketServer()
519 : server_(ss), 519 : wakeup_(/*manual_reset=*/false, /*initially_signaled=*/false),
520 server_owned_(false),
521 msg_queue_(nullptr), 520 msg_queue_(nullptr),
522 stop_on_idle_(false), 521 stop_on_idle_(false),
523 next_ipv4_(kInitialNextIPv4), 522 next_ipv4_(kInitialNextIPv4),
524 next_ipv6_(kInitialNextIPv6), 523 next_ipv6_(kInitialNextIPv6),
525 next_port_(kFirstEphemeralPort), 524 next_port_(kFirstEphemeralPort),
526 bindings_(new AddressMap()), 525 bindings_(new AddressMap()),
527 connections_(new ConnectionMap()), 526 connections_(new ConnectionMap()),
528 bandwidth_(0), 527 bandwidth_(0),
529 network_capacity_(kDefaultNetworkCapacity), 528 network_capacity_(kDefaultNetworkCapacity),
530 send_buffer_capacity_(kDefaultTcpBufferSize), 529 send_buffer_capacity_(kDefaultTcpBufferSize),
531 recv_buffer_capacity_(kDefaultTcpBufferSize), 530 recv_buffer_capacity_(kDefaultTcpBufferSize),
532 delay_mean_(0), 531 delay_mean_(0),
533 delay_stddev_(0), 532 delay_stddev_(0),
534 delay_samples_(NUM_SAMPLES), 533 delay_samples_(NUM_SAMPLES),
535 drop_prob_(0.0) { 534 drop_prob_(0.0) {
536 if (!server_) {
537 server_ = new PhysicalSocketServer();
538 server_owned_ = true;
539 }
540 UpdateDelayDistribution(); 535 UpdateDelayDistribution();
541 } 536 }
542 537
543 VirtualSocketServer::~VirtualSocketServer() { 538 VirtualSocketServer::~VirtualSocketServer() {
544 delete bindings_; 539 delete bindings_;
545 delete connections_; 540 delete connections_;
546 if (server_owned_) {
547 delete server_;
548 }
549 } 541 }
550 542
551 IPAddress VirtualSocketServer::GetNextIP(int family) { 543 IPAddress VirtualSocketServer::GetNextIP(int family) {
552 if (family == AF_INET) { 544 if (family == AF_INET) {
553 IPAddress next_ip(next_ipv4_); 545 IPAddress next_ip(next_ipv4_);
554 next_ipv4_.s_addr = 546 next_ipv4_.s_addr =
555 HostToNetwork32(NetworkToHost32(next_ipv4_.s_addr) + 1); 547 HostToNetwork32(NetworkToHost32(next_ipv4_.s_addr) + 1);
556 return next_ip; 548 return next_ip;
557 } else if (family == AF_INET6) { 549 } else if (family == AF_INET6) {
558 IPAddress next_ip(next_ipv6_); 550 IPAddress next_ip(next_ipv6_);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 msg_queue_->SignalQueueDestroyed.connect(this, 606 msg_queue_->SignalQueueDestroyed.connect(this,
615 &VirtualSocketServer::OnMessageQueueDestroyed); 607 &VirtualSocketServer::OnMessageQueueDestroyed);
616 } 608 }
617 } 609 }
618 610
619 bool VirtualSocketServer::Wait(int cmsWait, bool process_io) { 611 bool VirtualSocketServer::Wait(int cmsWait, bool process_io) {
620 RTC_DCHECK(msg_queue_ == Thread::Current()); 612 RTC_DCHECK(msg_queue_ == Thread::Current());
621 if (stop_on_idle_ && Thread::Current()->empty()) { 613 if (stop_on_idle_ && Thread::Current()->empty()) {
622 return false; 614 return false;
623 } 615 }
624 return socketserver()->Wait(cmsWait, process_io); 616 // Note: we don't need to do anything with |process_io| since we don't have
617 // any real I/O. Received packets come in the form of queued messages, so
618 // MessageQueue will ensure WakeUp is called if another thread sends a
619 // packet.
620 wakeup_.Wait(cmsWait);
621 return true;
625 } 622 }
626 623
627 void VirtualSocketServer::WakeUp() { 624 void VirtualSocketServer::WakeUp() {
628 socketserver()->WakeUp(); 625 wakeup_.Set();
629 } 626 }
630 627
631 bool VirtualSocketServer::ProcessMessagesUntilIdle() { 628 bool VirtualSocketServer::ProcessMessagesUntilIdle() {
632 RTC_DCHECK(msg_queue_ == Thread::Current()); 629 RTC_DCHECK(msg_queue_ == Thread::Current());
633 stop_on_idle_ = true; 630 stop_on_idle_ = true;
634 while (!msg_queue_->empty()) { 631 while (!msg_queue_->empty()) {
635 Message msg; 632 Message msg;
636 if (msg_queue_->Get(&msg, Thread::kForever)) { 633 if (msg_queue_->Get(&msg, Thread::kForever)) {
637 msg_queue_->Dispatch(&msg); 634 msg_queue_->Dispatch(&msg);
638 } 635 }
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 void VirtualSocketServer::SetDefaultRoute(const IPAddress& from_addr) { 1180 void VirtualSocketServer::SetDefaultRoute(const IPAddress& from_addr) {
1184 RTC_DCHECK(!IPIsAny(from_addr)); 1181 RTC_DCHECK(!IPIsAny(from_addr));
1185 if (from_addr.family() == AF_INET) { 1182 if (from_addr.family() == AF_INET) {
1186 default_route_v4_ = from_addr; 1183 default_route_v4_ = from_addr;
1187 } else if (from_addr.family() == AF_INET6) { 1184 } else if (from_addr.family() == AF_INET6) {
1188 default_route_v6_ = from_addr; 1185 default_route_v6_ = from_addr;
1189 } 1186 }
1190 } 1187 }
1191 1188
1192 } // namespace rtc 1189 } // namespace rtc
OLDNEW
« no previous file with comments | « webrtc/base/virtualsocketserver.h ('k') | webrtc/ortc/ortcfactory_integrationtest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698