📄 trader_interfaces.h
字号:
TAO_Preference_Interpreter& pref_inter,
TAO_Offer_Filter& offer_filter
ACE_ENV_ARG_DECL_WITH_DEFAULTS);
/// Check if offers of a type fit the constraints and order them
/// according to the preferences submitted.
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);
/**
* 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.
*/
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)
ACE_THROW_SPEC ((CosTrading::IllegalPropertyName,
CosTrading::DuplicatePropertyName));
/// If a starting_trader policy was specfied, foward the query to the
/// next link in the sequence.
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)
ACE_THROW_SPEC ((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));
/**
* 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.
*/
CORBA::Boolean retrieve_links (TAO_Policies& policies,
CORBA::ULong offer_returned,
CosTrading::LinkNameSeq_out links
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::Lookup::PolicyTypeMismatch));
/**
* 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.
*/
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)
ACE_THROW_SPEC ((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));
/// Merge the results from a federated query into the collected results.
void order_merged_sequence (TAO_Preference_Interpreter& pref_inter,
CosTrading::OfferSeq& offers);
CORBA::Boolean seen_request_id (TAO_Policies& policies,
CosTrading::Admin::OctetSeq*& seq
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
CosTrading::Lookup::PolicyTypeMismatch));
// = Disallow these operations.
ACE_UNIMPLEMENTED_FUNC (void operator= (const TAO_Lookup<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &))
ACE_UNIMPLEMENTED_FUNC (TAO_Lookup (const TAO_Lookup<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &))
const unsigned int IDS_SAVED;
/// A reference to the trader for obtaining offer maps.
TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &trader_;
typedef ACE_Unbounded_Queue<CosTrading::Admin::OctetSeq*> Request_Ids;
/// A list of recent request_id_stems
Request_Ids request_ids_;
/// Lock to secure the set of request ids.
TRADER_LOCK_TYPE lock_;
};
/**
* @class TAO_Register
*
* @brief This class implements CosTrading::Register IDL interface.
*/
template <class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
class TAO_Register :
public TAO_Trader_Components<POA_CosTrading::Register>,
public TAO_Support_Attributes<POA_CosTrading::Register>
{
public:
TAO_Register (TAO_Trader<TRADER_LOCK_TYPE,MAP_LOCK_TYPE> &trader);
virtual ~TAO_Register (void);
virtual CosTrading::OfferId _cxx_export (CORBA::Object_ptr reference,
const char *type,
const CosTrading::PropertySeq& properties
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));
// BEGIN SPEC
// The export operation is the means by which a service is
// advertised, via a trader, to a community of potential
// importers. The OfferId returned is the handle with which the
// exporter can identify the exported offer when attempting to
// access it via other operations. The OfferId is only meaningful in
// the context of the trader that generated it.
// The "reference" parameter is the information that enables a client
// to interact with a remote server. If a trader implementation chooses
// to consider certain types of object references (e.g., a nil object
// reference) to be unexportable, then it may return the InvalidObjectRef
// exception in such cases.
// The "type" parameter
// identifies the service type, which contains the interface type of
// the "reference" and a set of named property types that may be
// used in further describing this offer (i.e., it restricts what is
// acceptable in the properties parameter).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -