TAO_Offer_Database< LOCK_TYPE > Class Template Reference
#include <Offer_Database.h>
List of all members.
Classes |
struct | Offer_Map_Entry |
Public Types |
typedef
TAO_Service_Offer_Iterator
< LOCK_TYPE > | offer_iterator |
typedef
ACE_Hash_Map_Manager_Ex
< CORBA::String_var,
Offer_Map_Entry *, ACE_Hash
< CORBA::String_var >
, ACE_Equal_To
< CORBA::String_var >
, ACE_Null_Mutex > | Offer_Database |
Public Member Functions |
| TAO_Offer_Database (void) |
| No arg constructor.
|
| ~TAO_Offer_Database (void) |
CosTrading::OfferId | insert_offer (const char *type, CosTrading::Offer *offer) |
int | remove_offer (const CosTrading::OfferId offer_id) |
CosTrading::Offer * | lookup_offer (const CosTrading::OfferId offer_id) |
CosTrading::Offer * | lookup_offer (const CosTrading::OfferId offer_id, char *&type_name) |
TAO_Offer_Id_Iterator * | retrieve_all_offer_ids (void) |
Private Member Functions |
CosTrading::Offer * | lookup_offer (const char *type, CORBA::ULong id) |
int | remove_offer (const char *type, CORBA::ULong id) |
| ACE_UNIMPLEMENTED_FUNC (void operator=(const TAO_Offer_Database< LOCK_TYPE > &)) ACE_UNIMPLEMENTED_FUNC(TAO_Offer_Database(const TAO_Offer_Database< LOCK_TYPE > &)) LOCK_TYPE db_lock_ |
Static Private Member Functions |
static CosTrading::OfferId | generate_offer_id (const char *type_name, CORBA::ULong id) |
static void | parse_offer_id (const CosTrading::OfferId offer_id, char *&service_type, CORBA::ULong &id) |
Private Attributes |
Offer_Database | offer_db_ |
Friends |
class | TAO_Service_Offer_Iterator< LOCK_TYPE > |
Detailed Description
template<class LOCK_TYPE>
class TAO_Offer_Database< LOCK_TYPE >
The TAO_Offer_Database encapsulates the mapping of service types to those offers exported with that service types. The underlying structure is a map of maps. The first maps maps the service type name to a map of exported offers. The second map maps the identifying index for that offer within the service types. So a service type name and an index uniquely identifies an exported offer. In fact, when the register export interface returns a CosTrading::OfferId, it's returning no more than a simple string concatenation of these two values. In addition to all these wonderful things, the TAO_Offer_Database has built-in locking, one reader/writer-style lock for modifying the top-level map and a reader/writer-style for each of the offer maps. Needless to say the locks are acquired when the TAO_Offer_Database performs operations on the structures they guard. NOTE: TAO_Offer_Database needs to be parameterized by a READER/WRITER LOCK, a RECURSIVE MUTEX, or a NULL MUTEX, not a simple binary mutex! Mutexes will cause deadlock when you try to contruct an iterator (which acquires a read lock on the map under an existing read lock). Just don't do it, ok?
Member Typedef Documentation
template<class LOCK_TYPE>
template<class LOCK_TYPE>
Constructor & Destructor Documentation
template<class LOCK_TYPE >
template<class LOCK_TYPE >
Member Function Documentation
template<class LOCK_TYPE>
template<class LOCK_TYPE >
Take in a service type name for the offer the current value of of the counter and generate an offer id.
template<class LOCK_TYPE >
template<class LOCK_TYPE >
Lookup an offer whose type is <type> and id, <id>. Return 0 on failure.
template<class LOCK_TYPE >
Lookup an offer whose OfferId is <offer_id> and return in <type_name> the type name of the object. Type name is just a pointer to a location in offer_id, so DON'T DELETE IT.
template<class LOCK_TYPE >
Lookup an offer whose offer_id is <offer_id>, and return it. Otherwise, throw the appropriate exception.
template<class LOCK_TYPE >
Take in a previously generated offer id and return the type and id that were used to generate the offer id.
template<class LOCK_TYPE >
template<class LOCK_TYPE >
template<class LOCK_TYPE >
Return an iterator that will traverse and return all the offer ids in the service type map.
Friends And Related Function Documentation
template<class LOCK_TYPE>
Member Data Documentation
template<class LOCK_TYPE>
The documentation for this class was generated from the following files: