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

Unified Diff: webrtc/api/webrtcsession.h

Issue 2567243003: RTCStatsCollector: Utilize network thread to minimize thread hops. (Closed)
Patch Set: Rebase and rename Get[Session]Stats_n Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/api/test/mock_webrtcsession.h ('k') | webrtc/api/webrtcsession.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/api/webrtcsession.h
diff --git a/webrtc/api/webrtcsession.h b/webrtc/api/webrtcsession.h
index 06d3375e155e55d086ed046aee81a6042a0ae0ab..a5525643d3ec2d400f1e38fdd075658ac00bef43 100644
--- a/webrtc/api/webrtcsession.h
+++ b/webrtc/api/webrtcsession.h
@@ -115,6 +115,20 @@ struct SessionStats {
TransportStatsMap transport_stats;
};
+struct ChannelNamePair {
+ ChannelNamePair(
+ const std::string& content_name, const std::string& transport_name)
+ : content_name(content_name), transport_name(transport_name) {}
+ std::string content_name;
+ std::string transport_name;
+};
+
+struct ChannelNamePairs {
+ rtc::Optional<ChannelNamePair> voice;
+ rtc::Optional<ChannelNamePair> video;
+ rtc::Optional<ChannelNamePair> data;
+};
+
// A WebRtcSession manages general session state. This includes negotiation
// of both the application-level and network-level protocols: the former
// defines what will be sent and the latter defines how it will be sent. Each
@@ -194,6 +208,7 @@ class WebRtcSession :
virtual cricket::DataChannel* data_channel() {
return data_channel_.get();
}
+ std::unique_ptr<ChannelNamePairs> GetChannelNamePairs();
cricket::BaseChannel* GetChannel(const std::string& content_name);
@@ -261,10 +276,14 @@ class WebRtcSession :
// Returns stats for all channels of all transports.
// This avoids exposing the internal structures used to track them.
- virtual bool GetTransportStats(SessionStats* stats);
-
- // Get stats for a specific channel
- bool GetChannelTransportStats(cricket::BaseChannel* ch, SessionStats* stats);
+ // The parameterless version creates |ChannelNamePairs| from |voice_channel|,
+ // |video_channel| and |voice_channel| if available - this requires it to be
+ // called on the signaling thread - and invokes the other |GetStats|. The
+ // other |GetStats| can be invoked on any thread; if not invoked on the
+ // network thread a thread hop will happen.
+ std::unique_ptr<SessionStats> GetStats();
+ virtual std::unique_ptr<SessionStats> GetStats(
+ const ChannelNamePairs& channel_name_pairs);
// virtual so it can be mocked in unit tests
virtual bool GetLocalCertificate(
@@ -415,6 +434,9 @@ class WebRtcSession :
bool CreateDataChannel(const cricket::ContentInfo* content,
const std::string* bundle_transport);
+ std::unique_ptr<SessionStats> GetStats_n(
+ const ChannelNamePairs& channel_name_pairs);
+
// Listens to SCTP CONTROL messages on unused SIDs and process them as OPEN
// messages.
void OnDataChannelMessageReceived(cricket::DataChannel* channel,
@@ -489,7 +511,7 @@ class WebRtcSession :
const std::string sid_;
bool initial_offerer_ = false;
- std::unique_ptr<cricket::TransportController> transport_controller_;
+ const std::unique_ptr<cricket::TransportController> transport_controller_;
MediaControllerInterface* media_controller_;
std::unique_ptr<cricket::VoiceChannel> voice_channel_;
std::unique_ptr<cricket::VideoChannel> video_channel_;
« no previous file with comments | « webrtc/api/test/mock_webrtcsession.h ('k') | webrtc/api/webrtcsession.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698