📄 offer_exporter.cpp
字号:
// Offer_Exporter.cpp,v 1.35 2003/11/01 11:15:10 dhinton Exp
#include "Offer_Exporter.h"
#include "ace/INET_Addr.h"
#include "ace/OS_NS_stdio.h"
ACE_RCSID(Trading, Offer_Exporter, "Offer_Exporter.cpp,v 1.35 2003/11/01 11:15:10 dhinton Exp")
TAO_Offer_Exporter::
TAO_Offer_Exporter (CosTrading::Lookup_ptr lookup_if,
CORBA::Boolean verbose
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
: verbose_ (verbose)
{
// Initialize the offer sequences and structures.
this->create_offers (ACE_ENV_SINGLE_ARG_PARAMETER);
// Obtain the necessary trading service interfaces.
this->register_ = lookup_if->register_if (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
this->admin_ = lookup_if->admin_if (ACE_ENV_SINGLE_ARG_PARAMETER);
// ACE_CHECK;
}
TAO_Offer_Exporter::~TAO_Offer_Exporter (void)
{
while (! this->clean_up_.is_empty ())
{
TAO_Dynamic_Property* dp = 0;
this->clean_up_.dequeue_head (dp);
dp->destroy ();
}
}
void
TAO_Offer_Exporter::export_offers (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::Register::InvalidObjectRef,
CosTrading::IllegalServiceType,
CosTrading::UnknownServiceType,
CosTrading::Register::InterfaceTypeMismatch,
CosTrading::IllegalPropertyName,
CosTrading::PropertyTypeMismatch,
CosTrading::ReadonlyDynamicProperty,
CosTrading::MissingMandatoryProperty,
CosTrading::DuplicatePropertyName))
{
ACE_DEBUG ((LM_DEBUG, "*** TAO_Offer_Exporter::Exporting offers.\n"));
for (int i = 0; i < NUM_OFFERS; i++)
{
this->props_plotters_[i][4].value <<= "Default";
this->props_printers_[i][4].value <<= "Default";
this->props_fs_[i][4].value <<= "Default";
}
this->export_to (this->register_.in () ACE_ENV_ARG_PARAMETER);
// ACE_CHECK;
}
void
TAO_Offer_Exporter::export_to (CosTrading::Register_ptr reg
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::Register::InvalidObjectRef,
CosTrading::IllegalServiceType,
CosTrading::UnknownServiceType,
CosTrading::Register::InterfaceTypeMismatch,
CosTrading::IllegalPropertyName,
CosTrading::PropertyTypeMismatch,
CosTrading::ReadonlyDynamicProperty,
CosTrading::MissingMandatoryProperty,
CosTrading::DuplicatePropertyName))
{
ACE_TRY
{
for (int i = 0; i < NUM_OFFERS; i++)
{
CORBA::Object_ptr offer_obj= this->plotter_[i]._this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
CosTrading::OfferId_var offer_id =
reg->_cxx_export (offer_obj,
TT_Info::INTERFACE_NAMES[1],
this->props_plotters_[i]
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Registered offer id: %s.\n", offer_id.in ()));
}
offer_obj = this->printer_[i]._this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
offer_id = reg->_cxx_export (offer_obj,
TT_Info::INTERFACE_NAMES[2],
this->props_printers_[i]
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Registered offer id: %s.\n", offer_id.in ()));
}
offer_obj = this->fs_[i]._this (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
offer_id = reg->_cxx_export (offer_obj,
TT_Info::INTERFACE_NAMES[3],
this->props_fs_[i]
ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Registered offer id: %s.\n", offer_id.in ()));
}
}
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Offer_Exporter::export_offers");
ACE_RE_THROW;
}
ACE_ENDTRY;
// ACE_CHECK;
}
void
TAO_Offer_Exporter::export_offers_to_all (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::Register::InvalidObjectRef,
CosTrading::IllegalServiceType,
CosTrading::UnknownServiceType,
CosTrading::Register::InterfaceTypeMismatch,
CosTrading::IllegalPropertyName,
CosTrading::PropertyTypeMismatch,
CosTrading::ReadonlyDynamicProperty,
CosTrading::MissingMandatoryProperty,
CosTrading::DuplicatePropertyName))
{
ACE_DEBUG ((LM_DEBUG, "*** TAO_Offer_Exporter::Exporting to all.\n"));
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Obtaining link interface.\n"));
}
CosTrading::Link_var link_if = this->register_->link_if (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Obtaining references to traders directly"
" linked to the root trader.\n"));
}
CosTrading::LinkNameSeq_var link_name_seq = link_if->list_links (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_CHECK;
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Registering offers with each of the linked"
" traders.\n"));
}
for (CORBA::ULong i = link_name_seq->length () - 1; i > 0; i--)
{
ACE_TRY
{
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Getting link information for %s\n",
ACE_static_cast (const char*, link_name_seq[i])));
}
CosTrading::Link::LinkInfo_var link_info =
link_if->describe_link (link_name_seq[i] ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
for (int j = 0; j < NUM_OFFERS; j++)
{
this->props_plotters_[j][4].value <<= link_name_seq[i];
this->props_printers_[j][4].value <<= link_name_seq[i];
this->props_fs_[j][4].value <<= link_name_seq[i];
}
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Exporting offers to %s\n",
ACE_static_cast (const char*, link_name_seq[i])));
}
this->export_to (link_info->target_reg.in () ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
ACE_CATCHANY
{
// @@ IGNORE??
}
ACE_ENDTRY;
}
}
void
TAO_Offer_Exporter::withdraw_offers (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::IllegalOfferId,
CosTrading::UnknownOfferId,
CosTrading::Register::ProxyOfferId))
{
ACE_DEBUG ((LM_DEBUG, "*** TAO_Offer_Exporter::Withdrawing all offers.\n"));
ACE_TRY
{
CORBA::ULong length;
CosTrading::OfferIdSeq_var offer_id_seq = this->grab_offerids (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
if (offer_id_seq.ptr () != 0)
{
length = offer_id_seq->length ();
for (CORBA::ULong i = 0; i < length; i++)
{
this->register_->withdraw (offer_id_seq[i] ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
}
}
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Offer_Exporter::withdraw_offers");
ACE_RE_THROW;
}
ACE_ENDTRY;
}
void
TAO_Offer_Exporter::describe_offers (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::IllegalOfferId,
CosTrading::UnknownOfferId,
CosTrading::Register::ProxyOfferId))
{
ACE_DEBUG ((LM_DEBUG, "*** TAO_Offer_Exporter::Describing all offers.\n"));
ACE_TRY
{
CORBA::ULong length;
CosTrading::OfferIdSeq_var offer_id_seq = this->grab_offerids (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
if (offer_id_seq.ptr () != 0)
{
length = offer_id_seq->length ();
if (this->verbose_)
ACE_DEBUG ((LM_DEBUG, "------------------------------\n"));
for (CORBA::ULong i = 0; i < length; i++)
{
CosTrading::Register::OfferInfo_var offer_info =
this->register_->describe (offer_id_seq[i] ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
if (this->verbose_)
{
ACE_DEBUG ((LM_DEBUG, "Offer Id: %s\n", (const char *) offer_id_seq[i]));
ACE_DEBUG ((LM_DEBUG, "Service Type: %s\n", offer_info->type.in ()));
TT_Info::dump_properties (offer_info->properties, 0 ACE_ENV_ARG_PARAMETER);
ACE_TRY_CHECK;
ACE_DEBUG ((LM_DEBUG, "------------------------------\n"));
}
}
}
}
ACE_CATCHANY
{
ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION, "TAO_Offer_Exporter::describe_offers");
ACE_RE_THROW;
}
ACE_ENDTRY;
}
void
TAO_Offer_Exporter::modify_offers (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::NotImplemented,
CosTrading::IllegalOfferId,
CosTrading::UnknownOfferId,
CosTrading::Register::ProxyOfferId,
CosTrading::IllegalPropertyName,
CosTrading::Register::UnknownPropertyName,
CosTrading::PropertyTypeMismatch,
CosTrading::ReadonlyDynamicProperty,
CosTrading::Register::MandatoryProperty,
CosTrading::Register::ReadonlyProperty,
CosTrading::DuplicatePropertyName))
{
ACE_DEBUG ((LM_DEBUG, "*** TAO_Offer_Exporter::Modifying all offers.\n"));
ACE_TRY
{
CosTrading::OfferIdSeq_var offer_id_seq = this->grab_offerids (ACE_ENV_SINGLE_ARG_PARAMETER);
ACE_TRY_CHECK;
if (offer_id_seq.ptr () != 0)
{
CORBA::ULong length = offer_id_seq->length ();
CosTrading::PropertyNameSeq del_list;
CosTrading::PropertySeq modify_list;
del_list.length (1);
modify_list.length (2);
del_list[0] = TT_Info::REMOTE_IO_PROPERTY_NAMES[TT_Info::DESCRIPTION];
modify_list[0].name = TT_Info::REMOTE_IO_PROPERTY_NAMES[TT_Info::LOCATION];
modify_list[0].value <<= "MODIFIED";
modify_list[1].name = TT_Info::REMOTE_IO_PROPERTY_NAMES[TT_Info::MISCELLANEOUS];
modify_list[1].value <<= "MODIFIED";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -