From d6d861c4015767a211855218f42f1825c1b6e661 Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Thu, 9 Jul 2020 10:57:17 +0800 Subject: [PATCH] =?UTF-8?q?openRtpServer=E6=8E=A5=E5=8F=A3=E4=B8=8D?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E6=B7=BB=E5=8A=A0=E9=87=8D=E5=A4=8D=E7=9A=84?= =?UTF-8?q?stream=5Fid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/WebApi.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/server/WebApi.cpp b/server/WebApi.cpp index 33ed0cbd..7f2de674 100644 --- a/server/WebApi.cpp +++ b/server/WebApi.cpp @@ -762,19 +762,23 @@ void installWebApi() { CHECK_ARGS("port", "enable_tcp", "stream_id"); auto stream_id = allArgs["stream_id"]; + + lock_guard lck(s_rtpServerMapMtx); + if(s_rtpServerMap.find(stream_id) != s_rtpServerMap.end()) { + //为了防止RtpProcess所有权限混乱的问题,不允许重复添加相同的stream_id + throw InvalidArgsException("该stream_id已存在"); + } + RtpServer::Ptr server = std::make_shared(); server->start(allArgs["port"], stream_id, allArgs["enable_tcp"].as()); - server->setOnDetach([stream_id]() { //设置rtp超时移除事件 lock_guard lck(s_rtpServerMapMtx); s_rtpServerMap.erase(stream_id); }); - lock_guard lck(s_rtpServerMapMtx); - //保存对象,强制覆盖 - s_rtpServerMap[stream_id] = server; - + //保存对象 + s_rtpServerMap.emplace(stream_id, server); //回复json val["port"] = server->getPort(); });