TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > Class Template Reference

This class implements CosTrading::Lookup IDL interface. More...

#include <Trader_Interfaces.h>

Inheritance diagram for TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >:

Inheritance graph
[legend]
Collaboration diagram for TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 TAO_Lookup (TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > &trader)
 ~TAO_Lookup (void)
virtual void query (const char *type, const char *constr, const char *pref, const CosTrading::PolicySeq &policies, const CosTrading::Lookup::SpecifiedProps &desired_props, CORBA::ULong how_many, CosTrading::OfferSeq_out offers, CosTrading::OfferIterator_out offer_itr, CosTrading::PolicyNameSeq_out limits_applied ACE_ENV_ARG_DECL) throw (CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, CosTrading::IllegalConstraint, CosTrading::Lookup::IllegalPreference, CosTrading::Lookup::IllegalPolicyName, CosTrading::Lookup::PolicyTypeMismatch, CosTrading::Lookup::InvalidPolicyValue, CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName, CosTrading::DuplicatePolicyName)

Private Types

typedef ACE_Unbounded_Queue<
CosTrading::Admin::OctetSeq * > 
Request_Ids

Private Member Functions

TAO_Offer_Iteratorcreate_offer_iterator (const TAO_Property_Filter &)
void lookup_all_subtypes (const char *type, CosTradingRepos::ServiceTypeRepository::IncarnationNumber &inc_num, TAO_Offer_Database< MAP_LOCK_TYPE > &offer_database, CosTradingRepos::ServiceTypeRepository_ptr rep, TAO_Constraint_Interpreter &constr_inter, TAO_Preference_Interpreter &pref_inter, TAO_Offer_Filter &offer_filter ACE_ENV_ARG_DECL_WITH_DEFAULTS)
void lookup_one_type (const char *type, TAO_Offer_Database< MAP_LOCK_TYPE > &offer_database, TAO_Constraint_Interpreter &constr_inter, TAO_Preference_Interpreter &pref_inter, TAO_Offer_Filter &offer_filter)
int fill_receptacles (const char *, 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 ACE_ENV_ARG_DECL) throw (CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName)
void forward_query (const char *next_hop, const char *type, const char *constr, const char *pref, const CosTrading::PolicySeq &policy_seq, const CosTrading::Lookup::SpecifiedProps &desired_props, CORBA::ULong how_many, CosTrading::OfferSeq_out offers, CosTrading::OfferIterator_out offer_itr, CosTrading::PolicyNameSeq_out limits_applied ACE_ENV_ARG_DECL) throw (CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, CosTrading::IllegalConstraint, CosTrading::Lookup::IllegalPreference, CosTrading::Lookup::IllegalPolicyName, CosTrading::Lookup::PolicyTypeMismatch, CosTrading::Lookup::InvalidPolicyValue, CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName, CosTrading::DuplicatePolicyName)
CORBA::Boolean retrieve_links (TAO_Policies &policies, CORBA::ULong offer_returned, CosTrading::LinkNameSeq_out links ACE_ENV_ARG_DECL) throw (CORBA::SystemException, CosTrading::Lookup::PolicyTypeMismatch)
void federated_query (const CosTrading::LinkNameSeq &links, const TAO_Policies &policies, const CosTrading::Admin::OctetSeq &request_id, TAO_Preference_Interpreter &pref_inter, const char *type, const char *constr, const char *pref, const CosTrading::Lookup::SpecifiedProps &desired_props, CORBA::ULong how_many, CosTrading::OfferSeq &offers, CosTrading::OfferIterator_ptr &offer_itr, CosTrading::PolicyNameSeq &limits_applied ACE_ENV_ARG_DECL) throw (CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, CosTrading::IllegalConstraint, CosTrading::Lookup::IllegalPreference, CosTrading::Lookup::IllegalPolicyName, CosTrading::Lookup::PolicyTypeMismatch, CosTrading::Lookup::InvalidPolicyValue, CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName, CosTrading::DuplicatePolicyName)
void order_merged_sequence (TAO_Preference_Interpreter &pref_inter, CosTrading::OfferSeq &offers)
 Merge the results from a federated query into the collected results.
CORBA::Boolean seen_request_id (TAO_Policies &policies, CosTrading::Admin::OctetSeq *&seq ACE_ENV_ARG_DECL) throw (CORBA::SystemException, CosTrading::Lookup::PolicyTypeMismatch)
void operator= (const TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > &)
 TAO_Lookup (const TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > &)

Private Attributes

const unsigned int IDS_SAVED
TAO_Trader< TRADER_LOCK_TYPE,
MAP_LOCK_TYPE > & 
trader_
 A reference to the trader for obtaining offer maps.
Request_Ids request_ids_
 A list of recent request_id_stems.
TRADER_LOCK_TYPE lock_
 Lock to secure the set of request ids.

Detailed Description

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
class TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >

This class implements CosTrading::Lookup IDL interface.


Member Typedef Documentation

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
typedef ACE_Unbounded_Queue<CosTrading::Admin::OctetSeq*> TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::Request_Ids [private]
 


Constructor & Destructor Documentation

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  ) 
 

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::~TAO_Lookup void   ) 
 

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::TAO_Lookup const TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > &   )  [private]
 


Member Function Documentation

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
TAO_Offer_Iterator * TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::create_offer_iterator const TAO_Property_Filter  )  [private]
 

Factory method for creating an appropriate Offer Iterator based on the presence of the Register Interface.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
void TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::federated_query const CosTrading::LinkNameSeq links,
const TAO_Policies policies,
const CosTrading::Admin::OctetSeq request_id,
TAO_Preference_Interpreter pref_inter,
const char *  type,
const char *  constr,
const char *  pref,
const CosTrading::Lookup::SpecifiedProps desired_props,
CORBA::ULong  how_many,
CosTrading::OfferSeq offers,
CosTrading::OfferIterator_ptr &  offer_itr,
CosTrading::PolicyNameSeq &limits_applied  ACE_ENV_ARG_DECL
throw (CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, CosTrading::IllegalConstraint, CosTrading::Lookup::IllegalPreference, CosTrading::Lookup::IllegalPolicyName, CosTrading::Lookup::PolicyTypeMismatch, CosTrading::Lookup::InvalidPolicyValue, CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName, CosTrading::DuplicatePolicyName) [private]
 

Perform and pass on a query over a set of links. Merge the results of the federated queries into a single set of results suitable for returning to the user.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
int TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::fill_receptacles const char *  ,
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  ACE_ENV_ARG_DECL
throw (CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName) [private]
 

This method takes the list of ordered offers and places a number of them in the sequence of returned offers and the rest into thr iterator. In addition, fill_receptacles uses the TAO_Property_Filter to ensure the returned offers contain the properties specified in the desired_props in parameter.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
void TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::forward_query const char *  next_hop,
const char *  type,
const char *  constr,
const char *  pref,
const CosTrading::PolicySeq policy_seq,
const CosTrading::Lookup::SpecifiedProps desired_props,
CORBA::ULong  how_many,
CosTrading::OfferSeq_out  offers,
CosTrading::OfferIterator_out  offer_itr,
CosTrading::PolicyNameSeq_out limits_applied  ACE_ENV_ARG_DECL
throw (CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, CosTrading::IllegalConstraint, CosTrading::Lookup::IllegalPreference, CosTrading::Lookup::IllegalPolicyName, CosTrading::Lookup::PolicyTypeMismatch, CosTrading::Lookup::InvalidPolicyValue, CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName, CosTrading::DuplicatePolicyName) [private]
 

If a starting_trader policy was specfied, foward the query to the next link in the sequence.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
void TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::lookup_all_subtypes const char *  type,
CosTradingRepos::ServiceTypeRepository::IncarnationNumber inc_num,
TAO_Offer_Database< MAP_LOCK_TYPE > &  offer_database,
CosTradingRepos::ServiceTypeRepository_ptr  rep,
TAO_Constraint_Interpreter constr_inter,
TAO_Preference_Interpreter pref_inter,
TAO_Offer_Filter &offer_filter  ACE_ENV_ARG_DECL_WITH_DEFAULTS
[private]
 

Traverse the type hierarchy to pull the matching offers from all subtypes of the root type.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
void TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::lookup_one_type const char *  type,
TAO_Offer_Database< MAP_LOCK_TYPE > &  offer_database,
TAO_Constraint_Interpreter constr_inter,
TAO_Preference_Interpreter pref_inter,
TAO_Offer_Filter offer_filter
[private]
 

Check if offers of a type fit the constraints and order them according to the preferences submitted.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
void TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::operator= const TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > &   )  [private]
 

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
void TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::order_merged_sequence TAO_Preference_Interpreter pref_inter,
CosTrading::OfferSeq offers
[private]
 

Merge the results from a federated query into the collected results.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
virtual void TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::query const char *  type,
const char *  constr,
const char *  pref,
const CosTrading::PolicySeq policies,
const CosTrading::Lookup::SpecifiedProps desired_props,
CORBA::ULong  how_many,
CosTrading::OfferSeq_out  offers,
CosTrading::OfferIterator_out  offer_itr,
CosTrading::PolicyNameSeq_out limits_applied  ACE_ENV_ARG_DECL
throw (CORBA::SystemException, CosTrading::IllegalServiceType, CosTrading::UnknownServiceType, CosTrading::IllegalConstraint, CosTrading::Lookup::IllegalPreference, CosTrading::Lookup::IllegalPolicyName, CosTrading::Lookup::PolicyTypeMismatch, CosTrading::Lookup::InvalidPolicyValue, CosTrading::IllegalPropertyName, CosTrading::DuplicatePropertyName, CosTrading::DuplicatePolicyName) [virtual]
 

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
CORBA::Boolean TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::retrieve_links TAO_Policies policies,
CORBA::ULong  offer_returned,
CosTrading::LinkNameSeq_out links  ACE_ENV_ARG_DECL
throw (CORBA::SystemException, CosTrading::Lookup::PolicyTypeMismatch) [private]
 

Assemble a sequence of links that the federate_query method should follow. Use the starting_trader policy, if one's provided, otherwise use the Link interface to determine which of the registered links should be followed in this query.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
CORBA::Boolean TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::seen_request_id TAO_Policies policies,
CosTrading::Admin::OctetSeq *&seq  ACE_ENV_ARG_DECL
throw (CORBA::SystemException, CosTrading::Lookup::PolicyTypeMismatch) [private]
 


Member Data Documentation

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
const unsigned int TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::IDS_SAVED [private]
 

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
TRADER_LOCK_TYPE TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::lock_ [private]
 

Lock to secure the set of request ids.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
Request_Ids TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::request_ids_ [private]
 

A list of recent request_id_stems.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE>& TAO_Lookup< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::trader_ [private]
 

A reference to the trader for obtaining offer maps.


The documentation for this class was generated from the following files:
Generated on Wed Nov 23 16:33:26 2005 for TAO_CosTrader by  doxygen 1.4.5