| | |
| | | fdfsClient.rwLock.unlock(); |
| | | } |
| | | |
| | | //# http client 127.0.0.1:9999/resetFdfs |
| | | std::string http_cmd = "http://127.0.0.1:9999/resetFdfs"; |
| | | HttpRequestWithCrul httpRequestWithCrul; |
| | | std::string response_bak = ""; |
| | | std::string postParams_bak = ""; |
| | | httpRequestWithCrul.curl_post_req("http://127.0.0.1:9999/resetFdfs", postParams_bak, response_bak); |
| | | // //# http client 127.0.0.1:9999/resetFdfs |
| | | // std::string http_cmd = "http://127.0.0.1:9999/resetFdfs"; |
| | | // HttpRequestWithCrul httpRequestWithCrul; |
| | | // std::string response_bak = ""; |
| | | // std::string postParams_bak = ""; |
| | | // httpRequestWithCrul.curl_post_req("http://127.0.0.1:9999/resetFdfs", postParams_bak, response_bak); |
| | | } |
| | | } else { |
| | | return "{\"ret_status\": \"传输错误,请检查!\"}"; |
| | |
| | | ../../../../BasicPlatForm/libs/jsoncpp/lib |
| | | ) |
| | | |
| | | |
| | | add_executable(syncDBClient |
| | | main.cpp |
| | | |
| | |
| | | #include <iostream> |
| | | #include <unistd.h> |
| | | #include <MyQueue.h> |
| | | #include <Debug.h> |
| | | #include <atomic> |
| | | #include "GlobalSignalWaitLock.hpp" |
| | | |
| | | #include "opencv2/core.hpp" |
| | | #include "opencv2/highgui.hpp" |
| | | #include <list> |
| | | #include "GlobalSignalWaitLock.hpp" |
| | | #include "basic_struct_for_video_image.h" |
| | | |
| | | extern "C" |
| | |
| | | #define GB28181SDK_GLOBALSIGNALWAITLOCK_H |
| | | |
| | | #include <iostream> |
| | | #include <Debug.h> |
| | | #include <basic/util/thread/RWLock.hpp> |
| | | |
| | | //#define TryCath(CODE) try { \ |
| | |
| | | #include <qt5/QtCore/QDateTime> |
| | | #include <basic/util/app/AppPreference.hpp> |
| | | #include "VideoCaptureElementWithRtp.h" |
| | | #include "RtspAnalysManager.h" |
| | | |
| | | //std::string BASICGB28181::VideoCaptureElementWithRtp::m_chanPubID; |
| | | //BASICGB28181::FFmpegDecoderJPG BASICGB28181::VideoCaptureElementWithRtp::m_fFmpegDecoderJPG; |
| | |
| | | cv::Mat copyMat; |
| | | std::string imageName = p_this->m_fFmpegDecoderJPG.GetImageName(); |
| | | p_this->m_image.copyTo(copyMat); |
| | | // m_pManager->SaveImageToRedis(m_camId, imageName, copyMat); |
| | | m_pManager->SaveImageToRedis(p_this->m_chanPubID, imageName, copyMat); |
| | | } |
| | | p_this->submit(); |
| | | } |
| | |
| | | #include "FFmpegDecoderJPG.h" |
| | | #include "28181SDK.h" |
| | | #include <basic/pipe/PipeElement.h> |
| | | #include "GlobalSignalWaitLock.hpp" |
| | | //#include <RtspAnalysManager.h> |
| | | //#include <VideoToImageMulth/RtspAnalysManager.h> |
| | | |
| | | class RtspAnalysManager; |
| | | |
| | | namespace BASICGB28181 { |
| | | |
| | |
| | | explicit VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1); |
| | | |
| | | virtual ~VideoCaptureElementWithRtp(); |
| | | |
| | | |
| | | /*** |
| | | * 获取当前实时流接收数据线程运行状态 |
| | |
| | | FFmpegDecoderJPG m_fFmpegDecoderJPG; |
| | | cv::Mat m_image; |
| | | long m_userdata; |
| | | RtspAnalysManager *m_pManager; |
| | | |
| | | std::atomic<bool> m_running; |
| | | std::atomic<bool> m_waitSignal; |
| | |
| | | set(CMAKE_BUILD_TYPE debug) |
| | | add_compile_options(-fPIC) |
| | | add_definitions(-DGLOG) |
| | | add_definitions(-DGB28181) |
| | | add_definitions(-DDEBUG_ERR -DDEBUG_INFO -fpermissive) |
| | | add_definitions(-Wall -Wextra) |
| | | SET(LIBS |
| | |
| | | jsoncpp |
| | | pthread |
| | | hiredis |
| | | 28181sdk |
| | | mysqlclient |
| | | StreamParse |
| | | |
| | | ) |
| | | include_directories( |
| | | |
| | | #glog |
| | | ../../../BasicPlatForm/libs/glog/include |
| | | ./rpc |
| | |
| | | ../VideoServer/QiaoJia/DB |
| | | ../VideoServer/QiaoJia/dispatchTool |
| | | ../StructureApp/ |
| | | ../GB28181DecoderModel |
| | | ../VideoToImageMulth |
| | | |
| | | ../../../BasicPlatForm/basic/pipe_element/ffmpeg/ |
| | | ../../../BasicPlatForm/basic/debug/ |
| | | ../../../BasicPlatForm/ |
| | | |
| | | ../../../BasicPlatForm/basic/pipe/ |
| | | |
| | | |
| | | |
| | | ../../../BasicPlatForm/libs/opencv/include |
| | |
| | | |
| | | ../../BasicPlatForm/libs/hiredis-master/include |
| | | ../../../BasicPlatForm/basic/timer_counter/ |
| | | ../../../BasicPlatForm/libs/GB28181/include |
| | | ) |
| | | |
| | | link_directories( |
| | | ../../../BasicPlatForm/libs/GB28181/libs |
| | | #glog |
| | | ../../../BasicPlatForm/libs/glog/lib |
| | | ../../../BasicPlatForm/libs/openssl/lib |
| | |
| | | ../../../BasicPlatForm/libs/ffmpeg/lib |
| | | ../../../BasicPlatForm/libs/jsoncpp/lib |
| | | |
| | | # ../../../BasicPlatForm/libs/libuuid/lib |
| | | # ../../../BasicPlatForm/libs/libuuid/lib |
| | | ../../../BasicPlatForm/libs/Ice-3.7.0/lib64 |
| | | |
| | | ../../../BasicPlatForm/libs/hiredis-master/lib |
| | | ) |
| | | |
| | | add_executable(${PROJECT_NAME} |
| | | ../../../BasicPlatForm/basic/pipe_element/ffmpeg/VideoChangeScore.cpp |
| | | ../GB28181DecoderModel/FFmpegDecoderJPG.cpp |
| | | ../GB28181DecoderModel/GB28181Server.cpp |
| | | ../GB28181DecoderModel/VideoCaptureElementWithRtp.cpp |
| | | ../../../BasicPlatForm/basic/pipe_element/ffmpeg/VideoChangeScore.cpp |
| | | ../../../BasicPlatForm/basic/util/BASE64/Base64.cpp |
| | | # ../../../BasicPlatForm/basic/pipe_element/ffmpeg/FfmpegElement.cpp |
| | | ../VideoServer/QiaoJia/DB/LDBTool.cpp |
| | | ./rpc/RtspAnalysServer.cpp |
| | | RtspCaptureElement.cpp |
| | | RtspAnalysManager.cpp |
| | | ../StructureApp/HiredisTool.cpp |
| | | ../../../BasicPlatForm/basic/timer_counter/Clocktimer.h |
| | | ../../../BasicPlatForm/basic/timer_counter/Clocktimer.cpp |
| | | ./RtspImageRedis.h |
| | | ./RtspImageRedis.cpp |
| | | main.cpp |
| | | # ../../../BasicPlatForm/basic/pipe_element/ffmpeg/FfmpegElement.cpp |
| | | ../VideoServer/QiaoJia/DB/LDBTool.cpp |
| | | ./rpc/RtspAnalysServer.cpp |
| | | RtspCaptureElement.cpp |
| | | RtspAnalysManager.cpp |
| | | ../StructureApp/HiredisTool.cpp |
| | | ../../../BasicPlatForm/basic/timer_counter/Clocktimer.h |
| | | ../../../BasicPlatForm/basic/timer_counter/Clocktimer.cpp |
| | | ../../../BasicPlatForm/basic/util/net_config/net_config.cpp |
| | | ./RtspImageRedis.h |
| | | ./RtspImageRedis.cpp |
| | | main.cpp |
| | | ) |
| | | target_link_libraries(${PROJECT_NAME} |
| | | ${LIBS} |
| | |
| | | * @return -1 添加失败,0 添加成功 |
| | | */ |
| | | int RtspAnalysManager::addCamera(const std::string &index, const std::string &rtsp) { |
| | | #ifndef GB28181 |
| | | auto lst = m_lDBTool->searchCamDevTableAll(); |
| | | Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); |
| | | |
| | | if (m_controllers.find(index) == m_controllers.end()) { |
| | | INFO("MYH DEBUG HERE"); |
| | | if (m_currentCount >= m_maxCount) { |
| | |
| | | //DBG("removeCamera " << index); |
| | | return addCamera(index, rtsp); |
| | | } |
| | | #else |
| | | //#todo |
| | | auto lst = m_lDBTool->searchCamDevTableAll(); |
| | | Record_Config lst_dev = m_lDBTool->searchConfigTableWithinServerInfo(); |
| | | |
| | | //#todo end |
| | | if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end()) { |
| | | INFO("MYH DEBUG HERE"); |
| | | if (m_currentCount >= m_maxCount) { |
| | | ERR("addCamera faild, camera's num is full!") |
| | | return -1; |
| | | } |
| | | INFO("RTSP: " << rtsp << " INDEX:" << index); |
| | | m_imgRedisControllers[index] = new RtspImageRedisElement(index); |
| | | m_imgRedisControllers[index]->start(); |
| | | |
| | | //VideoCaptureElementWithRtp(std::string &chanPubID, int fps, int streamTransType, int gpuIdx = -1) |
| | | m_controllers_videoCapElem[index] = new BASICGB28181::VideoCaptureElementWithRtp(const_cast<string &>(index), |
| | | 25, 1, 0); |
| | | m_controllers_videoCapElem[index]->start(); |
| | | m_controllers_videoCapElem[index]->SetVideoMinMaxSeconds(lst_dev.n_cut_min_duration, |
| | | lst_dev.n_cut_max_duration); |
| | | m_currentCount++; |
| | | return 0; |
| | | |
| | | } else { |
| | | removeCamera(index); |
| | | INFO("removeCamera " << index); |
| | | //DBG("removeCamera " << index); |
| | | return addCamera(index, rtsp); |
| | | } |
| | | #endif |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | int RtspAnalysManager::removeCamera(const std::string &index) { |
| | | INFO("MYH DEBUG HERE"); |
| | | #ifndef GB28181 |
| | | if (m_controllers.find(index) == m_controllers.end())return -1; |
| | | auto controller = m_controllers[index]; |
| | | controller->stop(); |
| | |
| | | delete controller; |
| | | m_controllers.erase(index); |
| | | m_currentCount--; |
| | | |
| | | #else |
| | | if (m_controllers_videoCapElem.find(index) == m_controllers_videoCapElem.end())return -1; |
| | | auto controller = m_controllers_videoCapElem[index]; |
| | | controller->stop(); |
| | | controller->wait(); |
| | | delete controller; |
| | | m_controllers_videoCapElem.erase(index); |
| | | m_currentCount--; |
| | | #endif |
| | | |
| | | auto imgRedis = m_imgRedisControllers[index]; |
| | | imgRedis->stop(); |
| | |
| | | */ |
| | | int RtspAnalysManager::removeAll() { |
| | | INFO("MYH DEBUG HERE"); |
| | | #ifndef GB28181 |
| | | for (auto controller: m_controllers) { |
| | | controller.second->stop(); |
| | | } |
| | |
| | | delete controller.second; |
| | | } |
| | | m_controllers.clear(); |
| | | #else |
| | | for (auto controller: m_controllers_videoCapElem) { |
| | | controller.second->stop(); |
| | | } |
| | | for (auto controller: m_controllers_videoCapElem) { |
| | | controller.second->wait(); |
| | | delete controller.second; |
| | | } |
| | | m_controllers_videoCapElem.clear(); |
| | | #endif |
| | | INFO("MYH DEBUG HERE"); |
| | | |
| | | |
| | | for (auto controller: m_imgRedisControllers) { |
| | | controller.second->stop(); |
| | | } |
| | |
| | | controller.second->wait(); |
| | | delete controller.second; |
| | | } |
| | | m_controllers.clear(); |
| | | m_imgRedisControllers.clear(); |
| | | |
| | | |
| | | m_currentCount = 0; |
| | |
| | | #include <map> |
| | | #include "RtspCaptureElement.h" |
| | | #include "RtspImageRedis.h" |
| | | #include <VideoServer/QiaoJia/DB/LDBTool.h> |
| | | #include <VideoCaptureElementWithRtp.h> |
| | | #include <QiaoJia/DB/LDBTool.h> |
| | | #include <basic/util/app/AppPreference.hpp> |
| | | #include "RtspAnalysServer.h" |
| | | //#include <GB28181DecoderModel/VideoCaptureElementWithRtp.h> |
| | | //#include <VideoToImageMulth/rpc/RtspAnalysServer.h> |
| | | |
| | | //using BASICGB28181::VideoCaptureElementWithRtp; |
| | | |
| | | //用来实现recordVideo的RPC的接口类 |
| | | class RtspAnalysManager :public ::RtspAnalys::RtspAnalysServer{ |
| | | class RtspAnalysManager : public ::RtspAnalys::RtspAnalysServer { |
| | | |
| | | public: |
| | | |
| | | RtspAnalysManager():m_maxCount(50), m_currentCount(0){ |
| | | m_lDBTool=new LDBTool; |
| | | RtspAnalysManager() : m_maxCount(50), m_currentCount(0) { |
| | | m_lDBTool = new LDBTool; |
| | | init(); |
| | | } |
| | | |
| | | RtspAnalysManager(LDBTool *_dbTool); |
| | | virtual ::std::string recordVideo(const ::std::string&, const ::Ice::Current& = ::Ice::emptyCurrent); |
| | | |
| | | virtual ::std::string recordVideo(const ::std::string &, const ::Ice::Current & = ::Ice::emptyCurrent); |
| | | |
| | | virtual ~RtspAnalysManager(); |
| | | |
| | | int addCamera(const std::string &, const std::string& rtsp); |
| | | int addCamera(const std::string &, const std::string &rtsp); |
| | | |
| | | int removeCamera(const std::string &); |
| | | |
| | |
| | | int getCurrentCamCount(); |
| | | |
| | | // 根据camId保存img到Redis,img的Key为imageName |
| | | bool SaveImageToRedis(const std::string& camId,const std::string& imageName,const cv::Mat& img); |
| | | bool SaveImageToRedis(const std::string &camId, const std::string &imageName, const cv::Mat &img); |
| | | |
| | | private: |
| | | void init(); |
| | |
| | | //保存CamID和RtspCaptureElement的映射关系 |
| | | std::map<std::string, RtspCaptureElement *> m_controllers; |
| | | |
| | | //保存CamID和VideoCaptureElementWithRtp的映射关系 |
| | | std::map<std::string, BASICGB28181::VideoCaptureElementWithRtp *> m_controllers_videoCapElem; |
| | | |
| | | //保存CamID和RtspImageRedisElement的映射关系 |
| | | std::map<std::string, RtspImageRedisElement*> m_imgRedisControllers; |
| | | std::map<std::string, RtspImageRedisElement *> m_imgRedisControllers; |
| | | //当前摄像头的数量 |
| | | int m_currentCount; |
| | | // 摄像头的最大数量 |
| | |
| | | #include <opencv2/opencv.hpp> |
| | | #include "../StructureApp/HiredisTool.h" |
| | | #include <atomic> |
| | | |
| | | class RtspAnalysManager; |
| | | |
| | | struct CvCapture_FFMPEG; |
| | | |
| | | /** |
| | | * 使用ffmpeg封装的视频采集流水元素 |
| | | * 输入,rtsp地址或文件(mp4或avi)路径,输出opencv中的cv::Mat |
| | | * 支持GPU硬解码 |
| | | * 主要完成视频帧的获取以及向CvCapture_FFMPEG传送数据 |
| | | */ |
| | | class RtspCaptureElement: public TimerElement { |
| | | public: |
| | | RtspCaptureElement(const std::string& path,const std::string& camId, int fps = 30, int reOpenTime = -1, int gpuIndex = -1,RtspAnalysManager* manager= nullptr); |
| | | //保存视频接口,从RtspAnalysManager发起调用 |
| | | void SaveVideo(const std::string& strImageName); |
| | | /** |
| | | * 使用ffmpeg封装的视频采集流水元素 |
| | | * 输入,rtsp地址或文件(mp4或avi)路径,输出opencv中的cv::Mat |
| | | * 支持GPU硬解码 |
| | | * 主要完成视频帧的获取以及向CvCapture_FFMPEG传送数据 |
| | | */ |
| | | class RtspCaptureElement : public TimerElement { |
| | | public: |
| | | RtspCaptureElement(const std::string &path, const std::string &camId, int fps = 30, int reOpenTime = -1, |
| | | int gpuIndex = -1, RtspAnalysManager *manager = nullptr); |
| | | |
| | | //设置保存视频的最小和最大长度,单位是秒,实际的运行情况有一些差距,需要完善 |
| | | void SetVideoMinMaxSeconds(const int minSeconds,const int maxSeconds); |
| | | private: |
| | | //线程执行函数 |
| | | virtual void timerFunc() override; |
| | | //线程的一些变量初始化,线程启动的时候调用 |
| | | virtual void threadInitial() override; |
| | | //线程结束函数的时候调用,完成一些资源的释放 |
| | | virtual void threadClosing() override; |
| | | //打开视频 |
| | | void openVideo(); |
| | | //保存视频接口,从RtspAnalysManager发起调用 |
| | | void SaveVideo(const std::string &strImageName); |
| | | |
| | | //根据timeStamp创建路径 |
| | | std::string MakeDir(const std::string& timeStamp); |
| | | private: |
| | | //用来抓取视频的Ffmpeg的封装类 |
| | | CvCapture_FFMPEG* m_capture; |
| | | //保存视频流的路径,类似于rtsp://admin:a1234567@192.168.1.201:554/h264/ch2/main/av_stream |
| | | std::string m_path; |
| | | //设置保存视频的最小和最大长度,单位是秒,实际的运行情况有一些差距,需要完善 |
| | | void SetVideoMinMaxSeconds(const int minSeconds, const int maxSeconds); |
| | | |
| | | // Redis的工具类 |
| | | private: |
| | | //线程执行函数 |
| | | virtual void timerFunc() override; |
| | | |
| | | //线程的一些变量初始化,线程启动的时候调用 |
| | | virtual void threadInitial() override; |
| | | |
| | | //线程结束函数的时候调用,完成一些资源的释放 |
| | | virtual void threadClosing() override; |
| | | |
| | | //打开视频 |
| | | void openVideo(); |
| | | |
| | | //根据timeStamp创建路径 |
| | | std::string MakeDir(const std::string &timeStamp); |
| | | |
| | | private: |
| | | //用来抓取视频的Ffmpeg的封装类 |
| | | CvCapture_FFMPEG *m_capture; |
| | | //保存视频流的路径,类似于rtsp://admin:a1234567@192.168.1.201:554/h264/ch2/main/av_stream |
| | | std::string m_path; |
| | | |
| | | // Redis的工具类 |
| | | // HiredisTool m_redisTool; |
| | | |
| | | //对保存到Redis的图片进行计数 |
| | | std::atomic<int> m_picCount{0}; |
| | | //GPU的索引 |
| | | int m_gpuIndex; |
| | | //对保存到Redis的图片进行计数 |
| | | std::atomic<int> m_picCount{0}; |
| | | //GPU的索引 |
| | | int m_gpuIndex; |
| | | |
| | | //打开视频流失败的时候,sleep一段时间 |
| | | int m_reopenTime; |
| | | //打开视频流失败的时候,sleep一段时间 |
| | | int m_reopenTime; |
| | | |
| | | //摄像机ID |
| | | std::string m_camId; |
| | | //摄像机ID |
| | | std::string m_camId; |
| | | |
| | | //用来保存录像视频的路径 |
| | | std::string m_cutPath; |
| | | //用来保存录像视频的路径 |
| | | std::string m_cutPath; |
| | | |
| | | //几张图丢一张,目前是8张丢一张 |
| | | const int m_nPicsPickOne = 8; |
| | | //几张图丢一张,目前是8张丢一张 |
| | | const int m_nPicsPickOne = 8; |
| | | |
| | | RtspAnalysManager * m_pManager; |
| | | }; |
| | | RtspAnalysManager *m_pManager; |
| | | }; |
| | | |
| | | #endif // VIDEOCAPTUREELEMENT_H |
| | |
| | | #include <basic/util/file/FileUtil.h> |
| | | #include <basic/util/app/AppPreference.hpp> |
| | | #include <basic/util/app/AppConfig.h> |
| | | #include <basic/util/app/AppConfig.h> |
| | | |
| | | #include <GB28181Server.h> |
| | | #include <basic/util/net_config/net_config.h> |
| | | |
| | | static void startManager(LDBTool *_dbTool) { |
| | | RtspAnalysManager rtspAnalysManager(_dbTool); |
| | |
| | | } |
| | | } |
| | | |
| | | std::string getLocalIp() { |
| | | unsigned char netmask_old[15] = {0}; |
| | | unsigned char gateway_old[15] = {0}; |
| | | unsigned char ip_old[15] = {0}; |
| | | |
| | | std::string net_ifname = appConfig.getStringProperty("netIfName"); |
| | | std::string str_ip; |
| | | |
| | | if (GetIpAddress(net_ifname.c_str(), ip_old)) { |
| | | std::string ip_old_temp((char *) ip_old); |
| | | str_ip = ip_old_temp; |
| | | } else { |
| | | // value["ipaddr"] = ""; |
| | | ERR("not get ip addr"); |
| | | } |
| | | assert(!str_ip.empty()); |
| | | return std::move(str_ip); |
| | | } |
| | | |
| | | int main(int argc, char **argv) { |
| | | std::cout << __DATE__ << " " << __TIME__ << std::endl; |
| | |
| | | appPref.setIntData("CamStep", atoi(argv[2])); |
| | | appPref.setIntData("RpcServerPort", atoi(argv[3])); |
| | | |
| | | //#todo search from db |
| | | MysqlDBServerCfg mysqlDBServerCfg; |
| | | mysqlDBServerCfg.Host = getLocalIp(); |
| | | mysqlDBServerCfg.Port = 3306; |
| | | mysqlDBServerCfg.UserName = "root"; |
| | | mysqlDBServerCfg.Passwd = "123456"; |
| | | mysqlDBServerCfg.DBName = "EGEyesForVSS"; |
| | | mysqlDBServerCfg.DBConnCount = 5; |
| | | |
| | | |
| | | //#todo search from db |
| | | GBServerCfg gbServerCfg; |
| | | gbServerCfg.SvrIp = getLocalIp(); // 国标服务的ip地址 (本机的ip地址) |
| | | gbServerCfg.SvrPort = 7060; // 国标服务监听的端口 |
| | | gbServerCfg.SvrPubID = "44120000002000000001"; // 国标服务器的ID |
| | | gbServerCfg.bMD5Auth = false; // 是否需要MD5加密 |
| | | gbServerCfg.UserName = "44120100002000000002"; // 国标服务的用户名 (下级设备注册的用户名) |
| | | gbServerCfg.Passwd = "123456"; // 国标服务的密码 (下级设备注册的密码) |
| | | gbServerCfg.SubScribeTime = 3600; // 订阅时间 如果为0 表示不订阅 |
| | | |
| | | SpinLock spinLock; |
| | | |
| | | bool running = false; |
| | | bool serinit = false; |
| | | auto func = [&] { |
| | | spinLock.lock(); |
| | | GB28181Server m_gbs; |
| | | m_gbs.setMysqlConnParam(mysqlDBServerCfg); |
| | | m_gbs.setGBServerParam(gbServerCfg); |
| | | DBG("initServer start before"); |
| | | running = m_gbs.initServer(); |
| | | DBG("initServer start after"); |
| | | |
| | | spinLock.unlock(); |
| | | while (running) { |
| | | usleep(4000); |
| | | } |
| | | |
| | | }; |
| | | |
| | | std::thread thd(func); |
| | | |
| | | usleep(400); |
| | | // ---------------------测试------------------------ |
| | | spinLock.lock(); |
| | | if (!running) { |
| | | ERR("running is false << DB init error"); |
| | | exit(0); |
| | | } |
| | | DBG("test start"); |
| | | |
| | | appPref.setStringData("user.loop.absolute.path", appConfig.getStringProperty("cutPath")); |
| | | IceRpcServer<RtspAnalysManager> server("RtspAnalysServer", appPref.getIntData("RpcServerPort"), "tcp"); |
| | | server.setMessageSizeMax(1024 * 1024 * 50); |