Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members

# TAO_Lookup Class Template Reference

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

`#include <Trader_Interfaces.h>`

Inheritance diagram for TAO_Lookup:

[legend]
Collaboration diagram for TAO_Lookup:

[legend]
List of all members.

## Public Methods
| 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 Methods
TAO_Offer_Iterator * | create_offer_iterator (const TAO_Property_Filter &)
| Factory method for creating an appropriate Offer Iterator based on the presence of the Register Interface. More...
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)
| Traverse the type hierarchy to pull the matching offers from all subtypes of the root type. More...
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)
| Check if offers of a type fit the constraints and order them according to the preferences submitted. More...
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)
| 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. More...
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)
| If a starting_trader policy was specfied, foward the query to the next link in the sequence. More...
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)
| Assemble a sequence of links that the federate_query method should follow. More...
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)
| Perform and pass on a query over a set of links. More...
void | order_merged_sequence (TAO_Preference_Interpreter &pref_inter, CosTrading::OfferSeq &offers)
| Merge the results from a federated query into the collected results. More...
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. More...
Request_Ids | request_ids_
| A list of recent request_id_stems. More...
TRADER_LOCK_TYPE | lock_
| Lock to secure the set of request ids. More...

## 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::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 & | pfilter | ) | `[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
| ) | `[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 | offers_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::IDS_SAVED`[private]`

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

| Lock to secure the set of request ids.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
Request_Ids TAO_Lookup::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_`[private]`

| A reference to the trader for obtaining offer maps.

The documentation for this class was generated from the following files:

- Trader_Interfaces.h
- Trader_Interfaces.cpp