#include <Trader_T.h>
Inheritance diagram for TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >:
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_Database & | offer_database (void) |
Accessor for the structure with all the service offers. | |
ACE_Lock & | lock (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::ServantBase * | ifs_ [5] |
Private Member Functions | |
void | operator= (const TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE > &) |
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.
|
Offer Database Trait.
Definition at line 65 of file Trader_T.h. |
|
Definition at line 86 of file Trader_T.h. |
|
Definition at line 93 of file Trader_T.h.
00093 { LOOKUP_IF, REGISTER_IF, ADMIN_IF, PROXY_IF, LINK_IF }; |
|
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 } |
|
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 } |
|
Returns the trader.
Implements TAO_Lockable. Definition at line 136 of file Trader_T.cpp.
00137 { 00138 return this->lock_; 00139 } |
|
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 } |
|
|
|
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(). |
|
Lock that guards the state of the trader (its configuration).
Definition at line 91 of file Trader_T.h. |
|
Definition at line 88 of file Trader_T.h. Referenced by TAO_Trader< TRADER_LOCK_TYPE, MAP_LOCK_TYPE >::offer_database(). |