//------------------------------------------------------ CosNotification::QoSProperties CDBProperties::getCDBQoSProps(const std::string& channelName) { CosNotification::QoSProperties retVal; retVal.length(0); //sanity check if (cdbChannelConfigExists(channelName)==false) { return retVal; } //CDB //complete name of the channel within the CDB std::string cdbChannelName = "MACI/Channels/" + channelName; CDB::DAL_var cdbRef = getCDB(); CDB::DAO_var tempDAO = cdbRef->get_DAO_Servant(cdbChannelName.c_str()); //temporary pointer points to the name of the CosNotification //property const char *name_p; //temporary counter unsigned int i = 0U; //commented out because TAO does not support these props /* //EventReliability/////////////////////////////////////////////// { name_p = CosNotification::EventReliability; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); std::string tStringER = tempDAO->get_string(name_p); if(tStringER=="BestEffort") { retVal[i-1].value <<= CosNotification::BestEffort; } else { retVal[i-1].value <<= CosNotification::Persistent; } } //ConnectionReliability/////////////////////////////////////////////// { name_p = CosNotification::ConnectionReliability; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); std::string tStringCR = tempDAO->get_string(name_p); if(tStringCR=="BestEffort") { retVal[i-1].value <<= CosNotification::BestEffort; } else { retVal[i-1].value <<= CosNotification::Persistent; } } */ //Priority///////////////////////////////////////////////////// { name_p = CosNotification::Priority; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); retVal[i-1].value <<= static_cast<CORBA::Short>(tempDAO->get_long(name_p)); } //Timeout////////////////////////////////////////////////////// { name_p = CosNotification::Timeout; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); retVal[i-1].value <<= static_cast<TimeBase::TimeT>(tempDAO->get_long(name_p)); } //OrderPolicy/////////////////////////////////////////////// { name_p = CosNotification::OrderPolicy; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); std::string tStringOP = tempDAO->get_string(name_p); if(tStringOP=="AnyOrder") { retVal[i-1].value <<= CosNotification::AnyOrder; } else if(tStringOP=="FifoOrder") { retVal[i-1].value <<= CosNotification::FifoOrder; } else if(tStringOP=="PriorityOrder") { retVal[i-1].value <<= CosNotification::PriorityOrder; } else if(tStringOP=="DeadlineOrder") { retVal[i-1].value <<= CosNotification::DeadlineOrder; } else { //DWF-throw exception } } //DiscardPolicy/////////////////////////////////////////////// { name_p = CosNotification::DiscardPolicy; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); std::string tStringDP = tempDAO->get_string(name_p); if(tStringDP=="AnyOrder") { retVal[i-1].value <<= CosNotification::AnyOrder; } else if(tStringDP=="FifoOrder") { retVal[i-1].value <<= CosNotification::FifoOrder; } else if(tStringDP=="PriorityOrder") { retVal[i-1].value <<= CosNotification::PriorityOrder; } else if(tStringDP=="DeadlineOrder") { retVal[i-1].value <<= CosNotification::DeadlineOrder; } else if(tStringDP=="LifoOrder") { retVal[i-1].value <<= CosNotification::LifoOrder; } else { //DWF-throw exception } } //commented out because TAO does not support these props /* //Start Time Supported///////////////////////////////////////// { name_p = CosNotification::StartTimeSupported; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); std::string tStringStartTS = tempDAO->get_string(name_p); if(tStringStartTS=="false") { retVal[i-1].value <<= false; } else { retVal[i-1].value <<= true; } } //Stop Time Supported///////////////////////////////////////// { name_p = CosNotification::StopTimeSupported; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); std::string tStringStopTS = tempDAO->get_string(name_p); if(tStringStopTS=="false") { retVal[i-1].value <<= false; } else { retVal[i-1].value <<= true; } } */ //Max Events per Consumer///////////////////////////////////// { name_p = CosNotification::MaxEventsPerConsumer; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); retVal[i-1].value <<= static_cast<CORBA::Long>(tempDAO->get_long(name_p)); } //for debugging purposes only std::string debugMessage = "Length=" + retVal.length(); STATIC_LOG(Logging::BaseLog::LM_DEBUG, "nc::CDBProperties::getCDBQoSProps", debugMessage); return retVal; }
//------------------------------------------------------ CosNotification::AdminProperties CDBProperties::getCDBAdminProps(const std::string& channelName) { CosNotification::AdminProperties retVal; retVal.length(0); //sanity check if (cdbChannelConfigExists(channelName)==false) { ACS_STATIC_SHORT_LOG((LM_INFO, "CDBProperties::getCDBAdminProps", "Channel does not exist.")); return retVal; } //CDB //complete name of the channel within the CDB std::string cdbChannelName = "MACI/Channels/" + channelName; CDB::DAL_var cdbRef = getCDB(); CDB::DAO_var tempDAO = cdbRef->get_DAO_Servant(cdbChannelName.c_str()); //temporary pointer points to the name of the CosNotification //property const char *name_p; //temporary counter unsigned int i = 0U; //MaxQueueLength - TAO 1.1 had a queque of ~5 events. TAO 1.3 allows an // infinite amount of events to be stored. 20 seems like // a reasonable default. { name_p = CosNotification::MaxQueueLength; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); retVal[i-1].value <<= tempDAO->get_long(name_p); } //Max consumers/////////////////////////////////////////////////// { name_p = CosNotification::MaxConsumers; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); retVal[i-1].value <<= tempDAO->get_long(name_p); } //Max suppliers/////////////////////////////////////////////////// { name_p = CosNotification::MaxSuppliers; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); retVal[i-1].value <<= tempDAO->get_long(name_p); } //Reject new events/////////////////////////////////////////////// { name_p = CosNotification::RejectNewEvents; //allocate one extra element i++; retVal.length(i); retVal[i-1].name = CORBA::string_dup(name_p); std::string tString = tempDAO->get_string(name_p); if(tString=="false") { retVal[i-1].value <<= FALSE; } else { retVal[i-1].value <<= TRUE; } } //for debugging purposes only std::string debugMessage = "Length=" + retVal.length(); STATIC_LOG(Logging::BaseLog::LM_DEBUG, "nc::CDBProperties::getCDBAdminProps", debugMessage); return retVal; }