diff options
Diffstat (limited to 'webrtc/modules/rtp_rtcp/source/ssrc_database.h')
-rw-r--r-- | webrtc/modules/rtp_rtcp/source/ssrc_database.h | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/webrtc/modules/rtp_rtcp/source/ssrc_database.h b/webrtc/modules/rtp_rtcp/source/ssrc_database.h index 7129d0de76..7a3133638d 100644 --- a/webrtc/modules/rtp_rtcp/source/ssrc_database.h +++ b/webrtc/modules/rtp_rtcp/source/ssrc_database.h @@ -11,43 +11,41 @@ #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_SSRC_DATABASE_H_ #define WEBRTC_MODULES_RTP_RTCP_SOURCE_SSRC_DATABASE_H_ -#include <map> +#include <set> +#include "webrtc/base/random.h" +#include "webrtc/base/scoped_ptr.h" #include "webrtc/system_wrappers/include/static_instance.h" #include "webrtc/typedefs.h" namespace webrtc { class CriticalSectionWrapper; -class SSRCDatabase -{ -public: - static SSRCDatabase* GetSSRCDatabase(); - static void ReturnSSRCDatabase(); +class SSRCDatabase { + public: + static SSRCDatabase* GetSSRCDatabase(); + static void ReturnSSRCDatabase(); - uint32_t CreateSSRC(); - int32_t RegisterSSRC(const uint32_t ssrc); - int32_t ReturnSSRC(const uint32_t ssrc); + uint32_t CreateSSRC(); + void RegisterSSRC(uint32_t ssrc); + void ReturnSSRC(uint32_t ssrc); -protected: - SSRCDatabase(); - virtual ~SSRCDatabase(); + protected: + SSRCDatabase(); + virtual ~SSRCDatabase(); - static SSRCDatabase* CreateInstance() { return new SSRCDatabase(); } + static SSRCDatabase* CreateInstance() { return new SSRCDatabase(); } -private: - // Friend function to allow the SSRC destructor to be accessed from the - // template class. - friend SSRCDatabase* GetStaticInstance<SSRCDatabase>( - CountOperation count_operation); - static SSRCDatabase* StaticInstance(CountOperation count_operation); + private: + // Friend function to allow the SSRC destructor to be accessed from the + // template class. + friend SSRCDatabase* GetStaticInstance<SSRCDatabase>( + CountOperation count_operation); - uint32_t GenerateRandom(); - - std::map<uint32_t, uint32_t> _ssrcMap; - - CriticalSectionWrapper* _critSect; + rtc::scoped_ptr<CriticalSectionWrapper> crit_; + Random random_ GUARDED_BY(crit_); + std::set<uint32_t> ssrcs_ GUARDED_BY(crit_); }; } // namespace webrtc -#endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_SSRC_DATABASE_H_ +#endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_SSRC_DATABASE_H_ |