// // Created by pansen on 2017/8/4. // #ifndef RTSPNATIVECODEC_REMOTEFUNC_H #define RTSPNATIVECODEC_REMOTEFUNC_H #include #include #include template class RemoteServer{ public: RemoteServer(std::string host,int port):host(host),port(port){}; ~RemoteServer(){}; bool start() { LOG_INFO << "server_thd::start" << LOG_ENDL; if(running == true){ LOG_INFO << "The server_thd is already running" << LOG_ENDL; return false; } running = true; pthread_mutex_init(&mutexSerevr, NULL); // 初始化互斥对象,动态加锁,用于server int retServer = pthread_create(&server_thid, NULL, RemoteServer::rServer_thd, this); if(retServer != 0) { LOGP(ERROR, "server_thd_create: %s/n", strerror(retServer)); running = false; return false; } return true; } void stop(){ // LOG_INFO << "server_thd::stop" << LOG_ENDL; // if (!running) // return; // running = false; // pthread_mutex_destroy(&mutexSerevr); //#todo } bool running; private: std::string host; int port; static void *rServer_thd(void *arg) { RemoteServer& rs = *(RemoteServer*)arg; capnp::EzRpcServer trpcServer(kj::heap(),rs.host, rs.port); auto& serverLoop = trpcServer.getWaitScope(); kj::NEVER_DONE.wait(serverLoop); } pthread_t server_thid; pthread_mutex_t mutexSerevr; }; #endif //RTSPNATIVECODEC_REMOTEFUNC_H