Beispiel #1
0
  int pullValues( ACE_Configuration_Heap& cf,
                  const ACE_Configuration_Section_Key& key,
                  ValueMap& values ) {
    int index = 0;
    ACE_TString name;
    ACE_Configuration::VALUETYPE type;

    while (cf.enumerate_values( key, index, name, type ) == 0) {
      ACE_TString value;
      if (type == ACE_Configuration::STRING) {
        cf.get_string_value( key, name.c_str(), value );
        values[ACE_TEXT_ALWAYS_CHAR(name.c_str())] =
          ACE_TEXT_ALWAYS_CHAR(value.c_str());
      } else {
        ACE_DEBUG((LM_WARNING, "Unexpected value type in config file (ignored): "
                   "name=%s, type=%d\n", name.c_str(), type));
      }
      index++;
    }
    return index;
  }
Beispiel #2
0
int
Service_Monitor::load(const char* ini_file)
{
	int rc = -1;

	// load ini file
	ACE_Configuration_Heap config;
	config.open();

	ACE_Ini_ImpExp iniIO(config);
	rc = iniIO.import_config(ini_file_.c_str());
	if ( rc != 0 )
		return rc;

	// clear monitors
	monitors_.clear();
	ini_file_ = ini_file;

	// read monitors
	ACE_Configuration_Section_Key sec;
	config.open_section(config.root_section(), ACE_TEXT("*"), 0, sec);

	ACE_TString name;
	ACE_Configuration::VALUETYPE val_type;
	for(int i = 0;
		config.enumerate_values(sec, i, name, val_type) == 0;
		++i)
	{
		ACE_TString value;
		config.get_string_value(sec, name.c_str(), value);
		int monitor_sec = ACE_OS::atoi(value.c_str());

		if ( monitor_sec >= 0 )
			monitors_.insert(std::make_pair(name.c_str(), monitor_sec));
	}

	return rc;
}