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

Side by Side Diff: talk/app/webrtc/peerconnection.cc

Issue 1509903002: Add tracing to public PeerConnection methods. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years 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 | talk/app/webrtc/webrtcsession.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 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 #include "talk/app/webrtc/rtpsender.h" 44 #include "talk/app/webrtc/rtpsender.h"
45 #include "talk/app/webrtc/streamcollection.h" 45 #include "talk/app/webrtc/streamcollection.h"
46 #include "talk/app/webrtc/videosource.h" 46 #include "talk/app/webrtc/videosource.h"
47 #include "talk/app/webrtc/videotrack.h" 47 #include "talk/app/webrtc/videotrack.h"
48 #include "talk/media/sctp/sctpdataengine.h" 48 #include "talk/media/sctp/sctpdataengine.h"
49 #include "talk/session/media/channelmanager.h" 49 #include "talk/session/media/channelmanager.h"
50 #include "webrtc/base/arraysize.h" 50 #include "webrtc/base/arraysize.h"
51 #include "webrtc/base/logging.h" 51 #include "webrtc/base/logging.h"
52 #include "webrtc/base/stringencode.h" 52 #include "webrtc/base/stringencode.h"
53 #include "webrtc/base/stringutils.h" 53 #include "webrtc/base/stringutils.h"
54 #include "webrtc/base/trace_event.h"
54 #include "webrtc/p2p/client/basicportallocator.h" 55 #include "webrtc/p2p/client/basicportallocator.h"
55 #include "webrtc/system_wrappers/include/field_trial.h" 56 #include "webrtc/system_wrappers/include/field_trial.h"
56 57
57 namespace { 58 namespace {
58 59
59 using webrtc::DataChannel; 60 using webrtc::DataChannel;
60 using webrtc::MediaConstraintsInterface; 61 using webrtc::MediaConstraintsInterface;
61 using webrtc::MediaStreamInterface; 62 using webrtc::MediaStreamInterface;
62 using webrtc::PeerConnectionInterface; 63 using webrtc::PeerConnectionInterface;
63 using webrtc::RtpSenderInterface; 64 using webrtc::RtpSenderInterface;
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 observer_(NULL), 589 observer_(NULL),
589 uma_observer_(NULL), 590 uma_observer_(NULL),
590 signaling_state_(kStable), 591 signaling_state_(kStable),
591 ice_state_(kIceNew), 592 ice_state_(kIceNew),
592 ice_connection_state_(kIceConnectionNew), 593 ice_connection_state_(kIceConnectionNew),
593 ice_gathering_state_(kIceGatheringNew), 594 ice_gathering_state_(kIceGatheringNew),
594 local_streams_(StreamCollection::Create()), 595 local_streams_(StreamCollection::Create()),
595 remote_streams_(StreamCollection::Create()) {} 596 remote_streams_(StreamCollection::Create()) {}
596 597
597 PeerConnection::~PeerConnection() { 598 PeerConnection::~PeerConnection() {
599 TRACE_EVENT0("webrtc", "PeerConnection::~PeerConnection");
598 RTC_DCHECK(signaling_thread()->IsCurrent()); 600 RTC_DCHECK(signaling_thread()->IsCurrent());
599 // Finish any pending deletions. 601 // Finish any pending deletions.
600 signaling_thread()->Clear(this, MSG_DELETE, nullptr); 602 signaling_thread()->Clear(this, MSG_DELETE, nullptr);
601 // Need to detach RTP senders/receivers from WebRtcSession, 603 // Need to detach RTP senders/receivers from WebRtcSession,
602 // since it's about to be destroyed. 604 // since it's about to be destroyed.
603 for (const auto& sender : senders_) { 605 for (const auto& sender : senders_) {
604 sender->Stop(); 606 sender->Stop();
605 } 607 }
606 for (const auto& receiver : receivers_) { 608 for (const auto& receiver : receivers_) {
607 receiver->Stop(); 609 receiver->Stop();
(...skipping 23 matching lines...) Expand all
631 return Initialize(configuration, constraints, allocator.Pass(), 633 return Initialize(configuration, constraints, allocator.Pass(),
632 dtls_identity_store.Pass(), observer); 634 dtls_identity_store.Pass(), observer);
633 } 635 }
634 636
635 bool PeerConnection::Initialize( 637 bool PeerConnection::Initialize(
636 const PeerConnectionInterface::RTCConfiguration& configuration, 638 const PeerConnectionInterface::RTCConfiguration& configuration,
637 const MediaConstraintsInterface* constraints, 639 const MediaConstraintsInterface* constraints,
638 rtc::scoped_ptr<cricket::PortAllocator> allocator, 640 rtc::scoped_ptr<cricket::PortAllocator> allocator,
639 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store, 641 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
640 PeerConnectionObserver* observer) { 642 PeerConnectionObserver* observer) {
643 TRACE_EVENT0("webrtc", "PeerConnection::Initialize");
641 RTC_DCHECK(observer != nullptr); 644 RTC_DCHECK(observer != nullptr);
642 if (!observer) { 645 if (!observer) {
643 return false; 646 return false;
644 } 647 }
645 observer_ = observer; 648 observer_ = observer;
646 649
647 port_allocator_ = allocator.Pass(); 650 port_allocator_ = allocator.Pass();
648 651
649 std::vector<PortAllocatorFactoryInterface::StunConfiguration> stun_config; 652 std::vector<PortAllocatorFactoryInterface::StunConfiguration> stun_config;
650 std::vector<PortAllocatorFactoryInterface::TurnConfiguration> turn_config; 653 std::vector<PortAllocatorFactoryInterface::TurnConfiguration> turn_config;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 PeerConnection::local_streams() { 724 PeerConnection::local_streams() {
722 return local_streams_; 725 return local_streams_;
723 } 726 }
724 727
725 rtc::scoped_refptr<StreamCollectionInterface> 728 rtc::scoped_refptr<StreamCollectionInterface>
726 PeerConnection::remote_streams() { 729 PeerConnection::remote_streams() {
727 return remote_streams_; 730 return remote_streams_;
728 } 731 }
729 732
730 bool PeerConnection::AddStream(MediaStreamInterface* local_stream) { 733 bool PeerConnection::AddStream(MediaStreamInterface* local_stream) {
734 TRACE_EVENT0("webrtc", "PeerConnection::AddStream");
731 if (IsClosed()) { 735 if (IsClosed()) {
732 return false; 736 return false;
733 } 737 }
734 if (!CanAddLocalMediaStream(local_streams_, local_stream)) { 738 if (!CanAddLocalMediaStream(local_streams_, local_stream)) {
735 return false; 739 return false;
736 } 740 }
737 741
738 local_streams_->AddStream(local_stream); 742 local_streams_->AddStream(local_stream);
739 743
740 for (const auto& track : local_stream->GetAudioTracks()) { 744 for (const auto& track : local_stream->GetAudioTracks()) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 } 785 }
782 786
783 stats_->AddStream(local_stream); 787 stats_->AddStream(local_stream);
784 observer_->OnRenegotiationNeeded(); 788 observer_->OnRenegotiationNeeded();
785 return true; 789 return true;
786 } 790 }
787 791
788 // TODO(deadbeef): Don't destroy RtpSenders here; they should be kept around 792 // TODO(deadbeef): Don't destroy RtpSenders here; they should be kept around
789 // indefinitely, when we have unified plan SDP. 793 // indefinitely, when we have unified plan SDP.
790 void PeerConnection::RemoveStream(MediaStreamInterface* local_stream) { 794 void PeerConnection::RemoveStream(MediaStreamInterface* local_stream) {
795 TRACE_EVENT0("webrtc", "PeerConnection::RemoveStream");
791 for (const auto& track : local_stream->GetAudioTracks()) { 796 for (const auto& track : local_stream->GetAudioTracks()) {
792 auto sender = FindSenderForTrack(track.get()); 797 auto sender = FindSenderForTrack(track.get());
793 if (sender == senders_.end()) { 798 if (sender == senders_.end()) {
794 LOG(LS_WARNING) << "RtpSender for track with id " << track->id() 799 LOG(LS_WARNING) << "RtpSender for track with id " << track->id()
795 << " doesn't exist."; 800 << " doesn't exist.";
796 continue; 801 continue;
797 } 802 }
798 (*sender)->Stop(); 803 (*sender)->Stop();
799 senders_.erase(sender); 804 senders_.erase(sender);
800 } 805 }
(...skipping 11 matching lines...) Expand all
812 local_streams_->RemoveStream(local_stream); 817 local_streams_->RemoveStream(local_stream);
813 818
814 if (IsClosed()) { 819 if (IsClosed()) {
815 return; 820 return;
816 } 821 }
817 observer_->OnRenegotiationNeeded(); 822 observer_->OnRenegotiationNeeded();
818 } 823 }
819 824
820 rtc::scoped_refptr<DtmfSenderInterface> PeerConnection::CreateDtmfSender( 825 rtc::scoped_refptr<DtmfSenderInterface> PeerConnection::CreateDtmfSender(
821 AudioTrackInterface* track) { 826 AudioTrackInterface* track) {
827 TRACE_EVENT0("webrtc", "PeerConnection::CreateDtmfSender");
822 if (!track) { 828 if (!track) {
823 LOG(LS_ERROR) << "CreateDtmfSender - track is NULL."; 829 LOG(LS_ERROR) << "CreateDtmfSender - track is NULL.";
824 return NULL; 830 return NULL;
825 } 831 }
826 if (!local_streams_->FindAudioTrack(track->id())) { 832 if (!local_streams_->FindAudioTrack(track->id())) {
827 LOG(LS_ERROR) << "CreateDtmfSender is called with a non local audio track."; 833 LOG(LS_ERROR) << "CreateDtmfSender is called with a non local audio track.";
828 return NULL; 834 return NULL;
829 } 835 }
830 836
831 rtc::scoped_refptr<DtmfSenderInterface> sender( 837 rtc::scoped_refptr<DtmfSenderInterface> sender(
832 DtmfSender::Create(track, signaling_thread(), session_.get())); 838 DtmfSender::Create(track, signaling_thread(), session_.get()));
833 if (!sender.get()) { 839 if (!sender.get()) {
834 LOG(LS_ERROR) << "CreateDtmfSender failed on DtmfSender::Create."; 840 LOG(LS_ERROR) << "CreateDtmfSender failed on DtmfSender::Create.";
835 return NULL; 841 return NULL;
836 } 842 }
837 return DtmfSenderProxy::Create(signaling_thread(), sender.get()); 843 return DtmfSenderProxy::Create(signaling_thread(), sender.get());
838 } 844 }
839 845
840 rtc::scoped_refptr<RtpSenderInterface> PeerConnection::CreateSender( 846 rtc::scoped_refptr<RtpSenderInterface> PeerConnection::CreateSender(
841 const std::string& kind) { 847 const std::string& kind) {
848 TRACE_EVENT0("webrtc", "PeerConnection::CreateSender");
842 RtpSenderInterface* new_sender; 849 RtpSenderInterface* new_sender;
843 if (kind == MediaStreamTrackInterface::kAudioKind) { 850 if (kind == MediaStreamTrackInterface::kAudioKind) {
844 new_sender = new AudioRtpSender(session_.get(), stats_.get()); 851 new_sender = new AudioRtpSender(session_.get(), stats_.get());
845 } else if (kind == MediaStreamTrackInterface::kVideoKind) { 852 } else if (kind == MediaStreamTrackInterface::kVideoKind) {
846 new_sender = new VideoRtpSender(session_.get()); 853 new_sender = new VideoRtpSender(session_.get());
847 } else { 854 } else {
848 LOG(LS_ERROR) << "CreateSender called with invalid kind: " << kind; 855 LOG(LS_ERROR) << "CreateSender called with invalid kind: " << kind;
849 return rtc::scoped_refptr<RtpSenderInterface>(); 856 return rtc::scoped_refptr<RtpSenderInterface>();
850 } 857 }
851 senders_.push_back(new_sender); 858 senders_.push_back(new_sender);
(...skipping 15 matching lines...) Expand all
867 for (const auto& receiver : receivers_) { 874 for (const auto& receiver : receivers_) {
868 receivers.push_back( 875 receivers.push_back(
869 RtpReceiverProxy::Create(signaling_thread(), receiver.get())); 876 RtpReceiverProxy::Create(signaling_thread(), receiver.get()));
870 } 877 }
871 return receivers; 878 return receivers;
872 } 879 }
873 880
874 bool PeerConnection::GetStats(StatsObserver* observer, 881 bool PeerConnection::GetStats(StatsObserver* observer,
875 MediaStreamTrackInterface* track, 882 MediaStreamTrackInterface* track,
876 StatsOutputLevel level) { 883 StatsOutputLevel level) {
884 TRACE_EVENT0("webrtc", "PeerConnection::GetStats");
877 RTC_DCHECK(signaling_thread()->IsCurrent()); 885 RTC_DCHECK(signaling_thread()->IsCurrent());
878 if (!VERIFY(observer != NULL)) { 886 if (!VERIFY(observer != NULL)) {
879 LOG(LS_ERROR) << "GetStats - observer is NULL."; 887 LOG(LS_ERROR) << "GetStats - observer is NULL.";
880 return false; 888 return false;
881 } 889 }
882 890
883 stats_->UpdateStats(level); 891 stats_->UpdateStats(level);
884 signaling_thread()->Post(this, MSG_GETSTATS, 892 signaling_thread()->Post(this, MSG_GETSTATS,
885 new GetStatsMsg(observer, track)); 893 new GetStatsMsg(observer, track));
886 return true; 894 return true;
(...skipping 14 matching lines...) Expand all
901 909
902 PeerConnectionInterface::IceGatheringState 910 PeerConnectionInterface::IceGatheringState
903 PeerConnection::ice_gathering_state() { 911 PeerConnection::ice_gathering_state() {
904 return ice_gathering_state_; 912 return ice_gathering_state_;
905 } 913 }
906 914
907 rtc::scoped_refptr<DataChannelInterface> 915 rtc::scoped_refptr<DataChannelInterface>
908 PeerConnection::CreateDataChannel( 916 PeerConnection::CreateDataChannel(
909 const std::string& label, 917 const std::string& label,
910 const DataChannelInit* config) { 918 const DataChannelInit* config) {
919 TRACE_EVENT0("webrtc", "PeerConnection::CreateDataChannel");
911 bool first_datachannel = !HasDataChannels(); 920 bool first_datachannel = !HasDataChannels();
912 921
913 rtc::scoped_ptr<InternalDataChannelInit> internal_config; 922 rtc::scoped_ptr<InternalDataChannelInit> internal_config;
914 if (config) { 923 if (config) {
915 internal_config.reset(new InternalDataChannelInit(*config)); 924 internal_config.reset(new InternalDataChannelInit(*config));
916 } 925 }
917 rtc::scoped_refptr<DataChannelInterface> channel( 926 rtc::scoped_refptr<DataChannelInterface> channel(
918 InternalCreateDataChannel(label, internal_config.get())); 927 InternalCreateDataChannel(label, internal_config.get()));
919 if (!channel.get()) { 928 if (!channel.get()) {
920 return nullptr; 929 return nullptr;
921 } 930 }
922 931
923 // Trigger the onRenegotiationNeeded event for every new RTP DataChannel, or 932 // Trigger the onRenegotiationNeeded event for every new RTP DataChannel, or
924 // the first SCTP DataChannel. 933 // the first SCTP DataChannel.
925 if (session_->data_channel_type() == cricket::DCT_RTP || first_datachannel) { 934 if (session_->data_channel_type() == cricket::DCT_RTP || first_datachannel) {
926 observer_->OnRenegotiationNeeded(); 935 observer_->OnRenegotiationNeeded();
927 } 936 }
928 937
929 return DataChannelProxy::Create(signaling_thread(), channel.get()); 938 return DataChannelProxy::Create(signaling_thread(), channel.get());
930 } 939 }
931 940
932 void PeerConnection::CreateOffer(CreateSessionDescriptionObserver* observer, 941 void PeerConnection::CreateOffer(CreateSessionDescriptionObserver* observer,
933 const MediaConstraintsInterface* constraints) { 942 const MediaConstraintsInterface* constraints) {
943 TRACE_EVENT0("webrtc", "PeerConnection::CreateOffer");
934 if (!VERIFY(observer != nullptr)) { 944 if (!VERIFY(observer != nullptr)) {
935 LOG(LS_ERROR) << "CreateOffer - observer is NULL."; 945 LOG(LS_ERROR) << "CreateOffer - observer is NULL.";
936 return; 946 return;
937 } 947 }
938 RTCOfferAnswerOptions options; 948 RTCOfferAnswerOptions options;
939 949
940 bool value; 950 bool value;
941 size_t mandatory_constraints = 0; 951 size_t mandatory_constraints = 0;
942 952
943 if (FindConstraint(constraints, 953 if (FindConstraint(constraints,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 &value, 985 &value,
976 &mandatory_constraints)) { 986 &mandatory_constraints)) {
977 options.use_rtp_mux = value; 987 options.use_rtp_mux = value;
978 } 988 }
979 989
980 CreateOffer(observer, options); 990 CreateOffer(observer, options);
981 } 991 }
982 992
983 void PeerConnection::CreateOffer(CreateSessionDescriptionObserver* observer, 993 void PeerConnection::CreateOffer(CreateSessionDescriptionObserver* observer,
984 const RTCOfferAnswerOptions& options) { 994 const RTCOfferAnswerOptions& options) {
995 TRACE_EVENT0("webrtc", "PeerConnection::CreateOffer");
985 if (!VERIFY(observer != nullptr)) { 996 if (!VERIFY(observer != nullptr)) {
986 LOG(LS_ERROR) << "CreateOffer - observer is NULL."; 997 LOG(LS_ERROR) << "CreateOffer - observer is NULL.";
987 return; 998 return;
988 } 999 }
989 1000
990 cricket::MediaSessionOptions session_options; 1001 cricket::MediaSessionOptions session_options;
991 if (!GetOptionsForOffer(options, &session_options)) { 1002 if (!GetOptionsForOffer(options, &session_options)) {
992 std::string error = "CreateOffer called with invalid options."; 1003 std::string error = "CreateOffer called with invalid options.";
993 LOG(LS_ERROR) << error; 1004 LOG(LS_ERROR) << error;
994 PostCreateSessionDescriptionFailure(observer, error); 1005 PostCreateSessionDescriptionFailure(observer, error);
995 return; 1006 return;
996 } 1007 }
997 1008
998 session_->CreateOffer(observer, options, session_options); 1009 session_->CreateOffer(observer, options, session_options);
999 } 1010 }
1000 1011
1001 void PeerConnection::CreateAnswer( 1012 void PeerConnection::CreateAnswer(
1002 CreateSessionDescriptionObserver* observer, 1013 CreateSessionDescriptionObserver* observer,
1003 const MediaConstraintsInterface* constraints) { 1014 const MediaConstraintsInterface* constraints) {
1015 TRACE_EVENT0("webrtc", "PeerConnection::CreateAnswer");
1004 if (!VERIFY(observer != nullptr)) { 1016 if (!VERIFY(observer != nullptr)) {
1005 LOG(LS_ERROR) << "CreateAnswer - observer is NULL."; 1017 LOG(LS_ERROR) << "CreateAnswer - observer is NULL.";
1006 return; 1018 return;
1007 } 1019 }
1008 1020
1009 cricket::MediaSessionOptions session_options; 1021 cricket::MediaSessionOptions session_options;
1010 if (!GetOptionsForAnswer(constraints, &session_options)) { 1022 if (!GetOptionsForAnswer(constraints, &session_options)) {
1011 std::string error = "CreateAnswer called with invalid constraints."; 1023 std::string error = "CreateAnswer called with invalid constraints.";
1012 LOG(LS_ERROR) << error; 1024 LOG(LS_ERROR) << error;
1013 PostCreateSessionDescriptionFailure(observer, error); 1025 PostCreateSessionDescriptionFailure(observer, error);
1014 return; 1026 return;
1015 } 1027 }
1016 1028
1017 session_->CreateAnswer(observer, constraints, session_options); 1029 session_->CreateAnswer(observer, constraints, session_options);
1018 } 1030 }
1019 1031
1020 void PeerConnection::SetLocalDescription( 1032 void PeerConnection::SetLocalDescription(
1021 SetSessionDescriptionObserver* observer, 1033 SetSessionDescriptionObserver* observer,
1022 SessionDescriptionInterface* desc) { 1034 SessionDescriptionInterface* desc) {
1035 TRACE_EVENT0("webrtc", "PeerConnection::SetLocalDescription");
1023 if (!VERIFY(observer != nullptr)) { 1036 if (!VERIFY(observer != nullptr)) {
1024 LOG(LS_ERROR) << "SetLocalDescription - observer is NULL."; 1037 LOG(LS_ERROR) << "SetLocalDescription - observer is NULL.";
1025 return; 1038 return;
1026 } 1039 }
1027 if (!desc) { 1040 if (!desc) {
1028 PostSetSessionDescriptionFailure(observer, "SessionDescription is NULL."); 1041 PostSetSessionDescriptionFailure(observer, "SessionDescription is NULL.");
1029 return; 1042 return;
1030 } 1043 }
1031 // Update stats here so that we have the most recent stats for tracks and 1044 // Update stats here so that we have the most recent stats for tracks and
1032 // streams that might be removed by updating the session description. 1045 // streams that might be removed by updating the session description.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 1103
1091 // MaybeStartGathering needs to be called after posting 1104 // MaybeStartGathering needs to be called after posting
1092 // MSG_SET_SESSIONDESCRIPTION_SUCCESS, so that we don't signal any candidates 1105 // MSG_SET_SESSIONDESCRIPTION_SUCCESS, so that we don't signal any candidates
1093 // before signaling that SetLocalDescription completed. 1106 // before signaling that SetLocalDescription completed.
1094 session_->MaybeStartGathering(); 1107 session_->MaybeStartGathering();
1095 } 1108 }
1096 1109
1097 void PeerConnection::SetRemoteDescription( 1110 void PeerConnection::SetRemoteDescription(
1098 SetSessionDescriptionObserver* observer, 1111 SetSessionDescriptionObserver* observer,
1099 SessionDescriptionInterface* desc) { 1112 SessionDescriptionInterface* desc) {
1113 TRACE_EVENT0("webrtc", "PeerConnection::SetRemoteDescription");
1100 if (!VERIFY(observer != nullptr)) { 1114 if (!VERIFY(observer != nullptr)) {
1101 LOG(LS_ERROR) << "SetRemoteDescription - observer is NULL."; 1115 LOG(LS_ERROR) << "SetRemoteDescription - observer is NULL.";
1102 return; 1116 return;
1103 } 1117 }
1104 if (!desc) { 1118 if (!desc) {
1105 PostSetSessionDescriptionFailure(observer, "SessionDescription is NULL."); 1119 PostSetSessionDescriptionFailure(observer, "SessionDescription is NULL.");
1106 return; 1120 return;
1107 } 1121 }
1108 // Update stats here so that we have the most recent stats for tracks and 1122 // Update stats here so that we have the most recent stats for tracks and
1109 // streams that might be removed by updating the session description. 1123 // streams that might be removed by updating the session description.
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1191 UpdateEndedRemoteMediaStreams(); 1205 UpdateEndedRemoteMediaStreams();
1192 remote_info_.msid_supported |= remote_streams_->count() > 0; 1206 remote_info_.msid_supported |= remote_streams_->count() > 0;
1193 } 1207 }
1194 MaybeCreateDefaultStream(); 1208 MaybeCreateDefaultStream();
1195 1209
1196 SetSessionDescriptionMsg* msg = new SetSessionDescriptionMsg(observer); 1210 SetSessionDescriptionMsg* msg = new SetSessionDescriptionMsg(observer);
1197 signaling_thread()->Post(this, MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg); 1211 signaling_thread()->Post(this, MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg);
1198 } 1212 }
1199 1213
1200 bool PeerConnection::SetConfiguration(const RTCConfiguration& config) { 1214 bool PeerConnection::SetConfiguration(const RTCConfiguration& config) {
1215 TRACE_EVENT0("webrtc", "PeerConnection::SetConfiguration");
1201 if (port_allocator_) { 1216 if (port_allocator_) {
1202 std::vector<PortAllocatorFactoryInterface::StunConfiguration> stuns; 1217 std::vector<PortAllocatorFactoryInterface::StunConfiguration> stuns;
1203 std::vector<PortAllocatorFactoryInterface::TurnConfiguration> turns; 1218 std::vector<PortAllocatorFactoryInterface::TurnConfiguration> turns;
1204 if (!ParseIceServers(config.servers, &stuns, &turns)) { 1219 if (!ParseIceServers(config.servers, &stuns, &turns)) {
1205 return false; 1220 return false;
1206 } 1221 }
1207 1222
1208 cricket::ServerAddresses cricket_stuns; 1223 cricket::ServerAddresses cricket_stuns;
1209 std::vector<cricket::RelayServerConfig> cricket_turns; 1224 std::vector<cricket::RelayServerConfig> cricket_turns;
1210 ConvertToCricketIceServers(stuns, turns, &cricket_stuns, &cricket_turns); 1225 ConvertToCricketIceServers(stuns, turns, &cricket_stuns, &cricket_turns);
1211 port_allocator_->SetIceServers(cricket_stuns, cricket_turns); 1226 port_allocator_->SetIceServers(cricket_stuns, cricket_turns);
1212 } 1227 }
1213 session_->SetIceConfig(session_->ParseIceConfig(config)); 1228 session_->SetIceConfig(session_->ParseIceConfig(config));
1214 return session_->SetIceTransports(config.type); 1229 return session_->SetIceTransports(config.type);
1215 } 1230 }
1216 1231
1217 bool PeerConnection::AddIceCandidate( 1232 bool PeerConnection::AddIceCandidate(
1218 const IceCandidateInterface* ice_candidate) { 1233 const IceCandidateInterface* ice_candidate) {
1234 TRACE_EVENT0("webrtc", "PeerConnection::AddIceCandidate");
1219 return session_->ProcessIceMessage(ice_candidate); 1235 return session_->ProcessIceMessage(ice_candidate);
1220 } 1236 }
1221 1237
1222 void PeerConnection::RegisterUMAObserver(UMAObserver* observer) { 1238 void PeerConnection::RegisterUMAObserver(UMAObserver* observer) {
1239 TRACE_EVENT0("webrtc", "PeerConnection::RegisterUmaObserver");
1223 uma_observer_ = observer; 1240 uma_observer_ = observer;
1224 1241
1225 if (session_) { 1242 if (session_) {
1226 session_->set_metrics_observer(uma_observer_); 1243 session_->set_metrics_observer(uma_observer_);
1227 } 1244 }
1228 1245
1229 // Send information about IPv4/IPv6 status. 1246 // Send information about IPv4/IPv6 status.
1230 if (uma_observer_ && port_allocator_) { 1247 if (uma_observer_ && port_allocator_) {
1231 if (port_allocator_->flags() & cricket::PORTALLOCATOR_ENABLE_IPV6) { 1248 if (port_allocator_->flags() & cricket::PORTALLOCATOR_ENABLE_IPV6) {
1232 uma_observer_->IncrementEnumCounter( 1249 uma_observer_->IncrementEnumCounter(
1233 kEnumCounterAddressFamily, kPeerConnection_IPv6, 1250 kEnumCounterAddressFamily, kPeerConnection_IPv6,
1234 kPeerConnectionAddressFamilyCounter_Max); 1251 kPeerConnectionAddressFamilyCounter_Max);
1235 } else { 1252 } else {
1236 uma_observer_->IncrementEnumCounter( 1253 uma_observer_->IncrementEnumCounter(
1237 kEnumCounterAddressFamily, kPeerConnection_IPv4, 1254 kEnumCounterAddressFamily, kPeerConnection_IPv4,
1238 kPeerConnectionAddressFamilyCounter_Max); 1255 kPeerConnectionAddressFamilyCounter_Max);
1239 } 1256 }
1240 } 1257 }
1241 } 1258 }
1242 1259
1243 const SessionDescriptionInterface* PeerConnection::local_description() const { 1260 const SessionDescriptionInterface* PeerConnection::local_description() const {
1244 return session_->local_description(); 1261 return session_->local_description();
1245 } 1262 }
1246 1263
1247 const SessionDescriptionInterface* PeerConnection::remote_description() const { 1264 const SessionDescriptionInterface* PeerConnection::remote_description() const {
1248 return session_->remote_description(); 1265 return session_->remote_description();
1249 } 1266 }
1250 1267
1251 void PeerConnection::Close() { 1268 void PeerConnection::Close() {
1269 TRACE_EVENT0("webrtc", "PeerConnection::Close");
1252 // Update stats here so that we have the most recent stats for tracks and 1270 // Update stats here so that we have the most recent stats for tracks and
1253 // streams before the channels are closed. 1271 // streams before the channels are closed.
1254 stats_->UpdateStats(kStatsOutputLevelStandard); 1272 stats_->UpdateStats(kStatsOutputLevelStandard);
1255 1273
1256 session_->Close(); 1274 session_->Close();
1257 } 1275 }
1258 1276
1259 void PeerConnection::OnSessionStateChange(WebRtcSession* /*session*/, 1277 void PeerConnection::OnSessionStateChange(WebRtcSession* /*session*/,
1260 WebRtcSession::State state) { 1278 WebRtcSession::State state) {
1261 switch (state) { 1279 switch (state) {
(...skipping 759 matching lines...) Expand 10 before | Expand all | Expand 10 after
2021 DataChannel* PeerConnection::FindDataChannelBySid(int sid) const { 2039 DataChannel* PeerConnection::FindDataChannelBySid(int sid) const {
2022 for (const auto& channel : sctp_data_channels_) { 2040 for (const auto& channel : sctp_data_channels_) {
2023 if (channel->id() == sid) { 2041 if (channel->id() == sid) {
2024 return channel; 2042 return channel;
2025 } 2043 }
2026 } 2044 }
2027 return nullptr; 2045 return nullptr;
2028 } 2046 }
2029 2047
2030 } // namespace webrtc 2048 } // namespace webrtc
OLDNEW
« no previous file with comments | « no previous file | talk/app/webrtc/webrtcsession.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698