TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > Class Template Reference

This class packages together all the various pieces that provide functionality specified in COS Trading specification. More...

#include <Trader_T.h>

Inheritance diagram for TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >:

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

Collaboration graph
[legend]
List of all members.

Public Types

typedef TAO_Offer_Database<
MAP_LOCK_TYPE > 
Offer_Database
 Offer Database Trait.


Public Member Functions

 TAO_Trader (Trader_Components components=LOOKUP)
virtual ~TAO_Trader (void)
 Destructor.

Offer_Databaseoffer_database (void)
 Accessor for the structure with all the service offers.

ACE_Locklock (void)
 Returns the trader.


Protected Types

typedef TAO_Trader< TRADER_LOCK_TYPE,
MAP_LOCK_TYPE > 
TRADER_SELF
enum  {
  LOOKUP_IF, REGISTER_IF, ADMIN_IF, PROXY_IF,
  LINK_IF
}

Protected Attributes

Offer_Database offer_database_
ACE_Lock_Adapter< TRADER_LOCK_TYPE > lock_
 Lock that guards the state of the trader (its configuration).

PortableServer::ServantBaseifs_ [5]

Private Member Functions

void operator= (const TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > &)

Detailed Description

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
class TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >

This class packages together all the various pieces that provide functionality specified in COS Trading specification.

TAO_Trader contains all the components that together represent a single trader. Based on its constructor arguments, TAO_Trader creates instances of appropriate interface implementations as well as instances of objects common to more than one interface (offers, attributes, etc.). TAO_Trader also enforces the proper order on all initializations. TAO_Trader acts like a "glue" class that creates appropriate components, holds everything together, and enforces order. TAO_Trader is parameterized by two types of locks: one for its service service offers, one for its state (configuration).

Definition at line 57 of file Trader_T.h.


Member Typedef Documentation

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
typedef TAO_Offer_Database<MAP_LOCK_TYPE> TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::Offer_Database
 

Offer Database Trait.

Definition at line 65 of file Trader_T.h.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
typedef TAO_Trader<TRADER_LOCK_TYPE, MAP_LOCK_TYPE> TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::TRADER_SELF [protected]
 

Definition at line 86 of file Trader_T.h.


Member Enumeration Documentation

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
anonymous enum [protected]
 

Enumeration values:
LOOKUP_IF 
REGISTER_IF 
ADMIN_IF 
PROXY_IF 
LINK_IF 

Definition at line 93 of file Trader_T.h.


Constructor & Destructor Documentation

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
TAO_BEGIN_VERSIONED_NAMESPACE_DECL TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::TAO_Trader Trader_Components  components = LOOKUP  ) 
 

Constructor which based on its arguments will create a particular type of trader (e.g. Query trader, Simple trader, etc.) The argument is a bitwise OR of desired Trader_Components as listed in enumerated type above.

Definition at line 13 of file Trader_T.cpp.

References ACE_BIT_ENABLED, ACE_CHECK, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_NEW, TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::ADMIN_IF, TAO_Trading_Components_i::admin_if(), TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::ifs_, TAO_Trading_Components_i::link_if(), TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::LINK_IF, TAO_Trading_Components_i::lookup_if(), TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::LOOKUP_IF, TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::PROXY_IF, TAO_Trading_Components_i::proxy_if(), TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::REGISTER_IF, TAO_Trading_Components_i::register_if(), and TAO_Trader_Base::trading_components().

00014 {
00015   ACE_DECLARE_NEW_CORBA_ENV;
00016 
00017   // @@ Seth, we need a way to propagate the exception out.  This will
00018   // not work on platforms using environment variable.
00019   for (int i = LOOKUP_IF; i <= LINK_IF; i++)
00020     this->ifs_[i] = 0;
00021 
00022   if (ACE_BIT_ENABLED (components, LOOKUP))
00023     {
00024       TAO_Lookup<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>* lookup;
00025 
00026       ACE_NEW (lookup,
00027                (TAO_Lookup<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>) (*this));
00028 
00029       this->trading_components ().lookup_if (lookup->_this (ACE_ENV_SINGLE_ARG_PARAMETER));
00030       ACE_CHECK;
00031       lookup->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
00032       ACE_CHECK;
00033 
00034       this->ifs_[LOOKUP_IF] = lookup;
00035     }
00036   if (ACE_BIT_ENABLED (components, REGISTER))
00037     {
00038       TAO_Register<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>* reg;
00039 
00040       ACE_NEW (reg,
00041                (TAO_Register<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>) (*this));
00042 
00043       this->trading_components ().register_if (reg->_this (ACE_ENV_SINGLE_ARG_PARAMETER));
00044       ACE_CHECK;
00045       reg->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
00046       ACE_CHECK;
00047 
00048       this->ifs_[REGISTER_IF] = reg;
00049     }
00050   if (ACE_BIT_ENABLED (components, ADMIN))
00051     {
00052       TAO_Admin<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>* admin;
00053 
00054       ACE_NEW (admin,
00055                (TAO_Admin<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>) (*this));
00056 
00057       this->trading_components ().admin_if (admin->_this (ACE_ENV_SINGLE_ARG_PARAMETER));
00058       ACE_CHECK;
00059       admin->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
00060       ACE_CHECK;
00061 
00062       this->ifs_[ADMIN_IF] = admin;
00063     }
00064   if (ACE_BIT_ENABLED (components, PROXY))
00065     {
00066       TAO_Proxy<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>* proxy;
00067 
00068       ACE_NEW (proxy,
00069                (TAO_Proxy<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>) (*this));
00070 
00071       this->trading_components ().proxy_if (proxy->_this (ACE_ENV_SINGLE_ARG_PARAMETER));
00072       ACE_CHECK;
00073       proxy->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
00074       ACE_CHECK;
00075 
00076       this->ifs_[PROXY_IF] = proxy;
00077     }
00078   if (ACE_BIT_ENABLED (components, LINK))
00079     {
00080       TAO_Link<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>* link;
00081 
00082       ACE_NEW (link,
00083                (TAO_Link<TRADER_LOCK_TYPE, MAP_LOCK_TYPE>) (*this));
00084 
00085       this->trading_components ().link_if (link->_this (ACE_ENV_SINGLE_ARG_PARAMETER));
00086       ACE_CHECK;
00087       link->_remove_ref (ACE_ENV_SINGLE_ARG_PARAMETER);
00088       ACE_CHECK;
00089 
00090       this->ifs_[LINK_IF] = link;
00091     }
00092 }

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::~TAO_Trader void   )  [virtual]
 

Destructor.

Definition at line 95 of file Trader_T.cpp.

References ACE_CATCHANY, ACE_DECLARE_NEW_CORBA_ENV, ACE_ENDTRY, ACE_ENV_ARG_PARAMETER, ACE_ENV_SINGLE_ARG_PARAMETER, ACE_TRY, ACE_TRY_CHECK, TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::ifs_, TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::LINK_IF, and TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::LOOKUP_IF.

00096 {
00097   // Remove Trading Components from POA
00098 
00099   ACE_DECLARE_NEW_CORBA_ENV;
00100 
00101   for (int i = LOOKUP_IF; i <= LINK_IF; i++)
00102     {
00103       if (this->ifs_[i] != 0)
00104         {
00105           ACE_TRY
00106             {
00107               PortableServer::POA_var poa =
00108                 this->ifs_[i]->_default_POA (ACE_ENV_SINGLE_ARG_PARAMETER);
00109               ACE_TRY_CHECK;
00110 
00111               PortableServer::ObjectId_var id =
00112                 poa->servant_to_id (this->ifs_[i] ACE_ENV_ARG_PARAMETER);
00113               ACE_TRY_CHECK;
00114 
00115               poa->deactivate_object (id.in () ACE_ENV_ARG_PARAMETER);
00116               ACE_TRY_CHECK;
00117             }
00118           ACE_CATCHANY
00119             {
00120               // Don't let exceptions propagate out of this call since
00121               // it's the destructor!
00122             }
00123           ACE_ENDTRY;
00124         }
00125     }
00126 }


Member Function Documentation

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
ACE_Lock & TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::lock void   )  [virtual]
 

Returns the trader.

Implements TAO_Lockable.

Definition at line 136 of file Trader_T.cpp.

00137 {
00138   return this->lock_;
00139 }

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
TAO_Offer_Database< MAP_LOCK_TYPE > & TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::offer_database void   ) 
 

Accessor for the structure with all the service offers.

Definition at line 130 of file Trader_T.cpp.

References TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::offer_database_.

00131 {
00132   return this->offer_database_;
00133 }

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


Member Data Documentation

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
PortableServer::ServantBase* TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::ifs_[5] [protected]
 

Definition at line 95 of file Trader_T.h.

Referenced by TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::TAO_Trader(), and TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::~TAO_Trader().

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
ACE_Lock_Adapter<TRADER_LOCK_TYPE> TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::lock_ [protected]
 

Lock that guards the state of the trader (its configuration).

Definition at line 91 of file Trader_T.h.

template<class TRADER_LOCK_TYPE, class MAP_LOCK_TYPE>
Offer_Database TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::offer_database_ [protected]
 

Definition at line 88 of file Trader_T.h.

Referenced by TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::offer_database().


The documentation for this class was generated from the following files:
Generated on Thu Nov 9 14:01:17 2006 for TAO_CosTrader by doxygen 1.3.6