254 lines
12 KiB
C++
254 lines
12 KiB
C++
//----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (C) Intel Corporation, 2007 - 2008.
|
|
//
|
|
// File: ConfigFormat.cpp
|
|
//
|
|
// Contents: Configures the formats needed to configure the MPS.
|
|
//
|
|
// Notes:
|
|
//----------------------------------------------------------------------------
|
|
|
|
#include "ConfigFormat.h"
|
|
#include <memory>
|
|
|
|
// Static initialization.
|
|
ConfigFormats *ConfigFormats::instance_ = NULL;
|
|
|
|
ConfigFormats::ConfigFormats() : format_static_mandatory_(NULL), format_static_optional_(NULL),
|
|
format_dynamic_mandatory_(NULL), format_dynamic_optional_(NULL)
|
|
{
|
|
// Start configuring all the data members
|
|
|
|
// Set format_static_mandatory_
|
|
format_static_mandatory_ = new Format();
|
|
|
|
// Set Network section
|
|
format_static_mandatory_->addOuter(ACE_TString(NETWORK_SECTION));
|
|
format_static_mandatory_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(AMT_LISTEN_IP_ELEMENT),
|
|
new Element_Type_Enum(IP_TYPE));
|
|
//format_static_mandatory_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(AMT_LISTEN_IPv6_ELEMENT),
|
|
// new Element_Type_Enum(IP_TYPE));
|
|
|
|
format_static_mandatory_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(AMT_LISTEN_PORT_ELEMENT),
|
|
new Element_Type_Enum(PORT_TYPE));
|
|
format_static_mandatory_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(MC_SOCKS_LISTEN_IP_ELEMENT),
|
|
new Element_Type_Enum(IP_TYPE));
|
|
|
|
format_static_mandatory_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(MC_SOCKS_LISTEN_PORT_ELEMENT),
|
|
new Element_Type_Enum(PORT_TYPE));
|
|
//format_static_mandatory_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(MC_SOCKS_LISTEN_INET_ELEMENT),
|
|
// new Element_Type_Enum(INET_TYPE));
|
|
format_static_mandatory_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(MC_HTTP_LISTEN_PORT_ELEMENT),
|
|
new Element_Type_Enum(PORT_TYPE));
|
|
|
|
// Set AuthenticateConnections section
|
|
format_static_mandatory_->addOuter(ACE_TString(AMT_AUTHENTICATE_SECTION));
|
|
format_static_mandatory_->addInner(ACE_TString(AMT_AUTHENTICATE_SECTION), ACE_TString(NEED_AUTHENTICATE_ELEMENT),
|
|
new Element_Type_Enum(BOOL_TYPE));
|
|
|
|
// Set Socks Authenticate section
|
|
format_static_mandatory_->addOuter(ACE_TString(SOCKS_AUTHENTICATE_SECTION));
|
|
format_static_mandatory_->addInner(ACE_TString(SOCKS_AUTHENTICATE_SECTION), ACE_TString(NEED_AUTHENTICATE_ELEMENT),
|
|
new Element_Type_Enum(BOOL_TYPE));
|
|
|
|
// Set SOAP Authenticate section
|
|
format_static_mandatory_->addOuter(ACE_TString(SOAP_AUTHENTICATE_SECTION));
|
|
format_static_mandatory_->addInner(ACE_TString(SOAP_AUTHENTICATE_SECTION), ACE_TString(NEED_AUTHENTICATE_ELEMENT),
|
|
new Element_Type_Enum(BOOL_TYPE));
|
|
|
|
// Set MC Authenticate section
|
|
format_static_mandatory_->addOuter(ACE_TString(NOTIFICATION_AUTHENTICATION_SECTION));
|
|
format_static_mandatory_->addInner(ACE_TString(NOTIFICATION_AUTHENTICATION_SECTION), ACE_TString(NEED_NOTIFICATION_AUTH_ELEMENT),
|
|
new Element_Type_Enum(BOOL_TYPE));
|
|
|
|
// Set Filtering section
|
|
format_static_mandatory_->addOuter(ACE_TString(FILTERING_SECTION));
|
|
format_static_mandatory_->addInner(ACE_TString(FILTERING_SECTION), ACE_TString(FILTER_UNAUTHORIZED_SERVERS_ELEMENT),
|
|
new Element_Type_Enum(BOOL_TYPE));
|
|
|
|
// Set format_static_optional_
|
|
format_static_optional_ = new Format();
|
|
|
|
//Set Network section
|
|
format_static_optional_->addOuter(ACE_TString(NETWORK_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(MC_HTTP_LISTEN_IP_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, MC_HTTP_LISTEN_IP_DEFAULT));
|
|
format_static_optional_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(MC_SOAP_LISTEN_IP_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, MC_SOAP_LISTEN_IP_DEFAULT));
|
|
format_static_optional_->addInner(ACE_TString(NETWORK_SECTION), ACE_TString(MC_SOAP_LISTEN_PORT_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, MC_SOAP_LISTEN_PORT_DEFAULT));
|
|
|
|
// Set Logger section
|
|
format_static_optional_->addOuter(ACE_TString(LOGGER_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(LOGGER_SECTION), ACE_TString(LOG_FILE_PATH_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(LOG_FILE_PATH_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(LOGGER_SECTION), ACE_TString(LOG_FILE_NAME_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(LOG_FILE_NAME_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(LOGGER_SECTION), ACE_TString(LOG_FILE_SIZE_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ACE_TString(LOG_FILE_SIZE_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(LOGGER_SECTION), ACE_TString(LOG_FILE_MAX_FILES_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ACE_TString(LOG_FILE_MAX_FILES_DEFAULT)));
|
|
|
|
// Set AuthenticateConnections section
|
|
format_static_optional_->addOuter(ACE_TString(AMT_AUTHENTICATE_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(AMT_AUTHENTICATE_SECTION), ACE_TString(DLL_NAME_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(AMT_DLL_NAME_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(AMT_AUTHENTICATE_SECTION), ACE_TString(DLL_PARAMETERS_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(AMT_DLL_PARAMETERS_DEFAULT)));
|
|
|
|
// Set Socks Authenticate section
|
|
format_static_optional_->addOuter(ACE_TString(SOCKS_AUTHENTICATE_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(SOCKS_AUTHENTICATE_SECTION), ACE_TString(DLL_NAME_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(SOCKS_DLL_NAME_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(SOCKS_AUTHENTICATE_SECTION), ACE_TString(DLL_PARAMETERS_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(SOCKS_DLL_PARAMETERS_DEFAULT)));
|
|
|
|
// Set Soap Authenticate section
|
|
format_static_optional_->addOuter(ACE_TString(SOAP_AUTHENTICATE_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(SOAP_AUTHENTICATE_SECTION), ACE_TString(DLL_NAME_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(SOAP_DLL_NAME_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(SOAP_AUTHENTICATE_SECTION), ACE_TString(DLL_PARAMETERS_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(SOAP_DLL_PARAMETERS_DEFAULT)));
|
|
|
|
// Set MC Authenticate section
|
|
format_static_optional_->addOuter(ACE_TString(NOTIFICATION_AUTHENTICATION_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(NOTIFICATION_AUTHENTICATION_SECTION), ACE_TString(USERNAME_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(NOTIFICATION_USERNAME_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(NOTIFICATION_AUTHENTICATION_SECTION), ACE_TString(PASSWORD_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, ACE_TString(NOTIFICATION_PASSWORD_DEFAULT)));
|
|
|
|
// Set Advanced section
|
|
format_static_optional_->addOuter(ACE_TString(ADVANCED_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(ADVANCED_SECTION), ACE_TString(THREAD_NUMBER_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ACE_TString(THREAD_NUMBER_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(ADVANCED_SECTION), ACE_TString(MAXIMUM_WINDOW_SIZE_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ACE_TString(MAXIMUM_WINDOW_SIZE_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(ADVANCED_SECTION), ACE_TString(MINIMUM_WINDOW_SIZE_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ACE_TString(MINIMUM_WINDOW_SIZE_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(ADVANCED_SECTION), ACE_TString(MAX_QUEUE_SIZE_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ACE_TString(MAX_QUEUE_SIZE_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(ADVANCED_SECTION), ACE_TString(MAX_CHANNELS_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ACE_TString(MAX_CHANNELS_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(ADVANCED_SECTION), ACE_TString(MAX_TUNNEL_TIMEOUT_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(TIME_T_TYPE, ACE_TString(MAX_TUNNEL_TIMEOUT_DEFAULT)));
|
|
format_static_optional_->addInner(ACE_TString(ADVANCED_SECTION), ACE_TString(MAX_BUFFER_SIZE_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ACE_TString(MAX_BUFFER_SIZE_DEFAULT)));
|
|
|
|
// Set Files section
|
|
format_static_optional_->addOuter(ACE_TString(FILES_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(FILES_SECTION), ACE_TString(NOTIFICATION_LIST_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(MC_LIST_TYPE, NOTIFICATION_LIST_DEFAULT));
|
|
format_static_optional_->addInner(ACE_TString(FILES_SECTION), ACE_TString(AUTHORIZED_SERVERS_LIST_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(AUTHERIZED_SERVERS_LIST_TYPE, AUTHORIZED_SERVERS_LIST_DEFAULT));
|
|
|
|
// Set Management Interface section
|
|
format_static_optional_->addOuter(ACE_TString(MANAGEMENT_INTERFACE_SECTION));
|
|
format_static_optional_->addInner(ACE_TString(MANAGEMENT_INTERFACE_SECTION), ACE_TString(MAX_ENUM_ELEMENTS_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, MAX_ENUM_ELEMENTS_DEFAULT));
|
|
format_static_optional_->addInner(ACE_TString(MANAGEMENT_INTERFACE_SECTION), ACE_TString(ENUM_CTX_TIMEOUT_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, ENUM_CTX_TIMEOUT_DEFAULT));
|
|
format_static_optional_->addInner(ACE_TString(MANAGEMENT_INTERFACE_SECTION), ACE_TString(MAX_CONCURRENT_ENUMS_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, MAX_CONCURRENT_ENUMS_DEFAULT));
|
|
format_static_optional_->addInner(ACE_TString(MANAGEMENT_INTERFACE_SECTION), ACE_TString(MAX_SUBSCRIBERS_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(UNSIGNED_INT_TYPE, MAX_SUBSCRIBERS_DEFAULT));
|
|
|
|
// Set format_dynamic_mandatory_
|
|
format_dynamic_mandatory_ = new Format();
|
|
|
|
// Set format_dynamic_optional_
|
|
format_dynamic_optional_ = new Format();
|
|
|
|
// Set Logger section
|
|
format_dynamic_optional_->addOuter(ACE_TString(LOGGER_SECTION));
|
|
format_dynamic_optional_->addInner(ACE_TString(LOGGER_SECTION), ACE_TString(TRACE_LEVEL_ELEMENT),
|
|
new Element_Type_Enum_and_Default_Val(STRING_TYPE, TRACE_LEVEL_DEFAULT));
|
|
}
|
|
|
|
|
|
ConfigFormats::~ConfigFormats()
|
|
{
|
|
cleanFormat(format_static_mandatory_);
|
|
delete format_static_mandatory_;
|
|
format_static_mandatory_ = NULL;
|
|
|
|
cleanFormat(format_static_optional_);
|
|
delete format_static_optional_;
|
|
format_static_optional_ = NULL;
|
|
|
|
cleanFormat(format_dynamic_mandatory_);
|
|
delete format_dynamic_mandatory_;
|
|
format_dynamic_mandatory_ = NULL;
|
|
|
|
cleanFormat(format_dynamic_optional_);
|
|
delete format_dynamic_optional_;
|
|
format_dynamic_optional_ = NULL;
|
|
}
|
|
|
|
void ConfigFormats::cleanFormat(Format * format)
|
|
{
|
|
ACE_TString sectionName, elementName;
|
|
|
|
auto_ptr<Format::constOuterIter> hashOuterP_begin(format->beginOuters());
|
|
auto_ptr<Format::constOuterIter> hashOuterP_end(format->endOuters());
|
|
|
|
if ((hashOuterP_begin.get() == NULL) || (hashOuterP_end.get() == NULL))
|
|
{
|
|
return;
|
|
}
|
|
|
|
Format::constOuterIter hashOuterIter = * hashOuterP_begin;
|
|
|
|
for (; hashOuterIter != *hashOuterP_end; hashOuterIter++)
|
|
{
|
|
auto_ptr<Format::constInnerIter> hashInnerIterP_begin
|
|
(format->beginInners(hashOuterIter->first));
|
|
auto_ptr<Format::constInnerIter> hashInnerIterP_end
|
|
(format->endInners(hashOuterIter->first));
|
|
|
|
sectionName = hashOuterIter->first;
|
|
// Do not exit, it may happen that next iteration will work
|
|
if ((hashInnerIterP_begin.get() != NULL) && (hashInnerIterP_end.get() != NULL))
|
|
{
|
|
Format::constInnerIter hashInnerIter = * hashInnerIterP_begin;
|
|
|
|
for (; hashInnerIter != *hashInnerIterP_end; hashInnerIter++)
|
|
{
|
|
elementName = hashInnerIter->first;
|
|
|
|
Element_Type_Enum * element = NULL;
|
|
|
|
format->getValue(sectionName, elementName, &element);
|
|
delete element;
|
|
}
|
|
}
|
|
}
|
|
|
|
format->cleanHash();
|
|
}
|
|
|
|
const ConfigFormats * ConfigFormats::instance()
|
|
{
|
|
if (instance_ == NULL)
|
|
{
|
|
instance_ = new ConfigFormats();
|
|
}
|
|
return instance_;
|
|
}
|
|
|
|
const Format * ConfigFormats::getFormat(FORMAT_TYPES type) const
|
|
{
|
|
switch(type)
|
|
{
|
|
case STATIC_OPTIONAL:
|
|
return format_static_optional_;
|
|
case DYNAMIC_OPTIONAL:
|
|
return format_dynamic_optional_;
|
|
case STATIC_MANDATORY:
|
|
return format_static_mandatory_;
|
|
case DYNAMIC_MANDATORY:
|
|
return format_dynamic_mandatory_;
|
|
}
|
|
ACE_ERROR ((MY_ERROR ACE_TEXT ("ConfigFormats have been given a bad format to retrieve: %d\n"), type));
|
|
return NULL;
|
|
} |