播放器(reader)setGetInfoCB时统一使用Session对象 (#4195)

Co-authored-by: custompal <chenrengen@gosuncn.com>
This commit is contained in:
custompal
2025-03-21 15:22:48 +08:00
committed by GitHub
parent fd89e0d801
commit f0204ea3b3
10 changed files with 54 additions and 54 deletions

View File

@@ -15,9 +15,37 @@ using namespace toolkit;
namespace mediakit {
HlsCookieData::HlsCookieData(const MediaInfo &info, const std::shared_ptr<SockInfo> &sock_info) {
class SockInfoImp : public SockInfo {
public:
using Ptr = std::shared_ptr<SockInfoImp>;
std::string get_local_ip() override { return _local_ip; }
uint16_t get_local_port() override { return _local_port; }
std::string get_peer_ip() override { return _peer_ip; }
uint16_t get_peer_port() override { return _peer_port; }
std::string getIdentifier() const override { return _identifier; }
std::string _local_ip;
std::string _peer_ip;
std::string _identifier;
uint16_t _local_port;
uint16_t _peer_port;
};
HlsCookieData::HlsCookieData(const MediaInfo &info, const std::shared_ptr<Session> &session) {
_info = info;
auto sock_info = std::make_shared<SockInfoImp>();
sock_info->_identifier = session->getIdentifier();
sock_info->_peer_ip = session->get_peer_ip();
sock_info->_peer_port = session->get_peer_port();
sock_info->_local_ip = session->get_local_ip();
sock_info->_local_port = session->get_local_port();
_sock_info = sock_info;
_session = session;
_added = std::make_shared<bool>(false);
addReaderCount();
}
@@ -34,10 +62,10 @@ void HlsCookieData::addReaderCount() {
// HlsMediaSource has been destroyed
*added = false;
});
auto info = _sock_info;
_ring_reader->setGetInfoCB([info]() {
std::weak_ptr<Session> weak_session = _session;
_ring_reader->setGetInfoCB([weak_session]() {
Any ret;
ret.set(info);
ret.set(std::static_pointer_cast<Session>(weak_session.lock()));
return ret;
});
}

View File

@@ -14,6 +14,7 @@
#include "Common/MediaSource.h"
#include "Util/TimeTicker.h"
#include "Util/RingBuffer.h"
#include "Network/Session.h"
#include <atomic>
namespace mediakit {
@@ -89,7 +90,7 @@ class HlsCookieData {
public:
using Ptr = std::shared_ptr<HlsCookieData>;
HlsCookieData(const MediaInfo &info, const std::shared_ptr<toolkit::SockInfo> &sock_info);
HlsCookieData(const MediaInfo &info, const std::shared_ptr<toolkit::Session> &session);
~HlsCookieData();
void addByteUsage(size_t bytes);
@@ -106,6 +107,7 @@ private:
toolkit::Ticker _ticker;
std::weak_ptr<HlsMediaSource> _src;
std::shared_ptr<toolkit::SockInfo> _sock_info;
std::weak_ptr<toolkit::Session> _session;
HlsMediaSource::RingType::RingReader::Ptr _ring_reader;
};