PeerConnectionStatsCollectorCallback.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #pragma once
  2. #include <api/stats/rtc_stats_collector_callback.h>
  3. #include <api/stats/rtc_stats_report.h>
  4. #include "WebRTCPlugin.h"
  5. namespace unity
  6. {
  7. namespace webrtc
  8. {
  9. class PeerConnectionObject;
  10. class PeerConnectionStatsCollectorCallback;
  11. using DelegateCollectStats =
  12. void (*)(PeerConnectionObject*, PeerConnectionStatsCollectorCallback*, const RTCStatsReport*);
  13. class PeerConnectionStatsCollectorCallback : public RTCStatsCollectorCallback
  14. {
  15. public:
  16. PeerConnectionStatsCollectorCallback(const PeerConnectionStatsCollectorCallback&) = delete;
  17. PeerConnectionStatsCollectorCallback& operator=(const PeerConnectionStatsCollectorCallback&) = delete;
  18. static PeerConnectionStatsCollectorCallback* Create(PeerConnectionObject* connection);
  19. void OnStatsDelivered(const rtc::scoped_refptr<const RTCStatsReport>& report) override;
  20. static void RegisterOnGetStats(DelegateCollectStats callback) { s_collectStatsCallback = callback; }
  21. protected:
  22. explicit PeerConnectionStatsCollectorCallback(PeerConnectionObject* owner) { m_owner = owner; }
  23. ~PeerConnectionStatsCollectorCallback() override = default;
  24. private:
  25. PeerConnectionObject* m_owner = nullptr;
  26. static DelegateCollectStats s_collectStatsCallback;
  27. };
  28. } // end namespace webrtc
  29. } // end namespace unity