📄 orboptions.cc
字号:
for (i=0; i<argc; i++) { if (!strcmp(argv[i], "-ORBtraceLevel")) { if (i+1 == argc) { throw orbOptions::BadParam("traceLevel", "<missing>", "Expected parameter missing"); } CORBA::ULong v; if (!orbOptions::getULong(argv[i+1], v)) throw orbOptions::BadParam("traceLevel", argv[i+1], orbOptions::expect_ulong_msg); omniORB::traceLevel = v; if (v >= 10) omniORB::traceExceptions = 1; break; } } for (i=0; i<argc; i++) { if (!strcmp(argv[i], "-ORBtraceFile")) { if (i+1 == argc) { throw orbOptions::BadParam("traceFile", "<missing>", "Expected parameter missing"); } omniORB::setLogFilename(argv[i+1]); break; } }}////////////////////////////////////////////////////////////////////////const char*orbOptions::getConfigFileName(int argc, char** argv, const char* fname) throw (orbOptions::Unknown,orbOptions::BadParam) { for (int i=0; i<argc; i++) { if (!strcmp(argv[i], "-ORBconfigFile")) { if (i+1 == argc) { throw orbOptions::BadParam("configFile", "<missing>", "Expected parameter missing"); } return argv[i+1]; } } return fname;}////////////////////////////////////////////////////////////////////////voidorbOptions::importFromEnv() throw (orbOptions::Unknown,orbOptions::BadParam) { omnivector<orbOptions::Handler*>::const_iterator i = pd_handlers.begin(); omnivector<orbOptions::Handler*>::const_iterator last = pd_handlers.end(); for (; i != last; i++) { CORBA::String_var envkey; envkey = CORBA::string_alloc(strlen((*i)->key())+3); sprintf(envkey,"ORB%s",(*i)->key()); const char* value = getenv(envkey); if (value && strlen(value)) addOption((*i)->key(),value,fromEnvironment); }}////////////////////////////////////////////////////////////////////////orbOptions::sequenceString*orbOptions::usage() const { if (!pd_handlers_sorted) ((orbOptions*)this)->sortHandlers(); sequenceString_var result(new sequenceString(pd_handlers.size())); result->length(pd_handlers.size()); omnivector<orbOptions::Handler*>::const_iterator i = pd_handlers.begin(); omnivector<orbOptions::Handler*>::const_iterator last = pd_handlers.end(); int j = 0; for (; i != last; i++) { if ((*i)->usage()) { result[j] = (*i)->usage(); j++; } } result->length(j); // some options may be obsoleted. They are those // with no usage strings. We have to adjust the length // to cater for their omission. return result._retn();}////////////////////////////////////////////////////////////////////////orbOptions::sequenceString*orbOptions::usageArgv() const { if (!pd_handlers_sorted) ((orbOptions*)this)->sortHandlers(); sequenceString_var result(new sequenceString(pd_handlers.size())); result->length(pd_handlers.size()); omnivector<orbOptions::Handler*>::const_iterator i = pd_handlers.begin(); omnivector<orbOptions::Handler*>::const_iterator last = pd_handlers.end(); int j = 0; for (; i != last; i++) { if ((*i)->usageArgv()) { result[j] = (*i)->usageArgv(); j++; } } result->length(j); // some options may be obsoleted. They are those // with no usage strings. We have to adjust the length // to cater for their omission. return result._retn();}////////////////////////////////////////////////////////////////////////orbOptions::sequenceString*orbOptions::dumpSpecified() const { sequenceString_var result(new sequenceString(pd_values.size())); result->length(pd_values.size()); omnivector<HandlerValuePair*>::const_iterator i = pd_values.begin(); omnivector<HandlerValuePair*>::const_iterator last = pd_values.end(); int j = 0; for (; i != last; i++,j++) { CORBA::String_var kv; CORBA::ULong l = strlen((*i)->handler_->key()) + strlen((*i)->value_) + 3; kv = CORBA::string_alloc(l); sprintf(kv,"%s = %s", (*i)->handler_->key(),(const char*)((*i)->value_)); result[j] = kv._retn(); } return result._retn();}////////////////////////////////////////////////////////////////////////orbOptions::sequenceString*orbOptions::dumpCurrentSet() const { if (!pd_handlers_sorted) ((orbOptions*)this)->sortHandlers(); sequenceString_var result(new sequenceString()); omnivector<orbOptions::Handler*>::const_iterator i = pd_handlers.begin(); omnivector<orbOptions::Handler*>::const_iterator last = pd_handlers.end(); for (; i != last; i++) { (*i)->dump(result.inout()); } return result._retn();}////////////////////////////////////////////////////////////////////////orbOptions&orbOptions::singleton() { static orbOptions* singleton_ = 0; if (!singleton_) { singleton_ = new orbOptions(); } return *singleton_;}////////////////////////////////////////////////////////////////////////CORBA::BooleanorbOptions::getBoolean(const char* value, CORBA::Boolean& result) { long v; v = strtol(value,0,10); if (v != 0 && v != 1) return 0; result = v; return 1;}////////////////////////////////////////////////////////////////////////CORBA::BooleanorbOptions::getULong(const char* value, CORBA::ULong& result) { unsigned long v; v = strtoul(value,0,10); if (v == ULONG_MAX && errno == ERANGE) return 0; result = v; return 1;}////////////////////////////////////////////////////////////////////////voidorbOptions::addKVBoolean(const char* key, CORBA::Boolean value, orbOptions::sequenceString& result) { CORBA::String_var kv; CORBA::ULong l; l = strlen(key) + 4; kv = CORBA::string_alloc(l); sprintf(kv,"%s = %s",key,(value ? "1" : "0")); l = result.length(); result.length(l+1); result[l] = kv._retn();}////////////////////////////////////////////////////////////////////////voidorbOptions::addKVULong(const char* key, CORBA::ULong value, orbOptions::sequenceString& result) { CORBA::String_var kv; CORBA::ULong l; l = strlen(key) + 16; kv = CORBA::string_alloc(l); sprintf(kv,"%s = %lu",key,(unsigned long)value); l = result.length(); result.length(l+1); result[l] = kv._retn();}////////////////////////////////////////////////////////////////////////voidorbOptions::addKVString(const char* key, const char* value, orbOptions::sequenceString& result) { CORBA::String_var kv; CORBA::ULong l; l = strlen(key) + strlen(value) + 3; kv = CORBA::string_alloc(l); sprintf(kv,"%s = %s",key,value); l = result.length(); result.length(l+1); result[l] = kv._retn();}////////////////////////////////////////////////////////////////////////const char* orbOptions::expect_boolean_msg = "Invalid value, expect 0 or 1";const char* orbOptions::expect_ulong_msg = "Invalid value, expect n >= 0";const char* orbOptions::expect_greater_than_zero_ulong_msg = "Invalid value, expect n >= 1";/////////////////////////////////////////////////////////////////////////////// Module initialiser /////////////////////////////////////////////////////////////////////////////////// No need to register this initialiser to ORB_init.//class omni_orbOptions_initialiser : public omniInitialiser {public: omni_orbOptions_initialiser() { orbOptions& s = orbOptions::singleton(); s.reset(); } virtual ~omni_orbOptions_initialiser() { orbOptions* s = &orbOptions::singleton(); delete s; } void attach() { } void detach() { }};static omni_orbOptions_initialiser initialiser;omniInitialiser& omni_orbOptions_initialiser_ = initialiser;OMNI_NAMESPACE_END(omni)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -