#include <Transport_Selection_Guard.h>
Collaboration diagram for TAO::Transport_Selection_Guard:
Whenever a Transport is selected: during an upcall, or prior to a client invocation an instance of this class is created [on the stack, or as a member of another class] to keep track of the said Transport. The class implements the RAII idiom, which makes it possible to build a stack of these instances as the thread is doing nested upcalls or client invocations.
It utilizes TAO_TSS_Resources::tsg_ member pointer to keep track of stack-linked Transport_Selection_Guard instances.
If the Transport Current feature is disabled most methods are no-ops and add no overhead on the critical path.
See Also:
Definition at line 58 of file Transport_Selection_Guard.h.
|
Ctor.
Definition at line 46 of file Transport_Selection_Guard.cpp. References TAO_TSS_Resources::instance(), and TAO_TSS_Resources::tsg_.
00047 : 00048 #if TAO_HAS_TRANSPORT_CURRENT == 1 00049 00050 prev_ (TAO_TSS_Resources::instance ()->tsg_) 00051 , 00052 00053 #endif /* TAO_HAS_TRANSPORT_CURRENT == 1 */ 00054 curr_ (t) 00055 { 00056 #if TAO_HAS_TRANSPORT_CURRENT == 1 00057 00058 TAO_TSS_Resources::instance ()->tsg_ = this; 00059 00060 #endif /* TAO_HAS_TRANSPORT_CURRENT == 1 */ 00061 00062 } |
|
Dtor.
Definition at line 65 of file Transport_Selection_Guard.cpp. References TAO_TSS_Resources::instance(), and TAO_TSS_Resources::tsg_.
00066 { 00067 00068 #if TAO_HAS_TRANSPORT_CURRENT == 1 00069 00070 TAO_TSS_Resources::instance ()->tsg_ = prev_; 00071 this->prev_ = 0; 00072 00073 #endif /* TAO_HAS_TRANSPORT_CURRENT == 1 */ 00074 this->curr_ = 0; 00075 } |
|
|
|
Definition at line 16 of file Transport_Selection_Guard.cpp. References TAO_TSS_Resources::instance(), and TAO_TSS_Resources::tsg_.
00017 { 00018 // @NOTE: (Iliyan) Started making this method aware of the core 00019 // and the tss slot that correspond to the "current" transport, 00020 // influenced by a general design preference to keep things 00021 // local. The idea was to make the current TSG part of the TSS 00022 // storage for a specific ORB Core, as opposed to using the global 00023 // TSS Resources. However, it really doesn't offer any benefit to 00024 // store a Transport pointer locally, for each ORB. There is 00025 // always only one current Transport per thread. Period. The 00026 // number of ORB Core instances in existence does not change that 00027 // fact, so keeping a separate pointer would have been an 00028 // over-kill. 00029 ACE_UNUSED_ARG (core); 00030 ACE_UNUSED_ARG (tss_slot_id); 00031 00032 #if TAO_HAS_TRANSPORT_CURRENT == 1 00033 00034 return TAO_TSS_Resources::instance ()->tsg_; 00035 00036 #else /* TAO_HAS_TRANSPORT_CURRENT != 1 */ 00037 00038 return 0; 00039 00040 #endif /* TAO_HAS_TRANSPORT_CURRENT == 1 */ 00041 } |
|
Getter.
Definition at line 86 of file Transport_Selection_Guard.h. Referenced by TAO_ServerRequest::collocated(), TAO::Profile_Transport_Resolver::find_transport(), TAO::Profile_Transport_Resolver::resolve(), TAO_ServerRequest::transport(), TAO::Profile_Transport_Resolver::transport(), TAO::Profile_Transport_Resolver::try_connect_i(), and TAO::Profile_Transport_Resolver::~Profile_Transport_Resolver().
00087 { 00088 return this->curr_; 00089 }; |
|
getter
Definition at line 80 of file Transport_Selection_Guard.h.
00081 { 00082 return *this->get (); 00083 }; |
|
Definition at line 124 of file Transport_Selection_Guard.h.
00125 { 00126 return curr_ == 0; 00127 } |
|
getter
Definition at line 74 of file Transport_Selection_Guard.h.
00075 { 00076 return this->get (); 00077 }; |
|
Definition at line 98 of file Transport_Selection_Guard.h.
|
|
Setter.
Definition at line 92 of file Transport_Selection_Guard.h. Referenced by TAO::Profile_Transport_Resolver::find_transport(), and TAO::Profile_Transport_Resolver::try_connect_i().
00093 { 00094 this->curr_ = t; 00095 return *this; 00096 }; |
|
Definition at line 179 of file Transport_Selection_Guard.h.
00181 {
00182 return lhs != rhs.curr_;
00183 }
|
|
Definition at line 172 of file Transport_Selection_Guard.h.
00174 {
00175 return lhs.curr_ != rhs;
00176 }
|
|
Definition at line 151 of file Transport_Selection_Guard.h.
00153 {
00154 return lhs != rhs.curr_;
00155 }
|
|
Definition at line 144 of file Transport_Selection_Guard.h.
00146 {
00147 return lhs.curr_ != rhs;
00148 }
|
|
Definition at line 165 of file Transport_Selection_Guard.h.
00167 {
00168 return lhs == rhs.curr_;
00169 }
|
|
Definition at line 158 of file Transport_Selection_Guard.h.
00160 {
00161 return lhs.curr_ == rhs;
00162 }
|
|
Definition at line 137 of file Transport_Selection_Guard.h.
00139 {
00140 return lhs == rhs.curr_;
00141 }
|
|
Definition at line 130 of file Transport_Selection_Guard.h.
00132 {
00133 return lhs.curr_ == rhs;
00134 }
|
|
The "real" Transport, i.e. the one selected at present.
Definition at line 120 of file Transport_Selection_Guard.h. Referenced by operator=(). |
|
This is pointing to the guard that was active prior to instantiating us. Definition at line 115 of file Transport_Selection_Guard.h. Referenced by operator=(). |