| OLD | NEW |
| 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 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 } | 120 } |
| 121 | 121 |
| 122 bool TransportController::AddRemoteCandidates(const std::string& transport_name, | 122 bool TransportController::AddRemoteCandidates(const std::string& transport_name, |
| 123 const Candidates& candidates, | 123 const Candidates& candidates, |
| 124 std::string* err) { | 124 std::string* err) { |
| 125 return worker_thread_->Invoke<bool>( | 125 return worker_thread_->Invoke<bool>( |
| 126 rtc::Bind(&TransportController::AddRemoteCandidates_w, this, | 126 rtc::Bind(&TransportController::AddRemoteCandidates_w, this, |
| 127 transport_name, candidates, err)); | 127 transport_name, candidates, err)); |
| 128 } | 128 } |
| 129 | 129 |
| 130 bool TransportController::RemoveRemoteCandidates(const Candidates& candidates, | |
| 131 std::string* err) { | |
| 132 return worker_thread_->Invoke<bool>(rtc::Bind( | |
| 133 &TransportController::RemoveRemoteCandidates_w, this, candidates, err)); | |
| 134 } | |
| 135 | |
| 136 bool TransportController::ReadyForRemoteCandidates( | 130 bool TransportController::ReadyForRemoteCandidates( |
| 137 const std::string& transport_name) { | 131 const std::string& transport_name) { |
| 138 return worker_thread_->Invoke<bool>(rtc::Bind( | 132 return worker_thread_->Invoke<bool>(rtc::Bind( |
| 139 &TransportController::ReadyForRemoteCandidates_w, this, transport_name)); | 133 &TransportController::ReadyForRemoteCandidates_w, this, transport_name)); |
| 140 } | 134 } |
| 141 | 135 |
| 142 bool TransportController::GetStats(const std::string& transport_name, | 136 bool TransportController::GetStats(const std::string& transport_name, |
| 143 TransportStats* stats) { | 137 TransportStats* stats) { |
| 144 return worker_thread_->Invoke<bool>( | 138 return worker_thread_->Invoke<bool>( |
| 145 rtc::Bind(&TransportController::GetStats_w, this, transport_name, stats)); | 139 rtc::Bind(&TransportController::GetStats_w, this, transport_name, stats)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 161 Transport* transport = GetOrCreateTransport_w(transport_name); | 155 Transport* transport = GetOrCreateTransport_w(transport_name); |
| 162 TransportChannelImpl* channel = transport->CreateChannel(component); | 156 TransportChannelImpl* channel = transport->CreateChannel(component); |
| 163 channel->SignalWritableState.connect( | 157 channel->SignalWritableState.connect( |
| 164 this, &TransportController::OnChannelWritableState_w); | 158 this, &TransportController::OnChannelWritableState_w); |
| 165 channel->SignalReceivingState.connect( | 159 channel->SignalReceivingState.connect( |
| 166 this, &TransportController::OnChannelReceivingState_w); | 160 this, &TransportController::OnChannelReceivingState_w); |
| 167 channel->SignalGatheringState.connect( | 161 channel->SignalGatheringState.connect( |
| 168 this, &TransportController::OnChannelGatheringState_w); | 162 this, &TransportController::OnChannelGatheringState_w); |
| 169 channel->SignalCandidateGathered.connect( | 163 channel->SignalCandidateGathered.connect( |
| 170 this, &TransportController::OnChannelCandidateGathered_w); | 164 this, &TransportController::OnChannelCandidateGathered_w); |
| 171 channel->SignalCandidatesRemoved.connect( | |
| 172 this, &TransportController::OnChannelCandidatesRemoved_w); | |
| 173 channel->SignalRoleConflict.connect( | 165 channel->SignalRoleConflict.connect( |
| 174 this, &TransportController::OnChannelRoleConflict_w); | 166 this, &TransportController::OnChannelRoleConflict_w); |
| 175 channel->SignalConnectionRemoved.connect( | 167 channel->SignalConnectionRemoved.connect( |
| 176 this, &TransportController::OnChannelConnectionRemoved_w); | 168 this, &TransportController::OnChannelConnectionRemoved_w); |
| 177 channels_.insert(channels_.end(), RefCountedChannel(channel))->AddRef(); | 169 channels_.insert(channels_.end(), RefCountedChannel(channel))->AddRef(); |
| 178 // Adding a channel could cause aggregate state to change. | 170 // Adding a channel could cause aggregate state to change. |
| 179 UpdateAggregateStates_w(); | 171 UpdateAggregateStates_w(); |
| 180 return channel; | 172 return channel; |
| 181 } | 173 } |
| 182 | 174 |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 Transport* transport = GetTransport_w(transport_name); | 453 Transport* transport = GetTransport_w(transport_name); |
| 462 if (!transport) { | 454 if (!transport) { |
| 463 // If we didn't find a transport, that's not an error; | 455 // If we didn't find a transport, that's not an error; |
| 464 // it could have been deleted as a result of bundling. | 456 // it could have been deleted as a result of bundling. |
| 465 return true; | 457 return true; |
| 466 } | 458 } |
| 467 | 459 |
| 468 return transport->AddRemoteCandidates(candidates, err); | 460 return transport->AddRemoteCandidates(candidates, err); |
| 469 } | 461 } |
| 470 | 462 |
| 471 bool TransportController::RemoveRemoteCandidates_w(const Candidates& candidates, | |
| 472 std::string* err) { | |
| 473 RTC_DCHECK(worker_thread()->IsCurrent()); | |
| 474 std::map<std::string, Candidates> candidates_by_transport_name; | |
| 475 for (const Candidate& cand : candidates) { | |
| 476 RTC_DCHECK(!cand.transport_name().empty()); | |
| 477 candidates_by_transport_name[cand.transport_name()].push_back(cand); | |
| 478 } | |
| 479 | |
| 480 bool result = true; | |
| 481 for (auto kv : candidates_by_transport_name) { | |
| 482 Transport* transport = GetTransport_w(kv.first); | |
| 483 if (!transport) { | |
| 484 // If we didn't find a transport, that's not an error; | |
| 485 // it could have been deleted as a result of bundling. | |
| 486 continue; | |
| 487 } | |
| 488 result &= transport->RemoveRemoteCandidates(kv.second, err); | |
| 489 } | |
| 490 return result; | |
| 491 } | |
| 492 | |
| 493 bool TransportController::ReadyForRemoteCandidates_w( | 463 bool TransportController::ReadyForRemoteCandidates_w( |
| 494 const std::string& transport_name) { | 464 const std::string& transport_name) { |
| 495 RTC_DCHECK(worker_thread()->IsCurrent()); | 465 RTC_DCHECK(worker_thread()->IsCurrent()); |
| 496 | 466 |
| 497 Transport* transport = GetTransport_w(transport_name); | 467 Transport* transport = GetTransport_w(transport_name); |
| 498 if (!transport) { | 468 if (!transport) { |
| 499 return false; | 469 return false; |
| 500 } | 470 } |
| 501 return transport->ready_for_remote_candidates(); | 471 return transport->ready_for_remote_candidates(); |
| 502 } | 472 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 RTC_DCHECK(false); | 511 RTC_DCHECK(false); |
| 542 return; | 512 return; |
| 543 } | 513 } |
| 544 std::vector<Candidate> candidates; | 514 std::vector<Candidate> candidates; |
| 545 candidates.push_back(candidate); | 515 candidates.push_back(candidate); |
| 546 CandidatesData* data = | 516 CandidatesData* data = |
| 547 new CandidatesData(channel->transport_name(), candidates); | 517 new CandidatesData(channel->transport_name(), candidates); |
| 548 signaling_thread_->Post(this, MSG_CANDIDATESGATHERED, data); | 518 signaling_thread_->Post(this, MSG_CANDIDATESGATHERED, data); |
| 549 } | 519 } |
| 550 | 520 |
| 551 void TransportController::OnChannelCandidatesRemoved_w( | |
| 552 TransportChannelImpl* channel, | |
| 553 const Candidates& candidates) { | |
| 554 invoker_.AsyncInvoke<void>( | |
| 555 signaling_thread_, | |
| 556 rtc::Bind(&TransportController::OnChannelCandidatesRemoved, this, | |
| 557 candidates)); | |
| 558 } | |
| 559 | |
| 560 void TransportController::OnChannelCandidatesRemoved( | |
| 561 const Candidates& candidates) { | |
| 562 RTC_DCHECK(signaling_thread_->IsCurrent()); | |
| 563 SignalCandidatesRemoved(candidates); | |
| 564 } | |
| 565 | |
| 566 void TransportController::OnChannelRoleConflict_w( | 521 void TransportController::OnChannelRoleConflict_w( |
| 567 TransportChannelImpl* channel) { | 522 TransportChannelImpl* channel) { |
| 568 RTC_DCHECK(worker_thread_->IsCurrent()); | 523 RTC_DCHECK(worker_thread_->IsCurrent()); |
| 569 | 524 |
| 570 if (ice_role_switch_) { | 525 if (ice_role_switch_) { |
| 571 LOG(LS_WARNING) | 526 LOG(LS_WARNING) |
| 572 << "Repeat of role conflict signal from TransportChannelImpl."; | 527 << "Repeat of role conflict signal from TransportChannelImpl."; |
| 573 return; | 528 return; |
| 574 } | 529 } |
| 575 | 530 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 645 } | 600 } |
| 646 if (gathering_state_ != new_gathering_state) { | 601 if (gathering_state_ != new_gathering_state) { |
| 647 gathering_state_ = new_gathering_state; | 602 gathering_state_ = new_gathering_state; |
| 648 signaling_thread_->Post( | 603 signaling_thread_->Post( |
| 649 this, MSG_ICEGATHERINGSTATE, | 604 this, MSG_ICEGATHERINGSTATE, |
| 650 new rtc::TypedMessageData<IceGatheringState>(new_gathering_state)); | 605 new rtc::TypedMessageData<IceGatheringState>(new_gathering_state)); |
| 651 } | 606 } |
| 652 } | 607 } |
| 653 | 608 |
| 654 } // namespace cricket | 609 } // namespace cricket |
| OLD | NEW |