void CThreadedServerApp::Init(void) { CORE_SetLOG(LOG_cxx2c()); CORE_SetLOCK(MT_LOCK_cxx2c()); auto_ptr<CArgDescriptions> arg_desc(new CArgDescriptions); arg_desc->SetUsageContext(GetArguments().GetProgramBasename(), "sample server using thread pools"); arg_desc->AddKey("port", "N", "TCP port number on which to listen", CArgDescriptions::eInteger); arg_desc->SetConstraint("port", new CArgAllow_Integers(0, 0xFFFF)); arg_desc->AddDefaultKey("threads", "N", "Number of initial threads", CArgDescriptions::eInteger, "5"); arg_desc->AddDefaultKey("maxThreads", "N", "Maximum number of simultaneous threads", CArgDescriptions::eInteger, "10"); arg_desc->AddDefaultKey("queue", "N", "Maximum size of request queue", CArgDescriptions::eInteger, "20"); {{ CArgAllow* constraint = new CArgAllow_Integers(1, 999); arg_desc->SetConstraint("threads", constraint); arg_desc->SetConstraint("maxThreads", constraint); arg_desc->SetConstraint("queue", constraint); }} SetupArgDescriptions(arg_desc.release()); }
void CServerTestApp::Init(void) { CORE_SetLOCK(MT_LOCK_cxx2c()); CORE_SetLOG(LOG_cxx2c()); auto_ptr<CArgDescriptions> arg_desc(new CArgDescriptions); arg_desc->SetUsageContext(GetArguments().GetProgramBasename(), "CServer test application"); arg_desc->AddDefaultKey("srvthreads", "N", "Initial number of server threads", CArgDescriptions::eInteger, "5"); arg_desc->AddDefaultKey("maxsrvthreads", "N", "Maximum number of server threads", CArgDescriptions::eInteger, "10"); arg_desc->AddDefaultKey("clthreads", "N", "Initial number of client threads", CArgDescriptions::eInteger, "5"); arg_desc->AddDefaultKey("maxclthreads", "N", "Maximum number of client threads", CArgDescriptions::eInteger, "10"); arg_desc->AddDefaultKey("requests", "N", "Number of requests to make", CArgDescriptions::eInteger, "100"); CArgAllow* constraint = new CArgAllow_Integers(1, 999); arg_desc->SetConstraint("srvthreads", constraint); arg_desc->SetConstraint("maxsrvthreads", constraint); arg_desc->SetConstraint("clthreads", constraint); arg_desc->SetConstraint("maxclthreads", constraint); arg_desc->SetConstraint("requests", constraint); arg_desc->AddDefaultKey("maxdelay", "N", "Maximum delay in milliseconds", CArgDescriptions::eInteger, "1000"); SetupArgDescriptions(arg_desc.release()); }