int ObBaseServer::start(bool need_wait) { int rc = OB_SUCCESS; rc = initialize(); if (rc != OB_SUCCESS) { TBSYS_LOG(WARN, "initialize failed"); } else { if (packet_factory_ == NULL) { rc = OB_INVALID_ARGUMENT; TBSYS_LOG(WARN, "packet factory can not be NULL, server not started"); } else { uint32_t local_ip = tbsys::CNetUtil::getLocalAddr(dev_name_); server_id_ = tbsys::CNetUtil::ipToAddr(local_ip, port_); streamer_.setPacketFactory(packet_factory_); setBatchPushPacket(batch_); // IServerAdapter's method transport_.start(); char spec[32]; snprintf(spec, 32, "tcp::%d", port_); spec[31] = '\0'; if (transport_.listen(spec, &streamer_, this) == NULL) { TBSYS_LOG(ERROR, "listen on port %d failed", port_); rc = OB_SERVER_LISTEN_ERROR; } else { TBSYS_LOG(INFO, "listened on port %d", port_); } if (rc == OB_SUCCESS) { rc = start_service(); } if (rc == OB_SUCCESS) { //wait_for_queue(); if (need_wait) { transport_.wait(); } } } } if (need_wait) { stop(); } return rc; }
tair_server::tair_server() { is_stoped = 0; tair_mgr = NULL; req_processor = NULL; conn_manager = NULL; worker_thread_count = TBSYS_CONFIG.getInt(TAIRSERVER_SECTION, TAIR_PROCESS_THREAD_COUNT, -1); duplicate_thread_count = TBSYS_CONFIG.getInt(TAIRSERVER_SECTION, DUPLICATE_THREAD_NUM, DEFAULT_DUPLICATE_THREAD_NUM); task_queue_size = TBSYS_CONFIG.getInt(TAIRSERVER_SECTION,TAIR_TASK_QUEUE_SIZE,100); if (worker_thread_count < 0) { worker_thread_count = sysconf(_SC_NPROCESSORS_CONF); } if (worker_thread_count > 0) { setBatchPushPacket(true); } if (task_queue_size < 0){ task_queue_size = 100; } }