giopstreamimpl.cc

来自「编译工具」· CC 代码 · 共 578 行 · 第 1/2 页

CC
578
字号
/////////////////////////////////////////////////////////////////////////////class giopMaxMsgSizeHandler : public orbOptions::Handler {public:  giopMaxMsgSizeHandler() :     orbOptions::Handler("giopMaxMsgSize",			"giopMaxMsgSize = n >= 8192",			1,			"-ORBgiopMaxMsgSize < n >= 8192 >") {}  void visit(const char* value,orbOptions::Source) throw (orbOptions::BadParam) {    CORBA::ULong v;    if (!orbOptions::getULong(value,v) || v < 8192) {      throw orbOptions::BadParam(key(),value,				 "Invalid value, expect n >= 8192");    }    orbParameters::giopMaxMsgSize = v;  }  void dump(orbOptions::sequenceString& result) {    orbOptions::addKVULong(key(),orbParameters::giopMaxMsgSize,			   result);  }};static giopMaxMsgSizeHandler giopMaxMsgSizeHandler_;/////////////////////////////////////////////////////////////////////////////class clientCallTimeOutPeriodHandler : public orbOptions::Handler {public:  clientCallTimeOutPeriodHandler() :     orbOptions::Handler("clientCallTimeOutPeriod",			"clientCallTimeOutPeriod = n >= 0 in msecs",			1,			"-ORBclientCallTimeOutPeriod < n >= 0 in msecs >") {}  void visit(const char* value,orbOptions::Source) throw (orbOptions::BadParam) {    CORBA::ULong v;    if (!orbOptions::getULong(value,v)) {      throw orbOptions::BadParam(key(),value,				 "Expect n >= 0 in msecs");    }    orbParameters::clientCallTimeOutPeriod.secs = v / 1000;    orbParameters::clientCallTimeOutPeriod.nanosecs = (v % 1000) * 1000000;  }  void dump(orbOptions::sequenceString& result) {    CORBA::ULong v = orbParameters::clientCallTimeOutPeriod.secs * 1000 +      orbParameters::clientCallTimeOutPeriod.nanosecs / 1000000;    orbOptions::addKVULong(key(),v,result);  }};static clientCallTimeOutPeriodHandler clientCallTimeOutPeriodHandler_;/////////////////////////////////////////////////////////////////////////////class supportPerThreadTimeOutHandler : public orbOptions::Handler {public:  supportPerThreadTimeOutHandler() :     orbOptions::Handler("supportPerThreadTimeOut",			"supportPerThreadTimeOut = 0 or 1",			1,			"-ORBsupportPerThreadTimeOut < 0 | 1 >") {}  void visit(const char* value,orbOptions::Source) throw (orbOptions::BadParam) {    CORBA::Boolean v;    if (!orbOptions::getBoolean(value,v)) {      throw orbOptions::BadParam(key(),value,				 orbOptions::expect_boolean_msg);    }    orbParameters::supportPerThreadTimeOut = v;  }  void dump(orbOptions::sequenceString& result) {    orbOptions::addKVBoolean(key(),orbParameters::supportPerThreadTimeOut,			     result);  }};static supportPerThreadTimeOutHandler supportPerThreadTimeOutHandler_;/////////////////////////////////////////////////////////////////////////////class serverCallTimeOutPeriodHandler : public orbOptions::Handler {public:  serverCallTimeOutPeriodHandler() :     orbOptions::Handler("serverCallTimeOutPeriod",			"serverCallTimeOutPeriod = n >= 0 in msecs",			1,			"-ORBserverCallTimeOutPeriod < n >= 0 in msecs >") {}  void visit(const char* value,orbOptions::Source) throw (orbOptions::BadParam) {    CORBA::ULong v;    if (!orbOptions::getULong(value,v)) {      throw orbOptions::BadParam(key(),value,				 "Expect n >= 0 in msecs");    }    orbParameters::serverCallTimeOutPeriod.secs = v / 1000;    orbParameters::serverCallTimeOutPeriod.nanosecs = (v % 1000) * 1000000;  }  void dump(orbOptions::sequenceString& result) {    CORBA::ULong v = orbParameters::serverCallTimeOutPeriod.secs * 1000 +      orbParameters::serverCallTimeOutPeriod.nanosecs / 1000000;    orbOptions::addKVULong(key(),v,result);  }};static serverCallTimeOutPeriodHandler serverCallTimeOutPeriodHandler_;/////////////////////////////////////////////////////////////////////////////class maxInterleavedCallsPerConnectionHandler : public orbOptions::Handler {public:  maxInterleavedCallsPerConnectionHandler() :     orbOptions::Handler("maxInterleavedCallsPerConnection",			"maxInterleavedCallsPerConnection = n > 0",			1,			"-ORBmaxInterleavedCallsPerConnection < n > 0 >") {}  void visit(const char* value,orbOptions::Source) throw (orbOptions::BadParam) {    CORBA::ULong v;    if (!orbOptions::getULong(value,v) || v < 1) {      throw orbOptions::BadParam(key(),value,			 orbOptions::expect_greater_than_zero_ulong_msg);    }    orbParameters::maxInterleavedCallsPerConnection = v;  }  void dump(orbOptions::sequenceString& result) {    orbOptions::addKVULong(key(),orbParameters::maxInterleavedCallsPerConnection,			   result);  }};static maxInterleavedCallsPerConnectionHandler maxInterleavedCallsPerConnectionHandler_;/////////////////////////////////////////////////////////////////////////////static const char* targetaddress_msg = "Expect a value of 0, 1 or 2";class giopTargetAddressModeHandler : public orbOptions::Handler {public:  giopTargetAddressModeHandler() :     orbOptions::Handler("giopTargetAddressMode",			"giopTargetAddressMode = 0,1,2",			1,			"-ORBgiopTargetAddressMode < 0,1,2 >") {}  void visit(const char* value,orbOptions::Source) throw (orbOptions::BadParam) {    CORBA::ULong v;    if (!orbOptions::getULong(value,v)) {      throw orbOptions::BadParam(key(),value,targetaddress_msg);    }    switch (v) {    case 0:      orbParameters::giopTargetAddressMode = GIOP::KeyAddr;      break;    case 1:      orbParameters::giopTargetAddressMode = GIOP::ProfileAddr;      break;    case 2:      orbParameters::giopTargetAddressMode = GIOP::ReferenceAddr;      break;    default:      throw orbOptions::BadParam(key(),value,targetaddress_msg);      break;    }  }  void dump(orbOptions::sequenceString& result) {    const char* v;    if (orbParameters::giopTargetAddressMode == GIOP::KeyAddr)      v = "KeyAddr";     else if (orbParameters::giopTargetAddressMode == GIOP::ProfileAddr)      v = "ProfileAddr";    else if (orbParameters::giopTargetAddressMode == GIOP::ReferenceAddr)      v = "ReferenceAddr";    else       v = "Illegal value";    orbOptions::addKVString(key(),v,result);  }};static giopTargetAddressModeHandler giopTargetAddressModeHandler_;/////////////////////////////////////////////////////////////////////////////class strictIIOPHandler : public orbOptions::Handler {public:  strictIIOPHandler() :     orbOptions::Handler("strictIIOP",			"strictIIOP = 0 or 1",			1,			"-ORBstrictIIOP < 0 | 1 >") {}  void visit(const char* value,orbOptions::Source) throw (orbOptions::BadParam) {    CORBA::Boolean v;    if (!orbOptions::getBoolean(value,v)) {      throw orbOptions::BadParam(key(),value,				 orbOptions::expect_boolean_msg);    }    orbParameters::strictIIOP = v;  }  void dump(orbOptions::sequenceString& result) {    orbOptions::addKVBoolean(key(),orbParameters::strictIIOP,			     result);  }};static strictIIOPHandler strictIIOPHandler_;///////////////////////////////////////////////////////////////////////////////            Module initialiser                                           ///////////////////////////////////////////////////////////////////////////////extern omniInitialiser& omni_giopImpl10_initialiser_;extern omniInitialiser& omni_giopImpl11_initialiser_;extern omniInitialiser& omni_giopImpl12_initialiser_;class omni_giopStreamImpl_initialiser : public omniInitialiser {public:  omni_giopStreamImpl_initialiser() {    orbOptions::singleton().registerHandler(maxGIOPVersionHandler_);    orbOptions::singleton().registerHandler(giopMaxMsgSizeHandler_);    orbOptions::singleton().registerHandler(clientCallTimeOutPeriodHandler_);    orbOptions::singleton().registerHandler(supportPerThreadTimeOutHandler_);    orbOptions::singleton().registerHandler(serverCallTimeOutPeriodHandler_);    orbOptions::singleton().registerHandler(maxInterleavedCallsPerConnectionHandler_);    orbOptions::singleton().registerHandler(giopTargetAddressModeHandler_);    orbOptions::singleton().registerHandler(strictIIOPHandler_);  }  void attach() {    OMNIORB_ASSERT(implHead == 0);    OMNIORB_ASSERT(implMax  == 0);    omni_giopImpl10_initialiser_.attach();    if (orbParameters::maxGIOPVersion.minor >= 1)      omni_giopImpl11_initialiser_.attach();    if (orbParameters::maxGIOPVersion.minor >= 2)      omni_giopImpl12_initialiser_.attach();    {      if (omniORB::trace(25)) {	GIOP::Version v = giopStreamImpl::maxVersion()->version();	omniORB::logger log;	log << "Maximum supported GIOP version is " << (int)v.major 	    << "." << (int)v.minor << "\n";      }    }  }  void detach() {     omni_giopImpl10_initialiser_.detach();    if (orbParameters::maxGIOPVersion.minor >= 1)      omni_giopImpl11_initialiser_.detach();    if (orbParameters::maxGIOPVersion.minor >= 2)      omni_giopImpl12_initialiser_.detach();    implHead = 0;    implMax  = 0;  }};static omni_giopStreamImpl_initialiser initialiser;omniInitialiser& omni_giopStreamImpl_initialiser_ = initialiser;OMNI_NAMESPACE_END(omni)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?