// // 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) { try { RemoteServer &rs = *(RemoteServer *) arg; capnp::EzRpcServer trpcServer(kj::heap(), rs.host, rs.port); auto &serverLoop = trpcServer.getWaitScope(); kj::NEVER_DONE.wait(serverLoop); } catch (kj::Exception e){ LOG_ERROR<