📄 componentdef_i.cpp
字号:
void
TAO_ComponentDef_i::supported_interfaces (
const CORBA::InterfaceDefSeq &supported_interfaces
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD;
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
this->supported_interfaces_i (supported_interfaces
ACE_ENV_ARG_PARAMETER);
}
void
TAO_ComponentDef_i::supported_interfaces_i (
const CORBA::InterfaceDefSeq &supported_interfaces
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
// Remove the old supported interfaces.
this->repo_->config ()->remove_section (this->section_key_,
"supported",
0);
CORBA::ULong length = supported_interfaces.length ();
ACE_Configuration_Section_Key inherited_key;
this->repo_->config ()->open_section (this->section_key_,
"supported",
1,
inherited_key);
CORBA::String_var name;
char *supported_path = 0;
ACE_Configuration_Section_Key supported_key;
for (CORBA::ULong i = 0; i < length; ++i)
{
supported_path =
TAO_IFR_Service_Utils::reference_to_path (
supported_interfaces[i].in ()
);
// Get the servant's key into the temporary key holder, because
// the name clash checker for base interfaces is static, and has
// no other way to know about a specific key.
this->repo_->config ()->expand_path (this->repo_->root_key (),
supported_path,
TAO_IFR_Service_Utils::tmp_key_,
0);
TAO_IFR_Service_Utils::name_exists (&TAO_InterfaceDef_i::name_clash,
this->section_key_,
this->repo_,
this->def_kind ()
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
char *stringified = TAO_IFR_Service_Utils::int_to_string (i);
this->repo_->config ()->set_string_value (supported_key,
stringified,
supported_path);
}
}
CORBA::ComponentIR::ComponentDef_ptr
TAO_ComponentDef_i::base_component (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_READ_GUARD_RETURN (CORBA::ComponentIR::ComponentDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::ComponentIR::ComponentDef::_nil ());
return this->base_component_i (ACE_ENV_SINGLE_ARG_PARAMETER);
}
CORBA::ComponentIR::ComponentDef_ptr
TAO_ComponentDef_i::base_component_i (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
ACE_TString base_id;
int status =
this->repo_->config ()->get_string_value (this->section_key_,
"base_component",
base_id);
if (status != 0)
{
return CORBA::ComponentIR::ComponentDef::_nil ();
}
CORBA::Contained_var obj = this->repo_->lookup_id (base_id.fast_rep ()
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::ComponentIR::ComponentDef::_nil ());
return CORBA::ComponentIR::ComponentDef::_narrow (obj.in ()
ACE_ENV_ARG_PARAMETER);
}
void
TAO_ComponentDef_i::base_component (
CORBA::ComponentIR::ComponentDef_ptr base_component
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD;
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
this->base_component_i (base_component
ACE_ENV_ARG_PARAMETER);
}
void
TAO_ComponentDef_i::base_component_i (
CORBA::ComponentIR::ComponentDef_ptr base_component
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
if (CORBA::is_nil (base_component))
{
this->repo_->config ()->remove_value (this->section_key_,
"base_component");
return;
}
const char *base_path =
TAO_IFR_Service_Utils::reference_to_path (base_component);
// Get the servant's key into the temporary key holder, because
// the name clash checker for base valuetypes is static, and has
// no other way to know about a specific key.
this->repo_->config ()->expand_path (
this->repo_->root_key (),
base_path,
TAO_IFR_Service_Utils::tmp_key_,
0
);
TAO_IFR_Service_Utils::name_exists (&TAO_ComponentDef_i::name_clash,
this->section_key_,
this->repo_,
CORBA::dk_Component
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
this->repo_->config ()->set_string_value (
this->section_key_,
"base_component",
base_component->_interface_repository_id ()
);
}
CORBA::ComponentIR::ProvidesDef_ptr
TAO_ComponentDef_i::create_provides (
const char *id,
const char *name,
const char *version,
CORBA::InterfaceDef_ptr interface_type
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::ComponentIR::ProvidesDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::ComponentIR::ProvidesDef::_nil ());
return this->create_provides_i (id,
name,
version,
interface_type
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::ProvidesDef_ptr
TAO_ComponentDef_i::create_provides_i (
const char *id,
const char *name,
const char *version,
CORBA::InterfaceDef_ptr interface_type
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return
TAO_Port_Utils<
CORBA::ComponentIR::ProvidesDef
>::create_entry (id,
name,
version,
"provides",
interface_type,
0,
this->repo_,
CORBA::dk_Provides,
this->section_key_
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::UsesDef_ptr
TAO_ComponentDef_i::create_uses (const char *id,
const char *name,
const char *version,
CORBA::InterfaceDef_ptr interface_type,
CORBA::Boolean is_multiple
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::ComponentIR::UsesDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::ComponentIR::UsesDef::_nil ());
return this->create_uses_i (id,
name,
version,
interface_type,
is_multiple
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::UsesDef_ptr
TAO_ComponentDef_i::create_uses_i (const char *id,
const char *name,
const char *version,
CORBA::InterfaceDef_ptr interface_type,
CORBA::Boolean is_multiple
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return
TAO_Port_Utils<
CORBA::ComponentIR::UsesDef
>::create_entry (id,
name,
version,
"uses",
interface_type,
is_multiple,
this->repo_,
CORBA::dk_Uses,
this->section_key_
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::EmitsDef_ptr
TAO_ComponentDef_i::create_emits (const char *id,
const char *name,
const char *version,
CORBA::ValueDef_ptr value
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::ComponentIR::EmitsDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::ComponentIR::EmitsDef::_nil ());
return this->create_emits_i (id,
name,
version,
value
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::EmitsDef_ptr
TAO_ComponentDef_i::create_emits_i (const char *id,
const char *name,
const char *version,
CORBA::ValueDef_ptr value
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return
TAO_Port_Utils<
CORBA::ComponentIR::EmitsDef
>::create_entry (id,
name,
version,
"emits",
value,
0,
this->repo_,
CORBA::dk_Emits,
this->section_key_
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::PublishesDef_ptr
TAO_ComponentDef_i::create_publishes (const char *id,
const char *name,
const char *version,
CORBA::ValueDef_ptr value
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::ComponentIR::PublishesDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::ComponentIR::PublishesDef::_nil ());
return this->create_publishes_i (id,
name,
version,
value
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::PublishesDef_ptr
TAO_ComponentDef_i::create_publishes_i (const char *id,
const char *name,
const char *version,
CORBA::ValueDef_ptr value
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return
TAO_Port_Utils<
CORBA::ComponentIR::PublishesDef
>::create_entry (id,
name,
version,
"publishes",
value,
0,
this->repo_,
CORBA::dk_Publishes,
this->section_key_
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::ConsumesDef_ptr
TAO_ComponentDef_i::create_consumes (const char *id,
const char *name,
const char *version,
CORBA::ValueDef_ptr value
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
TAO_IFR_WRITE_GUARD_RETURN (CORBA::ComponentIR::ConsumesDef::_nil ());
this->update_key (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK_RETURN (CORBA::ComponentIR::ConsumesDef::_nil ());
return this->create_consumes_i (id,
name,
version,
value
ACE_ENV_ARG_PARAMETER);
}
CORBA::ComponentIR::ConsumesDef_ptr
TAO_ComponentDef_i::create_consumes_i (const char *id,
const char *name,
const char *version,
CORBA::ValueDef_ptr value
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
return
TAO_Port_Utils<
CORBA::ComponentIR::ConsumesDef
>::create_entry (id,
name,
version,
"consumes",
value,
0,
this->repo_,
CORBA::dk_Consumes,
this->section_key_
ACE_ENV_ARG_PARAMETER);
}
int
TAO_ComponentDef_i::name_clash (const char *name)
{
ACE_TRY_NEW_ENV
{
TAO_Container_i::tmp_name_holder_ = name;
TAO_IFR_Service_Utils::name_exists (&TAO_Container_i::same_as_tmp_name,
TAO_IFR_Service_Utils::tmp_key_,
TAO_IFR_Service_Utils::repo_,
CORBA::dk_Component
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCHANY
{
return 1;
}
ACE_ENDTRY;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -