#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.
TAO::Transport_Selection_Guard::Transport_Selection_Guard | ( | TAO_Transport * | t | ) |
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 }
TAO::Transport_Selection_Guard::~Transport_Selection_Guard | ( | void | ) |
Dtor.
Definition at line 65 of file Transport_Selection_Guard.cpp.
References curr_, TAO_TSS_Resources::instance(), prev_, 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 }
TAO::Transport_Selection_Guard::Transport_Selection_Guard | ( | const Transport_Selection_Guard & | ) | [private] |
Transport_Selection_Guard * TAO::Transport_Selection_Guard::current | ( | TAO_ORB_Core * | core, | |
size_t | tss_slot_id | |||
) | [static] |
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 }
TAO_Transport* TAO::Transport_Selection_Guard::get | ( | void | ) | const [inline] |
Getter.
Definition at line 86 of file Transport_Selection_Guard.h.
00087 { 00088 return this->curr_; 00089 };
TAO_Transport& TAO::Transport_Selection_Guard::operator * | ( | void | ) | const [inline] |
getter
Definition at line 80 of file Transport_Selection_Guard.h.
00081 { 00082 return *this->get (); 00083 };
bool TAO::Transport_Selection_Guard::operator! | ( | ) | const [inline, private] |
TAO_Transport* TAO::Transport_Selection_Guard::operator-> | ( | void | ) | const [inline] |
getter
Definition at line 74 of file Transport_Selection_Guard.h.
00075 { 00076 return this->get (); 00077 };
Transport_Selection_Guard& TAO::Transport_Selection_Guard::operator= | ( | const Transport_Selection_Guard & | rhs | ) | [inline] |
Transport_Selection_Guard& TAO::Transport_Selection_Guard::set | ( | TAO_Transport * | t | ) | [inline] |
Setter.
Definition at line 92 of file Transport_Selection_Guard.h.
00093 { 00094 this->curr_ = t; 00095 return *this; 00096 };
bool operator!= | ( | const U * | lhs, | |
const Transport_Selection_Guard & | rhs | |||
) | [friend] |
bool operator!= | ( | const Transport_Selection_Guard & | lhs, | |
const U * | rhs | |||
) | [friend] |
bool operator!= | ( | const TAO_Transport * | lhs, | |
const Transport_Selection_Guard & | rhs | |||
) | [friend] |
bool operator!= | ( | const Transport_Selection_Guard & | lhs, | |
const TAO_Transport * | rhs | |||
) | [friend] |
bool operator== | ( | const U * | lhs, | |
const Transport_Selection_Guard & | rhs | |||
) | [friend] |
bool operator== | ( | const Transport_Selection_Guard & | lhs, | |
const U * | rhs | |||
) | [friend] |
bool operator== | ( | const TAO_Transport * | lhs, | |
const Transport_Selection_Guard & | rhs | |||
) | [friend] |
bool operator== | ( | const Transport_Selection_Guard & | lhs, | |
const TAO_Transport * | rhs | |||
) | [friend] |
TAO_Transport* TAO::Transport_Selection_Guard::curr_ [private] |
The "real" Transport, i.e. the one selected at present.
Definition at line 120 of file Transport_Selection_Guard.h.
Referenced by operator=(), and ~Transport_Selection_Guard().
Transport_Selection_Guard* TAO::Transport_Selection_Guard::prev_ [private] |
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=(), and ~Transport_Selection_Guard().