mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-01 23:57:37 +08:00
播放器(reader)setGetInfoCB时统一使用Session对象 (#4195)
Co-authored-by: custompal <chenrengen@gosuncn.com>
This commit is contained in:
@@ -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;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user