diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp | 644 |
1 files changed, 320 insertions, 324 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp b/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp index 332624a3ee4..d4fe3eaf7fe 100644 --- a/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp +++ b/TAO/orbsvcs/orbsvcs/Trader/Trader_Interfaces.cpp @@ -1,4 +1,17 @@ +// ======================================================================== // $Id$ +// +// = LIBRARY +// orbsvcs +// +// = FILENAME +// Trader_Interfaces.cpp +// +// = AUTHOR +// Marina Spivak <marina@cs.wustl.edu> +// Seth Widoff <sbw1@cs.wustl.edu> +// +// ======================================================================== #if !defined (TAO_TRADER_INTERFACES_C) #define TAO_TRADER_INTERFACES_C @@ -9,6 +22,10 @@ ACE_RCSID(Trader, Trader_Interfaces, "$Id$") + // ************************************************************* + // TAO_Lookup + // ************************************************************* + template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> TAO_Lookup<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: TAO_Lookup (TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &trader) @@ -45,7 +62,7 @@ query (const char *type, CosTrading::OfferSeq_out returned_offers, CosTrading::OfferIterator_out returned_offer_iterator, CosTrading::PolicyNameSeq_out returned_limits_applied, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& env) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, @@ -59,21 +76,19 @@ query (const char *type, CosTrading::DuplicatePolicyName)) { // Instantiate a class to help interpret query policies. - TAO_Policies policies (this->trader_, in_policies, ACE_TRY_ENV); - ACE_CHECK; + TAO_Policies policies (this->trader_, in_policies, env); + TAO_CHECK_ENV_RETURN_VOID (env); // If a federated query returns to us, ignore it to prevent // redundant results and infinite loops. CosTrading::Admin::OctetSeq* request_id = 0; - int check = this->seen_request_id (policies, request_id, ACE_TRY_ENV); - ACE_CHECK; - - if (check) + if (this->seen_request_id (policies, request_id, env)) { returned_offers = new CosTrading::OfferSeq; returned_limits_applied = new CosTrading::PolicyNameSeq; return; } + TAO_CHECK_ENV_RETURN_VOID (env); // The presence of a link interface determines whether we should // attempt to forward or propagate queries. @@ -82,9 +97,8 @@ query (const char *type, // If the importer has specified a starting trader, foward the // query. - CosTrading::TraderName* trader_name = - policies.starting_trader (ACE_TRY_ENV); - ACE_CHECK; + CosTrading::TraderName* trader_name = policies.starting_trader (env); + TAO_CHECK_ENV_RETURN_VOID (env); if (! CORBA::is_nil (link_if) && trader_name != 0) { @@ -101,8 +115,8 @@ query (const char *type, returned_offers, returned_offer_iterator, returned_limits_applied, - ACE_TRY_ENV); - ACE_CHECK; + env); + TAO_CHECK_ENV_RETURN_VOID (env); return; } @@ -112,38 +126,30 @@ query (const char *type, CosTradingRepos::ServiceTypeRepository_ptr rep = support_attrs.service_type_repos (); CosTradingRepos::ServiceTypeRepository::TypeStruct_var type_struct = - rep->fully_describe_type (type, ACE_TRY_ENV); - ACE_CHECK; + rep->fully_describe_type (type, env); + TAO_CHECK_ENV_RETURN_VOID (env); - // @@ Should throw a NO_MEMORY exception here... - ACE_NEW (returned_offers, - CosTrading::OfferSeq); + ACE_NEW (returned_offers, CosTrading::OfferSeq); // Obtain a reference to the offer database. - TAO_Offer_Database<MAP_LOCK_TYPE>& offer_database = - this->trader_.offer_database (); + TAO_Offer_Database<MAP_LOCK_TYPE>& offer_database = this->trader_.offer_database (); // TAO_Offer_Filter -- ensures that we don't consider offers with // modifiable or dynamic properties if the Trader doesn't support // them, or the importer has turned them off using policies. // TAO_Constraint_Validator -- validates the constraint with the - // property types in the supplied type. TAO_Constraint_Interpreter - // -- parses the constraint string, and determines whether an offer - // meets those constraints. TAO_Preference_Interpreter -- parses - // the preference string and orders offers according to those - // constraints. - TAO_Offer_Filter offer_filter (policies, - ACE_TRY_ENV); - ACE_CHECK; + // property types in the supplied type. + // TAO_Constraint_Interpreter -- parses the constraint string, and + // determines whether an offer meets those constraints. + // TAO_Preference_Interpreter -- parses the preference string and + // orders offers according to those constraints. + TAO_Offer_Filter offer_filter (policies, env); + TAO_CHECK_ENV_RETURN_VOID (env); TAO_Constraint_Validator validator (type_struct.in ()); - TAO_Constraint_Interpreter constr_inter (validator, - constraint, - ACE_TRY_ENV); - ACE_CHECK; - TAO_Preference_Interpreter pref_inter (validator, - preferences, - ACE_TRY_ENV); - ACE_CHECK; + TAO_Constraint_Interpreter constr_inter (validator, constraint, env); + TAO_CHECK_ENV_RETURN_VOID (env); + TAO_Preference_Interpreter pref_inter (validator, preferences, env); + TAO_CHECK_ENV_RETURN_VOID (env); // Try to find the map of offers of desired service type. offer_filter.configure_type (type_struct.ptr ()); @@ -153,27 +159,24 @@ query (const char *type, pref_inter, offer_filter); - CORBA::Boolean result = policies.exact_type_match (ACE_TRY_ENV); - ACE_CHECK; - - if (!result) + if (! policies.exact_type_match (env)) { - // If the importer hasn't demanded an exact match search, we - // search all the subtypes of the supplied type. NOTE: Only the - // properties belonging to the provided type are considered on + // If the importer hasn't demanded an exact match search, we search + // all the subtypes of the supplied type. NOTE: Only the properties + // belonging to the provided type are considered on // subtypes. Additional properties on the subtype are generally - // ignored. This is as it should be, consistent with the notions - // of type inheritence. + // ignored. This is as it should be, consistent with the notions of + // type inheritence. + TAO_CHECK_ENV_RETURN_VOID (env); this->lookup_all_subtypes (type, type_struct->incarnation, offer_database, rep, constr_inter, pref_inter, - offer_filter, - ACE_TRY_ENV); - ACE_CHECK; + offer_filter); } + TAO_CHECK_ENV_RETURN_VOID (env); // Take note of the limits applied in this query. returned_limits_applied = offer_filter.limits_applied (); @@ -187,8 +190,8 @@ query (const char *type, pref_inter, *returned_offers.ptr (), returned_offer_iterator, - ACE_TRY_ENV); - ACE_CHECK; + env); + TAO_CHECK_ENV_RETURN_VOID (env); // The following steps are only appropriate for a linked trader. if (! CORBA::is_nil (link_if)) @@ -200,8 +203,8 @@ query (const char *type, this->retrieve_links (policies, offers_returned, CosTrading::LinkNameSeq_out (links.out ()), - ACE_TRY_ENV); - ACE_CHECK; + env); + TAO_CHECK_ENV_RETURN_VOID (env); if (should_follow && links->length () != 0) { @@ -218,8 +221,8 @@ query (const char *type, *returned_offers.ptr (), returned_offer_iterator.ptr (), *returned_limits_applied.ptr (), - ACE_TRY_ENV); - ACE_CHECK; + env); + TAO_CHECK_ENV_RETURN_VOID (env); } } } @@ -285,8 +288,7 @@ lookup_all_subtypes (const char* type, CosTradingRepos::ServiceTypeRepository_ptr rep, TAO_Constraint_Interpreter& constr_inter, TAO_Preference_Interpreter& pref_inter, - TAO_Offer_Filter& offer_filter, - CORBA::Environment& ACE_TRY_ENV) + TAO_Offer_Filter& offer_filter) { // BEGIN SPEC // The trader may return a service offer of a subtype of the "type" @@ -307,8 +309,14 @@ lookup_all_subtypes (const char* type, // types with lower incarnation numbers. sst.incarnation (inc_num); - all_types = rep->list_types (sst, ACE_TRY_ENV); - ACE_CHECK; + // TAO_TRY + // { + CORBA::Environment env; + all_types = rep->list_types (sst, env); + // TAO_CHECK_ENV; + // } + // TAO_CATCHANY { return; } + // TAO_ENDTRY; // Scan all types inserted after the super types. If the transitive // closure of a type's super type relation includes the super type @@ -319,44 +327,51 @@ lookup_all_subtypes (const char* type, i < num_types && offer_filter.ok_to_consider_more (); i++) { - // Obtain a description of the prospective type. - type_struct = rep->fully_describe_type (all_types[i], - ACE_TRY_ENV); - ACE_CHECK; + TAO_TRY + { + // Obtain a description of the prospective type. + type_struct = rep->fully_describe_type (all_types[i], TAO_TRY_ENV); + TAO_CHECK_ENV; - CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq& - super_types = type_struct->super_types; - CORBA::ULong num_super_types = super_types.length (); + CosTradingRepos::ServiceTypeRepository::ServiceTypeNameSeq& + super_types = type_struct->super_types; + CORBA::ULong num_super_types = super_types.length (); - for (CORBA::ULong j = 0; j < num_super_types; j++) - { - if (ACE_OS::strcmp (type_struct->super_types[j], type) == 0) + for (CORBA::ULong j = 0; j < num_super_types; j++) { - // Egads, a subtype! This type has the type passed - // to query in its list of super_types. - offer_filter.configure_type (type_struct.ptr ()); - this->lookup_one_type (all_types[i], - offer_database, - constr_inter, - pref_inter, - offer_filter); - break; + if (ACE_OS::strcmp (type_struct->super_types[j], type) == 0) + { + // Egads, a subtype! This type has the type passed + // to query in its list of super_types. + offer_filter.configure_type (type_struct.ptr ()); + this->lookup_one_type (all_types[i], + offer_database, + constr_inter, + pref_inter, + offer_filter); + break; + } } } + TAO_CATCHANY + { + } + TAO_ENDTRY; } } + template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> int TAO_Lookup<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: -fill_receptacles (const char* /* type */, +fill_receptacles (const char* type, CORBA::ULong how_many, const CosTrading::Lookup::SpecifiedProps& desired_props, TAO_Policies& policies, TAO_Preference_Interpreter& pref_inter, CosTrading::OfferSeq& offers, CosTrading::OfferIterator_ptr& offer_itr, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& env) ACE_THROW_SPEC ((CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName)) { @@ -371,14 +386,14 @@ fill_receptacles (const char* /* type */, // "offer_itr" will be nil. // END SPEC - TAO_Property_Filter prop_filter (desired_props, ACE_TRY_ENV); - ACE_CHECK_RETURN (0); + TAO_Property_Filter prop_filter (desired_props, env); + TAO_CHECK_ENV_RETURN (env, 0); // RETURNING: Calculate how many offers go into the sequence // Calculate how many go into the iterator - CORBA::ULong return_card = policies.return_card (ACE_TRY_ENV); - ACE_CHECK_RETURN (0); + CORBA::ULong return_card = policies.return_card (env); + TAO_CHECK_ENV_RETURN (env, 0); CORBA::ULong i = 0; CORBA::ULong size = pref_inter.num_offers (); @@ -386,15 +401,13 @@ fill_receptacles (const char* /* type */, CORBA::ULong offers_in_iterator = size - offers_in_sequence; // Ensure the total number of offers returned doesn't exceed return_card. - offers_in_sequence = offers_in_sequence > return_card - ? return_card - : offers_in_sequence; + offers_in_sequence = + (offers_in_sequence > return_card) ? return_card : offers_in_sequence; return_card -= offers_in_sequence; - offers_in_iterator = offers_in_iterator > return_card - ? return_card - : offers_in_iterator; + offers_in_iterator = + (offers_in_iterator > return_card) ? return_card : offers_in_iterator; CORBA::ULong total_offers = offers_in_sequence + offers_in_iterator; offers.length (offers_in_sequence); @@ -405,8 +418,7 @@ fill_receptacles (const char* /* type */, CosTrading::Offer* offer = 0; CosTrading::OfferId offer_id = 0; - // Pull the next ordered offer out of the preference - // interpreter. + // Pull the next ordered offer out of the preference interpreter. pref_inter.remove_offer (offer, offer_id); // Filter out the undesired properties. @@ -418,14 +430,12 @@ fill_receptacles (const char* /* type */, if (offers_in_iterator > 0) { // Create an iterator implementation - TAO_Offer_Iterator *oi = - this->create_offer_iterator (prop_filter); + TAO_Offer_Iterator *oi = this->create_offer_iterator (prop_filter); // Register it with the POA. - offer_itr = oi->_this (ACE_TRY_ENV); - // @@ Seth, ACE_CHECK_RETURN (what?); - oi->_remove_ref (ACE_TRY_ENV); - ACE_CHECK_RETURN (total_offers - offers_in_iterator); + offer_itr = oi->_this (env); + oi->_remove_ref (env); + TAO_CHECK_ENV_RETURN (env, total_offers - offers_in_iterator); // Add to the iterator for (i = 0; i < offers_in_iterator; i++) @@ -475,14 +485,14 @@ create_offer_iterator (const TAO_Property_Filter& pfilter) TAO_Offer_Iterator* iterator = 0; if (CORBA::is_nil (this->trader_.trading_components ().register_if ())) - ACE_NEW_RETURN (iterator, - TAO_Query_Only_Offer_Iterator (pfilter), - 0); + iterator = new TAO_Query_Only_Offer_Iterator (pfilter); else - ACE_NEW_RETURN (iterator, - TAO_Register_Offer_Iterator<MAP_LOCK_TYPE> (this->trader_.offer_database (), - pfilter), - 0); + { + iterator = + new TAO_Register_Offer_Iterator<MAP_LOCK_TYPE> (this->trader_.offer_database (), + pfilter); + } + return iterator; } @@ -492,22 +502,21 @@ TAO_Lookup<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: retrieve_links (TAO_Policies& policies, CORBA::ULong offers_returned, CosTrading::LinkNameSeq_out links, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::Lookup::PolicyTypeMismatch)) { CORBA::Boolean should_follow = 0; - CosTrading::FollowOption follow_rule = policies.link_follow_rule (ACE_TRY_ENV); - ACE_CHECK_RETURN (should_follow); + CosTrading::FollowOption follow_rule = policies.link_follow_rule (TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, should_follow); // Determine whether or not a federated query is warranted. A query // is waranted if the follow_rule governing this query is 'always' // or if_no_local and the local query returned nothing. if ((follow_rule == CosTrading::always || (follow_rule == CosTrading::if_no_local && offers_returned == 0)) - && policies.hop_count (ACE_TRY_ENV) > 0) + && policies.hop_count (TAO_IN_ENV) > 0) should_follow = 1; - ACE_CHECK_RETURN (0); if (should_follow) { @@ -516,8 +525,8 @@ retrieve_links (TAO_Policies& policies, CosTrading::Link_ptr link_if = this->trader_.trading_components ().link_if (); - links = link_if->list_links (ACE_TRY_ENV); - ACE_CHECK_RETURN (0); + links = link_if->list_links (TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, 0); // Determine which of the links registered with the Link // interface are suitable to follow. @@ -528,18 +537,18 @@ retrieve_links (TAO_Policies& policies, { // Grab the link information. CosTrading::Link::LinkInfo_var - link_info (link_if->describe_link (links[i], ACE_TRY_ENV)); - ACE_CHECK_RETURN (should_follow); + link_info (link_if->describe_link (links[i], TAO_IN_ENV)); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, should_follow); // Compute the link follow rule. CosTrading::FollowOption link_rule = - policies.link_follow_rule (link_info.in (), ACE_TRY_ENV); - ACE_CHECK_RETURN (should_follow); + policies.link_follow_rule (link_info.in (), TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, should_follow); // Determine if the link follow rule applies. - if (link_rule == CosTrading::always - || (link_rule == CosTrading::if_no_local - && offers_returned == 0)) + if (link_rule == CosTrading::always || + (link_rule == CosTrading::if_no_local && + offers_returned == 0)) { // Add the link to the list of links to follow. if (i > j) @@ -555,6 +564,7 @@ retrieve_links (TAO_Policies& policies, return should_follow; } + template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> void TAO_Lookup<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: @@ -570,7 +580,7 @@ federated_query (const CosTrading::LinkNameSeq& links, CosTrading::OfferSeq& offers, CosTrading::OfferIterator_ptr& offer_iter, CosTrading::PolicyNameSeq& limits, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, @@ -602,8 +612,7 @@ federated_query (const CosTrading::LinkNameSeq& links, // iterators, which if traversed in its entirety is probably hugely // inefficient, but oh well, I can't think of a better solution. TAO_Offer_Iterator_Collection* offer_iter_collection; - ACE_NEW (offer_iter_collection, - TAO_Offer_Iterator_Collection); + ACE_NEW (offer_iter_collection, TAO_Offer_Iterator_Collection); offer_iter_collection->add_offer_iterator (offer_iter); CosTrading::PolicySeq policies_to_pass; @@ -615,18 +624,18 @@ federated_query (const CosTrading::LinkNameSeq& links, CosTrading::OfferIterator_ptr out_offer_iter = 0; CosTrading::PolicyNameSeq_ptr out_limits = 0; - ACE_TRY + TAO_TRY { // Obtain information about the link we're traversing. CosTrading::Link::LinkInfo_var link_info = - link_interface->describe_link (links[i], ACE_TRY_ENV); - ACE_TRY_CHECK; + link_interface->describe_link (links[i], TAO_TRY_ENV); + TAO_CHECK_ENV; // Set the link follow policy for the query over the link. policies.copy_in_follow_option (policies_to_pass, link_info.in (), - ACE_TRY_ENV); - ACE_TRY_CHECK; + TAO_TRY_ENV); + TAO_CHECK_ENV; CosTrading::Lookup_var remote_lookup = CosTrading::Lookup::_duplicate (link_info->target.in ()); @@ -641,8 +650,8 @@ federated_query (const CosTrading::LinkNameSeq& links, CosTrading::OfferSeq_out (out_offers), CosTrading::OfferIterator_out (out_offer_iter), CosTrading::PolicyNameSeq_out (out_limits), - ACE_TRY_ENV); - ACE_TRY_CHECK; + TAO_TRY_ENV); + TAO_CHECK_ENV; CORBA::ULong j = 0; CosTrading::OfferSeq_var out_offers_var (out_offers); @@ -670,23 +679,19 @@ federated_query (const CosTrading::LinkNameSeq& links, for (j = 0; j < source_length; j++) offers[j + target_length] = out_offers_var[j]; } - ACE_CATCHANY + TAO_CATCHANY { // Ah, well, this query failed, move on to the next one. } - ACE_ENDTRY; - // ACE_CHECK; + TAO_ENDTRY; } // Sort the sequence in preference order. this->order_merged_sequence (pref_inter, offers); // Return the collection of offer iterators. - offer_iter = offer_iter_collection->_this (ACE_TRY_ENV); - ACE_CHECK; - - offer_iter_collection->_remove_ref (ACE_TRY_ENV); - ACE_CHECK; + offer_iter = offer_iter_collection->_this (TAO_IN_ENV); + offer_iter_collection->_remove_ref (TAO_IN_ENV); } template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> @@ -739,7 +744,7 @@ forward_query (const char* next_hop, CosTrading::OfferSeq_out offers, CosTrading::OfferIterator_out offer_itr, CosTrading::PolicyNameSeq_out limits_applied, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, @@ -756,21 +761,21 @@ forward_query (const char* next_hop, CosTrading::Link_ptr link_interface = this->trader_.trading_components ().link_if (); - ACE_TRY + TAO_TRY { CosTrading::Link::LinkInfo_var link_info = - link_interface->describe_link (next_hop, ACE_TRY_ENV); - ACE_TRY_CHECK; + link_interface->describe_link (next_hop, TAO_TRY_ENV); + TAO_CHECK_ENV; CosTrading::Lookup_var remote_lookup = CosTrading::Lookup::_duplicate (link_info->target.in ()); - CORBA::Object_var us = this->_this (ACE_TRY_ENV); - ACE_TRY_CHECK; + CORBA::Object_var us = this->_this (TAO_TRY_ENV); + TAO_CHECK_ENV; CORBA::Boolean self_loop = - remote_lookup->_is_equivalent (us.in (), ACE_TRY_ENV); - ACE_TRY_CHECK; + remote_lookup->_is_equivalent (us.in (), TAO_TRY_ENV); + TAO_CHECK_ENV; if (! self_loop) { @@ -784,8 +789,8 @@ forward_query (const char* next_hop, offers, offer_itr, limits_applied, - ACE_TRY_ENV); - ACE_TRY_CHECK; + TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); } else { @@ -798,19 +803,18 @@ forward_query (const char* next_hop, offers, offer_itr, limits_applied, - ACE_TRY_ENV); - ACE_TRY_CHECK; + TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); } } - ACE_CATCHANY + TAO_CATCHANY { CosTrading::Policy policy; policy.name = TAO_Policies::POLICY_NAMES[TAO_Policies::STARTING_TRADER]; policy.value <<= next_hop; - ACE_TRY_THROW (CosTrading::Lookup::InvalidPolicyValue (policy)); + TAO_THROW (CosTrading::Lookup::InvalidPolicyValue (policy)); } - ACE_ENDTRY; - // ACE_CHECK; + TAO_ENDTRY; } template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> @@ -818,34 +822,35 @@ CORBA::Boolean TAO_Lookup<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: seen_request_id (TAO_Policies& policies, CosTrading::Admin::OctetSeq*& seq, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::Lookup::PolicyTypeMismatch)) { CORBA::Boolean return_value = 0; - seq = policies.request_id (ACE_TRY_ENV); - ACE_CHECK_RETURN (1); + seq = policies.request_id (TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, 1); if (seq == 0) { CosTrading::Admin_ptr admin_if = this->trader_.trading_components ().admin_if (); - seq = admin_if->request_id_stem (ACE_TRY_ENV); - ACE_CHECK_RETURN (1); + seq = admin_if->request_id_stem (TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, 1); } else { // Allocate memory so memory mangement is the same for both // cases. - ACE_NEW_THROW_EX (seq, - CosTrading::Admin::OctetSeq (*seq), - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (1); + ACE_NEW_RETURN (seq, + CosTrading::Admin::OctetSeq (*seq), + 0); } - ACE_GUARD_RETURN (TRADER_LOCK_TYPE, trader_mon, this->lock_, 1); + if (seq == 0) + TAO_THROW_RETURN (CORBA::NO_MEMORY (), 1); + ACE_GUARD_RETURN (TRADER_LOCK_TYPE, trader_mon, this->lock_, 1); for (Request_Ids::ITERATOR riter (this->request_ids_); ! riter.done (); riter.advance ()) @@ -875,6 +880,10 @@ seen_request_id (TAO_Policies& policies, return return_value; } + // ************************************************************* + // TAO_Register + // ************************************************************* + template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> TAO_Register<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::TAO_Register (TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &trader) : TAO_Trader_Components<POA_CosTrading::Register> (trader.trading_components ()), @@ -894,7 +903,7 @@ TAO_Register<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: _cxx_export (CORBA::Object_ptr reference, const char *type, const CosTrading::PropertySeq &properties, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::Register::InvalidObjectRef, CosTrading::IllegalServiceType, @@ -908,7 +917,7 @@ _cxx_export (CORBA::Object_ptr reference, { // For robustness purposes -- if (CORBA::is_nil (reference)) - ACE_THROW_RETURN (CosTrading::Register::InvalidObjectRef (), 0); + TAO_THROW_RETURN (CosTrading::Register::InvalidObjectRef (), 0); // Get service type map TAO_Offer_Database<MAP_LOCK_TYPE> &offer_database = this->trader_.offer_database (); @@ -922,30 +931,27 @@ _cxx_export (CORBA::Object_ptr reference, // Yank our friend, the type struct, and confirm that the given // properties match the type definition. CosTradingRepos::ServiceTypeRepository::TypeStruct_var type_struct = - rep->fully_describe_type (type, ACE_TRY_ENV); - ACE_CHECK_RETURN (0); + rep->fully_describe_type (type, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, 0); // Oops the type is masked, we shouldn't let exporters know the type // exists. if (type_struct->masked) - ACE_THROW_RETURN (CosTrading::UnknownServiceType (type), 0); + TAO_THROW_RETURN (CosTrading::UnknownServiceType (type), 0); // TAO-specific way to determine if an object is derived from or is // an interface type. - int check = (! reference->_is_a (type_struct->if_name, ACE_TRY_ENV)); - ACE_CHECK_RETURN (0); - if (check) - ACE_THROW_RETURN (CosTrading::Register:: + if (! reference->_is_a (type_struct->if_name, TAO_IN_ENV)) + TAO_THROW_RETURN (CosTrading::Register:: InterfaceTypeMismatch (type, reference), 0); // Validate that the properties defined for this offer are correct // to their types and strength. - this->validate_properties (type, type_struct.ptr (), properties, ACE_TRY_ENV); - ACE_CHECK_RETURN (0); + this->validate_properties (type, type_struct.ptr (), properties, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, 0); // CORBA::ULong plength = properties.length (); - ACE_NEW_THROW_EX (offer, CosTrading::Offer, CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); + ACE_NEW_RETURN (offer, CosTrading::Offer, 0); // No copying, no memory leaks. Violates the "in" parameter semantics // when this object is colocated with the client, however. @@ -971,7 +977,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> void TAO_Register<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: withdraw (const char *id, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalOfferId, CosTrading::UnknownOfferId, @@ -979,14 +985,14 @@ withdraw (const char *id, { // Get service type map. TAO_Offer_Database<MAP_LOCK_TYPE> &offer_database = this->trader_.offer_database (); - offer_database.remove_offer ((CosTrading::OfferId) id, ACE_TRY_ENV); + offer_database.remove_offer ((CosTrading::OfferId) id, TAO_IN_ENV); } template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::Register::OfferInfo * TAO_Register<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: describe (const char *id, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalOfferId, CosTrading::UnknownOfferId, @@ -998,12 +1004,11 @@ describe (const char *id, // Perform a lookup to find the offer. CosTrading::Offer* offer = - offer_database.lookup_offer ((CosTrading::OfferId) id, type, ACE_TRY_ENV); - ACE_CHECK_RETURN (0); + offer_database.lookup_offer ((CosTrading::OfferId) id, type, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, (CosTrading::Register::OfferInfo *) 0); CosTrading::Register::OfferInfo *offer_info = 0; - ACE_NEW_THROW_EX (offer_info, CosTrading::Register::OfferInfo, CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); + ACE_NEW_RETURN (offer_info, CosTrading::Register::OfferInfo, 0); offer_info->reference = CORBA::Object::_duplicate (offer->reference.in ()); offer_info->type = CORBA::string_dup (type); @@ -1022,7 +1027,7 @@ TAO_Register<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: modify (const char *id, const CosTrading::PropertyNameSeq& del_list, const CosTrading::PropertySeq& modify_list, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::NotImplemented, CosTrading::IllegalOfferId, @@ -1038,11 +1043,8 @@ modify (const char *id, { // Throw an exception if the trader is not configured // to support properties modification. - int check = (! this->supports_modifiable_properties (ACE_TRY_ENV)); - ACE_CHECK; - - if (check) - ACE_THROW (CosTrading::NotImplemented ()); + if (! this->supports_modifiable_properties (TAO_IN_ENV)) + TAO_THROW (CosTrading::NotImplemented ()); char* type = 0; TAO_Support_Attributes_i& support_attrs = @@ -1052,23 +1054,23 @@ modify (const char *id, TAO_Offer_Database<MAP_LOCK_TYPE> &offer_database = this->trader_.offer_database (); CosTrading::Offer* offer = offer_database. - lookup_offer (ACE_const_cast (CosTrading::OfferId, id), type, ACE_TRY_ENV); - ACE_CHECK; + lookup_offer (ACE_const_cast (CosTrading::OfferId, id), type, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); if (offer != 0) { // Yank our friend, the type struct. CosTradingRepos::ServiceTypeRepository::TypeStruct_var type_struct = - rep->fully_describe_type (type, ACE_TRY_ENV); - ACE_CHECK; + rep->fully_describe_type (type, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); TAO_Offer_Modifier offer_mod (type, type_struct.in (), offer); // Delete, add, and change properties of the offer. - offer_mod.delete_properties (del_list, ACE_TRY_ENV); - ACE_CHECK; + offer_mod.delete_properties (del_list, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); - offer_mod.merge_properties (modify_list, ACE_TRY_ENV); - ACE_CHECK; + offer_mod.merge_properties (modify_list, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); // Alter our reference to the offer. We do this last, since the // spec says: modify either suceeds completely or fails @@ -1082,7 +1084,7 @@ void TAO_Register<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: withdraw_using_constraint (const char *type, const char *constr, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, @@ -1099,27 +1101,27 @@ withdraw_using_constraint (const char *type, // Retrieve the type struct CosTradingRepos::ServiceTypeRepository::TypeStruct_var type_struct = - rep->fully_describe_type (type, ACE_TRY_ENV); - ACE_CHECK; + rep->fully_describe_type (type, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); // Try to find the map of offers of desired service type. // @@ Again, should be Offer_Database::offer_iterator { -#if defined (_MSC_VER) +#if defined(_MSC_VER) TAO_Offer_Database<MAP_LOCK_TYPE>::offer_iterator offer_iter (type, offer_database); #else - // MSVC won't grok this for some reason, but it's necessary for - // the HP compiler, which seriously requires the typename keyword + // MSVC won't grok this for some reason, but it's necessary for the + // HP compiler, which seriously requires the typename keyword // here. I apologize if this ifdef offends some ACE users' // sensibilities --- it certainly offends mine. ACE_TYPENAME TAO_Offer_Database<MAP_LOCK_TYPE>::offer_iterator offer_iter (type, offer_database); -#endif /* _MSC_VER */ +#endif TAO_Constraint_Validator validator (type_struct.in ()); - TAO_Constraint_Interpreter constr_inter (validator, constr, ACE_TRY_ENV); - ACE_CHECK; + TAO_Constraint_Interpreter constr_inter (validator, constr, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); while (offer_iter.has_more_offers ()) { @@ -1141,20 +1143,19 @@ withdraw_using_constraint (const char *type, char* offer_id = 0; ids.dequeue_head (offer_id); - offer_database.remove_offer (offer_id, ACE_TRY_ENV); - ACE_CHECK; + offer_database.remove_offer (offer_id, TAO_IN_ENV); CORBA::string_free (offer_id); } } else - ACE_THROW (CosTrading::Register::NoMatchingOffers (constr)); + TAO_THROW (CosTrading::Register::NoMatchingOffers (constr)); } template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::Register_ptr TAO_Register<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: resolve (const CosTrading::TraderName &name, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::Register::IllegalTraderName, CosTrading::Register::UnknownTraderName, @@ -1162,7 +1163,7 @@ resolve (const CosTrading::TraderName &name, { // Determine if the first link is a legal link name. if (! TAO_Trader_Base::is_valid_identifier_name (name[0])) - ACE_THROW_RETURN (CosTrading::Register::IllegalTraderName (name), + TAO_THROW_RETURN (CosTrading::Register::IllegalTraderName (name), CosTrading::Register::_nil ()); // Grab a reference to the link interface, and get a link description. @@ -1176,26 +1177,26 @@ resolve (const CosTrading::TraderName &name, CosTrading::Link::LinkInfo_var link_info; CosTrading::Register_var remote_reg; - ACE_TRY + TAO_TRY { // Ensure that the link to the next trader exists. - link_info = link_if->describe_link (name[0], ACE_TRY_ENV); - ACE_TRY_CHECK; + link_info = link_if->describe_link (name[0], TAO_TRY_ENV); + TAO_CHECK_ENV; remote_reg = - CosTrading::Register::_narrow (link_info->target_reg.in (), ACE_TRY_ENV); - ACE_TRY_CHECK; + CosTrading::Register::_narrow (link_info->target_reg.in (), TAO_TRY_ENV); + TAO_CHECK_ENV; } - ACE_CATCHANY + TAO_CATCHANY { - ACE_TRY_THROW (CosTrading::Register::UnknownTraderName (name)); + TAO_THROW_RETURN (CosTrading::Register::UnknownTraderName (name), + CosTrading::Register::_nil ()); } - ACE_ENDTRY; - ACE_CHECK_RETURN (CosTrading::Register::_nil ()); + TAO_ENDTRY; // Ensure that the register pointer isn't nil. if (! CORBA::is_nil (remote_reg.in ())) - ACE_THROW_RETURN (CosTrading::Register::RegisterNotSupported (name), + TAO_THROW_RETURN (CosTrading::Register::RegisterNotSupported (name), CosTrading::Register::_nil ()); CosTrading::Register_ptr return_value = remote_reg.in (); @@ -1207,8 +1208,8 @@ resolve (const CosTrading::TraderName &name, for (int i = trader_name.length () - 1; i >= 0; i--) trader_name[i] = name[i + 1]; - return_value = remote_reg->resolve (trader_name, ACE_TRY_ENV); - ACE_CHECK_RETURN (CosTrading::Register::_nil ()); + return_value = remote_reg->resolve (trader_name, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, CosTrading::Register::_nil ()); } return return_value; @@ -1220,7 +1221,7 @@ TAO_Register<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: validate_properties (const char* type, const CosTradingRepos::ServiceTypeRepository::TypeStruct* type_struct, const CosTrading::PropertySeq& properties, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CosTrading::IllegalPropertyName, CosTrading::PropertyTypeMismatch, CosTrading::ReadonlyDynamicProperty, @@ -1230,12 +1231,11 @@ validate_properties (const char* type, CORBA::ULong length = properties.length (); const CosTradingRepos::ServiceTypeRepository::PropStructSeq& prop_types = type_struct->props; - TAO_Property_Evaluator_By_Name prop_eval (properties, ACE_TRY_ENV); - ACE_CHECK; + TAO_Property_Evaluator_By_Name prop_eval (properties, TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); // Perform property validation length = prop_types.length (); - for (CORBA::ULong i = 0; i < length; i++) { const CosTradingRepos::ServiceTypeRepository::PropStruct& @@ -1250,29 +1250,28 @@ validate_properties (const char* type, // Offer cannot have a missing mandatory property. if (prop_types[i].mode == CosTradingRepos::ServiceTypeRepository::PROP_MANDATORY) - ACE_THROW (CosTrading::MissingMandatoryProperty (type, prop_name)); + TAO_THROW (CosTrading::MissingMandatoryProperty (type, prop_name)); } else { - int check = - (! prop_type->equal (prop_struct.value_type.in (), - ACE_TRY_ENV)); - ACE_CHECK; - if (check) + if (! prop_type->equal (prop_struct.value_type.in (), TAO_IN_ENV)) { // Offer cannot redefine the type of an property. - const CosTrading::Property* prop = - prop_eval.get_property (prop_name); - ACE_THROW (CosTrading::PropertyTypeMismatch (type, *prop)); + const CosTrading::Property* prop = prop_eval.get_property (prop_name); + TAO_THROW (CosTrading::PropertyTypeMismatch (type, *prop)); } else if (prop_struct.mode == CosTradingRepos::ServiceTypeRepository::PROP_READONLY && prop_eval.is_dynamic_property (prop_name)) - ACE_THROW (CosTrading::ReadonlyDynamicProperty (type, prop_name)); + TAO_THROW (CosTrading::ReadonlyDynamicProperty (type, prop_name)); } } } + // ************************************************************* + // TAO_Admin + // ************************************************************* + template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: TAO_Admin (TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &trader) @@ -1285,15 +1284,14 @@ TAO_Admin (TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &trader) { // A random 4-bytes will prefix the sequence number space for each // trader, making it extremely unlikely that the sequence spaces for - // two traders will over lap. @@ TODO: This is a bad way to - // generate pseudo random numbers. + // two traders will over lap. + // @@ TODO: This is a bad way to generate pseudo random numbers. // Ok, then, Carlos, we'll do it a different way: ip addr + pid. ACE_UINT32 ip_addr = 0; ASYS_TCHAR host_name[BUFSIZ]; - if (ACE_OS::hostname (host_name, - BUFSIZ) != -1) + if (ACE_OS::hostname (host_name, BUFSIZ) != -1) { ACE_INET_Addr addr ((u_short) 0, host_name); ip_addr = addr.get_ip_address (); @@ -1338,7 +1336,7 @@ TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::~TAO_Admin (void) template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::Admin::OctetSeq * -TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::request_id_stem (CORBA::Environment&) +TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::request_id_stem (CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { ACE_GUARD_RETURN (TRADER_LOCK_TYPE, trader_mon, this->lock_, 0); @@ -1361,7 +1359,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_def_search_card (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1375,7 +1373,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_max_search_card (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1389,7 +1387,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_def_match_card (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1403,7 +1401,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_max_match_card (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1417,7 +1415,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_def_return_card (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1431,7 +1429,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_max_return_card (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1445,7 +1443,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_max_list (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1459,7 +1457,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::Boolean TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_supports_modifiable_properties (CORBA::Boolean value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::Boolean return_value = @@ -1473,7 +1471,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::Boolean TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_supports_dynamic_properties (CORBA::Boolean value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::Boolean return_value = @@ -1487,7 +1485,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::Boolean TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_supports_proxy_offers (CORBA::Boolean value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::Boolean return_value = @@ -1501,7 +1499,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_def_hop_count (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1515,7 +1513,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CORBA::ULong TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_max_hop_count (CORBA::ULong value, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CORBA::ULong return_value = @@ -1529,7 +1527,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::FollowOption TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_def_follow_policy (CosTrading::FollowOption policy, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CosTrading::FollowOption return_value = @@ -1543,7 +1541,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::FollowOption TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_max_follow_policy (CosTrading::FollowOption policy, - CORBA::Environment& ) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CosTrading::FollowOption return_value = @@ -1557,7 +1555,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::FollowOption TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_max_link_follow_policy (CosTrading::FollowOption policy, - CORBA::Environment&) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CosTrading::FollowOption return_value = @@ -1571,7 +1569,7 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::TypeRepository_ptr TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_type_repos (CosTrading::TypeRepository_ptr repository, - CORBA::Environment&) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { CosTrading::TypeRepository_ptr return_value = @@ -1585,11 +1583,10 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::Admin::OctetSeq* TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: set_request_id_stem (const CosTrading::Admin::OctetSeq& stem, - CORBA::Environment&) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { - ACE_GUARD_RETURN (TRADER_LOCK_TYPE, trader_mon, this->lock_, - &this->stem_id_); + ACE_GUARD_RETURN (TRADER_LOCK_TYPE, trader_mon, this->lock_, &this->stem_id_); this->stem_id_ = stem; return &this->stem_id_; } @@ -1600,12 +1597,12 @@ TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: list_offers (CORBA::ULong how_many, CosTrading::OfferIdSeq_out ids, CosTrading::OfferIdIterator_out id_itr, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::NotImplemented)) { // This method only applies when the register interface is implemented if (CORBA::is_nil (this->trader_.trading_components().register_if())) - ACE_THROW (CosTrading::NotImplemented()); + TAO_THROW (CosTrading::NotImplemented()); TAO_Offer_Database<MAP_LOCK_TYPE>& type_map = this->trader_.offer_database (); TAO_Offer_Id_Iterator* offer_id_iter = type_map.retrieve_all_offer_ids (); @@ -1613,15 +1610,11 @@ list_offers (CORBA::ULong how_many, id_itr = CosTrading::OfferIdIterator::_nil (); if (how_many > 0) { - int check = offer_id_iter->next_n (how_many, ids, ACE_TRY_ENV); - ACE_CHECK; - - if (check == 1) + if (offer_id_iter->next_n (how_many, ids, TAO_IN_ENV) == 1) { - id_itr = offer_id_iter->_this (ACE_TRY_ENV); - ACE_CHECK; - offer_id_iter->_remove_ref (ACE_TRY_ENV); - ACE_CHECK; + id_itr = offer_id_iter->_this (TAO_IN_ENV); + offer_id_iter->_remove_ref (TAO_IN_ENV); + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); } else delete offer_id_iter; @@ -1633,16 +1626,20 @@ list_offers (CORBA::ULong how_many, template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> void TAO_Admin<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: -list_proxies (CORBA::ULong, - CosTrading::OfferIdSeq_out, - CosTrading::OfferIdIterator_out, - CORBA::Environment& ACE_TRY_ENV) +list_proxies (CORBA::ULong how_many, + CosTrading::OfferIdSeq_out ids, + CosTrading::OfferIdIterator_out id_itr, + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::NotImplemented)) { - ACE_THROW (CosTrading::NotImplemented ()); + TAO_THROW (CosTrading::NotImplemented ()); } + // ************************************************************* + // TAO_Link + // ************************************************************* + template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::TAO_Link (TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &trader) : TAO_Trader_Components <POA_CosTrading::Link> (trader.trading_components ()), @@ -1664,7 +1661,7 @@ add_link (const char *name, CosTrading::Lookup_ptr target, CosTrading::FollowOption def_pass_on_follow_rule, CosTrading::FollowOption limiting_follow_rule, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::Link::IllegalLinkName, CosTrading::Link::DuplicateLinkName, @@ -1674,28 +1671,28 @@ add_link (const char *name, { // Ensure the link name is valid. if (! TAO_Trader_Base::is_valid_identifier_name (name)) - ACE_THROW (CosTrading::Link::IllegalLinkName (name)); + TAO_THROW (CosTrading::Link::IllegalLinkName (name)); // Ensure this isn't a duplicate link name. TAO_String_Hash_Key link_name (name); if (this->links_.find (link_name) == 0) - ACE_THROW (CosTrading::Link::DuplicateLinkName (name)); + TAO_THROW (CosTrading::Link::DuplicateLinkName (name)); // Ensure the lookup_ptr isn't nil. if (CORBA::is_nil (target)) - ACE_THROW (CosTrading::InvalidLookupRef (target)); + TAO_THROW (CosTrading::InvalidLookupRef (target)); // Ensure that the default link behavior isn't stronger than the // limiting link behavior. if (def_pass_on_follow_rule > limiting_follow_rule) - ACE_THROW (CosTrading::Link::DefaultFollowTooPermissive + TAO_THROW (CosTrading::Link::DefaultFollowTooPermissive (def_pass_on_follow_rule, limiting_follow_rule)); // Ensure that the limiting link behavior for this link doesn't // exceed the maximum allowed for a link. - if (limiting_follow_rule < this->max_link_follow_policy (ACE_TRY_ENV)) - ACE_THROW (CosTrading::Link::LimitingFollowTooPermissive - (limiting_follow_rule, this->max_link_follow_policy (ACE_TRY_ENV))); + if (limiting_follow_rule < this->max_link_follow_policy (TAO_IN_ENV)) + TAO_THROW (CosTrading::Link::LimitingFollowTooPermissive + (limiting_follow_rule, this->max_link_follow_policy (TAO_IN_ENV))); // Create a link info structure for this link of the federation. CosTrading::Link::LinkInfo link_info; @@ -1704,7 +1701,7 @@ add_link (const char *name, link_info.def_pass_on_follow_rule = def_pass_on_follow_rule; link_info.limiting_follow_rule = limiting_follow_rule; - ACE_CHECK; + TAO_CHECK_ENV_RETURN_VOID (TAO_IN_ENV); // Insert this link into the collection of links. this->links_.bind (link_name, link_info); @@ -1714,19 +1711,19 @@ template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> void TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: remove_link (const char *name, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::Link::IllegalLinkName, CosTrading::Link::UnknownLinkName)) { // Ensure the link name is valid. if (! TAO_Trader_Base::is_valid_identifier_name (name)) - ACE_THROW (CosTrading::Link::IllegalLinkName (name)); + TAO_THROW (CosTrading::Link::IllegalLinkName (name)); // Ensure this isn't a duplicate link name. TAO_String_Hash_Key link_name (name); if (this->links_.find (link_name) == -1) - ACE_THROW (CosTrading::Link::UnknownLinkName (name)); + TAO_THROW (CosTrading::Link::UnknownLinkName (name)); // Erase the link state from the map. this->links_.unbind (link_name); @@ -1735,30 +1732,26 @@ remove_link (const char *name, template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::Link::LinkInfo * TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::describe_link (const char *name, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::Link::IllegalLinkName, CosTrading::Link::UnknownLinkName)) { // Ensure the link name is valid. if (! TAO_Trader_Base::is_valid_identifier_name (name)) - ACE_THROW_RETURN (CosTrading::Link::IllegalLinkName (name), 0); + TAO_THROW_RETURN (CosTrading::Link::IllegalLinkName (name), 0); // Ensure this isn't a duplicate link name. ACE_TYPENAME Links::ENTRY* link_entry = 0; TAO_String_Hash_Key link_name (name); if (this->links_.find (link_name, link_entry) == -1) - ACE_THROW_RETURN (CosTrading::Link::UnknownLinkName (name), - 0); + TAO_THROW_RETURN (CosTrading::Link::UnknownLinkName (name), 0); // Build a new Link Info structure. CosTrading::Link::LinkInfo* new_link_info = 0; CosTrading::Link::LinkInfo& old_link_info = link_entry->int_id_; - ACE_NEW_THROW_EX (new_link_info, - CosTrading::Link::LinkInfo, - CORBA::NO_MEMORY ()); - ACE_CHECK_RETURN (0); + ACE_NEW_RETURN (new_link_info, CosTrading::Link::LinkInfo, 0); new_link_info->def_pass_on_follow_rule = old_link_info.def_pass_on_follow_rule; new_link_info->limiting_follow_rule = old_link_info.limiting_follow_rule; @@ -1769,8 +1762,8 @@ TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::describe_link (const char *name, // This avoids the nested upcall that would occur were we to invoke // this method in the add_link method. - new_link_info->target_reg = old_link_info.target->register_if (ACE_TRY_ENV); - ACE_CHECK_RETURN (new_link_info); + new_link_info->target_reg = old_link_info.target->register_if (TAO_IN_ENV); + TAO_CHECK_ENV_RETURN (TAO_IN_ENV, new_link_info); // return the link information for this link name. return new_link_info; @@ -1778,7 +1771,7 @@ TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::describe_link (const char *name, template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::LinkNameSeq* -TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::list_links (CORBA::Environment&) +TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::list_links (CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException)) { // Allocate space for the link names. @@ -1802,7 +1795,7 @@ TAO_Link<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: modify_link (const char *name, CosTrading::FollowOption def_pass_on_follow_rule, CosTrading::FollowOption limiting_follow_rule, - CORBA::Environment& ACE_TRY_ENV) + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CosTrading::Link::IllegalLinkName, CosTrading::Link::UnknownLinkName, CosTrading::Link::DefaultFollowTooPermissive, @@ -1810,26 +1803,25 @@ modify_link (const char *name, { // Ensure the link name is valid. if (! TAO_Trader_Base::is_valid_identifier_name (name)) - ACE_THROW (CosTrading::Link::IllegalLinkName (name)); + TAO_THROW (CosTrading::Link::IllegalLinkName (name)); // Ensure this isn't a duplicate link name. ACE_TYPENAME Links::ENTRY* link_entry = 0; TAO_String_Hash_Key link_name (name); if (this->links_.find (link_name, link_entry) == -1) - ACE_THROW (CosTrading::Link::UnknownLinkName (name)); + TAO_THROW (CosTrading::Link::UnknownLinkName (name)); // Ensure that the default link behavior isn't stronger than the // limiting link behavior. if (def_pass_on_follow_rule > limiting_follow_rule) - ACE_THROW (CosTrading::Link::DefaultFollowTooPermissive + TAO_THROW (CosTrading::Link::DefaultFollowTooPermissive (def_pass_on_follow_rule, limiting_follow_rule)); // Ensure that the limiting link behavior for this link doesn't // exceed the maximum allowed for a link. - // @@ Seth, rethrowing an exception? This is probably not exception safe. - if (limiting_follow_rule < this->max_link_follow_policy (ACE_TRY_ENV)) - ACE_THROW (CosTrading::Link::LimitingFollowTooPermissive - (limiting_follow_rule, this->max_link_follow_policy (ACE_TRY_ENV))); + if (limiting_follow_rule < this->max_link_follow_policy (TAO_IN_ENV)) + TAO_THROW (CosTrading::Link::LimitingFollowTooPermissive + (limiting_follow_rule, this->max_link_follow_policy (TAO_IN_ENV))); // Adjust the link settings CosTrading::Link::LinkInfo& link_info = link_entry->int_id_; @@ -1837,6 +1829,10 @@ modify_link (const char *name, link_info.limiting_follow_rule = limiting_follow_rule; } + // ************************************************************* + // TAO_Proxy + // ************************************************************* + template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> TAO_Proxy<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: TAO_Proxy (TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &trader) @@ -1854,13 +1850,13 @@ TAO_Proxy<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>::~TAO_Proxy (void) template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::OfferId TAO_Proxy<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: -export_proxy (CosTrading::Lookup_ptr, - const char *, - const CosTrading::PropertySeq&, - CORBA::Boolean, - const char *, - const CosTrading::PolicySeq&, - CORBA::Environment& ACE_TRY_ENV) +export_proxy (CosTrading::Lookup_ptr target, + const char *type, + const CosTrading::PropertySeq& properties, + CORBA::Boolean if_match_all, + const char * recipe, + const CosTrading::PolicySeq& policies_to_pass_on, + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, @@ -1873,46 +1869,46 @@ export_proxy (CosTrading::Lookup_ptr, CosTrading::DuplicatePropertyName, CosTrading::DuplicatePolicyName)) { - ACE_THROW_RETURN (CORBA::UNKNOWN (), 0); + TAO_THROW_RETURN (CORBA::UNKNOWN (), 0); } template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> void TAO_Proxy<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: -withdraw_proxy (const char *, - CORBA::Environment& ACE_TRY_ENV) +withdraw_proxy (const char *id, + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalOfferId, CosTrading::UnknownOfferId, CosTrading::Proxy::NotProxyOfferId)) { - ACE_THROW (CORBA::UNKNOWN ()); + TAO_THROW (CORBA::UNKNOWN ()); } template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> CosTrading::Proxy::ProxyInfo * TAO_Proxy<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: -describe_proxy (const char *, - CORBA::Environment& ACE_TRY_ENV) +describe_proxy (const char *id, + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::IllegalOfferId, CosTrading::UnknownOfferId, CosTrading::Proxy::NotProxyOfferId)) { - ACE_THROW_RETURN (CORBA::UNKNOWN (), 0); + TAO_THROW_RETURN (CORBA::UNKNOWN (), 0); } template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE> void TAO_Proxy<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>:: -list_proxies (CORBA::ULong, - CosTrading::OfferIdSeq*&, - CosTrading::OfferIdIterator_ptr&, - CORBA::Environment& ACE_TRY_ENV) +list_proxies (CORBA::ULong how_many, + CosTrading::OfferIdSeq*& ids, + CosTrading::OfferIdIterator_ptr& id_itr, + CORBA::Environment& TAO_IN_ENV) ACE_THROW_SPEC ((CORBA::SystemException, CosTrading::NotImplemented)) { - ACE_THROW (CORBA::UNKNOWN ()); + TAO_THROW (CORBA::UNKNOWN ()); } #endif /* TAO_TRADER_INTERFACES_C */ |