MediaPusher: 抽象精简代码

This commit is contained in:
ziyue
2021-11-09 16:46:38 +08:00
parent b96a2291eb
commit dad0c5e3cc
6 changed files with 58 additions and 70 deletions

View File

@@ -46,7 +46,7 @@ void RtmpPusher::teardown() {
}
}
void RtmpPusher::onPublishResult(const SockException &ex, bool handshake_done) {
void RtmpPusher::onPublishResult_l(const SockException &ex, bool handshake_done) {
DebugL << ex.what();
if (ex.getErrCode() == Err_shutdown) {
//主动shutdown的不触发回调
@@ -55,14 +55,10 @@ void RtmpPusher::onPublishResult(const SockException &ex, bool handshake_done) {
if (!handshake_done) {
//播放结果回调
_publish_timer.reset();
if (_on_published) {
_on_published(ex);
}
onPublishResult(ex);
} else {
//播放成功后异常断开回调
if (_on_shutdown) {
_on_shutdown(ex);
}
onShutdown(ex);
}
if (ex) {
@@ -78,7 +74,7 @@ void RtmpPusher::publish(const string &url) {
_tc_url = string("rtmp://") + host_url + "/" + _app;
if (!_app.size() || !_stream_id.size()) {
onPublishResult(SockException(Err_other, "rtmp url非法"), false);
onPublishResult_l(SockException(Err_other, "rtmp url非法"), false);
return;
}
DebugL << host_url << " " << _app << " " << _stream_id;
@@ -99,7 +95,7 @@ void RtmpPusher::publish(const string &url) {
if (!strongSelf) {
return false;
}
strongSelf->onPublishResult(SockException(Err_timeout, "publish rtmp timeout"), false);
strongSelf->onPublishResult_l(SockException(Err_timeout, "publish rtmp timeout"), false);
return false;
}, getPoller()));
@@ -112,12 +108,12 @@ void RtmpPusher::publish(const string &url) {
void RtmpPusher::onErr(const SockException &ex){
//定时器_pPublishTimer为空后表明握手结束了
onPublishResult(ex, !_publish_timer);
onPublishResult_l(ex, !_publish_timer);
}
void RtmpPusher::onConnect(const SockException &err){
if (err) {
onPublishResult(err, false);
onPublishResult_l(err, false);
return;
}
weak_ptr<RtmpPusher> weak_self = dynamic_pointer_cast<RtmpPusher>(shared_from_this());
@@ -138,7 +134,7 @@ void RtmpPusher::onRecv(const Buffer::Ptr &buf){
} catch (exception &e) {
SockException ex(Err_other, e.what());
//定时器_pPublishTimer为空后表明握手结束了
onPublishResult(ex, !_publish_timer);
onPublishResult_l(ex, !_publish_timer);
}
}
@@ -226,10 +222,10 @@ inline void RtmpPusher::send_metaData(){
_rtmp_reader->setDetachCB([weak_self]() {
auto strong_self = weak_self.lock();
if (strong_self) {
strong_self->onPublishResult(SockException(Err_other, "媒体源被释放"), !strong_self->_publish_timer);
strong_self->onPublishResult_l(SockException(Err_other, "媒体源被释放"), !strong_self->_publish_timer);
}
});
onPublishResult(SockException(Err_success, "success"), false);
onPublishResult_l(SockException(Err_success, "success"), false);
//提升发送性能
setSocketFlags();
}