Summary of changes:
* We're now using an enum for types instead of strings which both eliminates unecessary string creations+copies and further restricts the type to a known set at compile time.
* IDs are now a separate type instead of a string, copying of Values is not possible and values are const to allow grabbing references outside of the statscollector.
* StatsReport member variables are no longer public.
* Consolidated code in StatsCollector (e.g. merged PrepareLocalReport and PrepareRemoteReport).
* Refactored methods that forced copies of string (e.g. ExtractValueFromReport).
* More asserts for thread correctness.
* Using std::list for the StatsSet instead of a set since order is not important and updates are more efficient in list<>.
BUG=2822
R=hta@webrtc.org, perkj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/40439004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8110 4adac7df-926f-26a2-2b94-8c16560cd09d
> Update StatsCollector's interface in preparation of more changes.
>
> This CL is the first of three and this one contains interface additions (not deletion for backwards compatibility) as well as a few necessary updates to internal code.
>
> The next CL will be in Chromium to consume the new new methods and remove dependency on the old ones.
>
> The third CL will then contain the bulk of the updates and improvements and be compatible with this interface.
>
> BUG=2822
> R=perkj@webrtc.org
>
> Review URL: https://webrtc-codereview.appspot.com/36829004TBR=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/37669004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8096 4adac7df-926f-26a2-2b94-8c16560cd09d
This CL is the first of three and this one contains interface additions (not deletion for backwards compatibility) as well as a few necessary updates to internal code.
The next CL will be in Chromium to consume the new new methods and remove dependency on the old ones.
The third CL will then contain the bulk of the updates and improvements and be compatible with this interface.
BUG=2822
R=perkj@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/36829004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8095 4adac7df-926f-26a2-2b94-8c16560cd09d
Expose adapter_type from Candidate such that we could add jmidata on top of this.
Created a new type of report just for Ice candidate. The candidate's id is used as part of report identifier. This code change only reports the best connection's local candidate's adapter type. There should be cleaning later to move other candidate's attributes to the new report.
This is migrated from issue 32599004
BUG=
R=juberti@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/36379004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7885 4adac7df-926f-26a2-2b94-8c16560cd09d
The bot that had the problem was using an old version of STL, so relanding.
> Revert 6863 "Refactor StatsCollector and associated types."
>
> Breaks chrome compilation on Mac:
>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:252:8:
> error: no matching constructor for initialization of
> 'webrtc::StatsReport'
> _Tp __x_copy = __x;
> ^ ~~~
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_vector.h:608:4:
> note: in instantiation of member function
> 'std::vector<webrtc::StatsReport, std::allocator<webrtc::StatsReport>
> >::_M_insert_aux' requested here
> _M_insert_aux(end(), __x);
> ^
> ../../content/renderer/media/mock_peer_connection_impl.cc:282:11:
> note: in instantiation of member function
> 'std::vector<webrtc::StatsReport, std::allocator<webrtc::StatsReport>
> >::push_back' requested here
> reports.push_back(report1);
> ^
> ../../third_party/libjingle/source/talk/app/webrtc/statstypes.h:49:3:
> note: candidate constructor not viable: requires 0 arguments, but 1
> was provided
> StatsReport() : timestamp(0) {}
>
>
>
> > Refactor StatsCollector and associated types.
> > * Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
> > * Reports are now managed in a set, not a map, since it's enough to store the id in one place.
> > * Report ids are now const.
> > * Copying of data has been greatly reduced.
> > * This change includes preparation work for making GetStats fully async.
> >
> > This is a reland of r6778 which was reverted due to fyi bots failing.
> > I found and fixed the issue which was that in a couple of places I needed to replace a report instead of finding+updating an existing one.
> >
> > R=xians@webrtc.org
> >
> > Review URL: https://webrtc-codereview.appspot.com/15119004
>
> TBR=tommi@webrtc.org
>
> Review URL: https://webrtc-codereview.appspot.com/21169004TBR=niklas.enbom@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/22099004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6908 4adac7df-926f-26a2-2b94-8c16560cd09d
Breaks chrome compilation on Mac:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:252:8:
error: no matching constructor for initialization of
'webrtc::StatsReport'
_Tp __x_copy = __x;
^ ~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_vector.h:608:4:
note: in instantiation of member function
'std::vector<webrtc::StatsReport, std::allocator<webrtc::StatsReport>
>::_M_insert_aux' requested here
_M_insert_aux(end(), __x);
^
../../content/renderer/media/mock_peer_connection_impl.cc:282:11:
note: in instantiation of member function
'std::vector<webrtc::StatsReport, std::allocator<webrtc::StatsReport>
>::push_back' requested here
reports.push_back(report1);
^
../../third_party/libjingle/source/talk/app/webrtc/statstypes.h:49:3:
note: candidate constructor not viable: requires 0 arguments, but 1
was provided
StatsReport() : timestamp(0) {}
> Refactor StatsCollector and associated types.
> * Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
> * Reports are now managed in a set, not a map, since it's enough to store the id in one place.
> * Report ids are now const.
> * Copying of data has been greatly reduced.
> * This change includes preparation work for making GetStats fully async.
>
> This is a reland of r6778 which was reverted due to fyi bots failing.
> I found and fixed the issue which was that in a couple of places I needed to replace a report instead of finding+updating an existing one.
>
> R=xians@webrtc.org
>
> Review URL: https://webrtc-codereview.appspot.com/15119004TBR=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/21169004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6897 4adac7df-926f-26a2-2b94-8c16560cd09d
* Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
* Reports are now managed in a set, not a map, since it's enough to store the id in one place.
* Report ids are now const.
* Copying of data has been greatly reduced.
* This change includes preparation work for making GetStats fully async.
This is a reland of r6778 which was reverted due to fyi bots failing.
I found and fixed the issue which was that in a couple of places I needed to replace a report instead of finding+updating an existing one.
R=xians@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/15119004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6863 4adac7df-926f-26a2-2b94-8c16560cd09d
* Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
* Reports are now managed in a set, not a map, since it's enough to store the id in one place.
* Report ids are now const.
* Copying of data has been greatly reduced.
* This change includes preparation work for making GetStats fully async.
(This is a reland of the original attempt in r6747)
R=xians@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/18919004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6778 4adac7df-926f-26a2-2b94-8c16560cd09d
Broke build on android.
> Refactor StatsCollector and associated types.
> * Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
> * Reports are now managed in a set, not a map, since it's enough to store the id in one place.
> * Report ids are now const.
> * Copying of data has been greatly reduced.
> * This change includes preparation work for making GetStats fully async.
>
> R=xians@webrtc.org
>
> Review URL: https://webrtc-codereview.appspot.com/18819004TBR=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16139004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6746 4adac7df-926f-26a2-2b94-8c16560cd09d
* Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
* Reports are now managed in a set, not a map, since it's enough to store the id in one place.
* Report ids are now const.
* Copying of data has been greatly reduced.
* This change includes preparation work for making GetStats fully async.
R=xians@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/18819004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6745 4adac7df-926f-26a2-2b94-8c16560cd09d
This is required since the session pointer is currently used on multiple threads but there's no synchronization code to guard it.
I'm removing the set_session() method and session() getter since they would cause problems if used without synchronization.
This is a reland of an already reviewed cl that got reverted by mistake.
TBR=xians@google.com
Review URL: https://webrtc-codereview.appspot.com/13959004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6677 4adac7df-926f-26a2-2b94-8c16560cd09d
Before this patch, when switching from voice mode to stereo mode, the stats won't be updated because StatsCollector binded the ssrc report with the old track, so the report can't be updated by the new track.
This patch fixes the porblem by changing the ssrc report track id to use the new track id.
TEST=libjingle_peerconnection_unittest --gtest_filter="*StatsCollectorTest*"
R=hta@chromium.org
Review URL: https://webrtc-codereview.appspot.com/17859004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6632 4adac7df-926f-26a2-2b94-8c16560cd09d