Implementation of the PortableServer::Current object. More...
#include <POA_Current_Impl.h>

Public Member Functions | |
| PortableServer::POA_ptr | get_POA (void) |
| PortableServer::ObjectId * | get_object_id (void) |
| PortableServer::Servant | get_servant (void) |
| CORBA::Object_ptr | get_reference (void) |
| void | poa (::TAO_Root_POA *) |
| Set the POA implementation. | |
| ::TAO_Root_POA * | poa (void) const |
| Get the POA implemantation. | |
| TAO_ORB_Core & | orb_core (void) const |
| ORB Core for this current. | |
| void | object_id (const PortableServer::ObjectId &id) |
| Set the object ID. | |
| const PortableServer::ObjectId & | object_id (void) const |
| Get the object ID. | |
| void | replace_object_id (const PortableServer::ObjectId &system_id) |
| Just replace the object id smartly. | |
| void | object_key (const TAO::ObjectKey &key) |
| Set the object key. | |
| const TAO::ObjectKey & | object_key (void) const |
| Get the object key. | |
| void | servant (PortableServer::Servant servant) |
| Set the servant for the current upcall. | |
| PortableServer::Servant | servant (void) const |
| Get the servant for the current upcall. | |
| void | priority (CORBA::Short priority) |
| Set the priority for the current upcall. | |
| CORBA::Short | priority (void) const |
| Get the priority for the current upcall. | |
| POA_Current_Impl (void) | |
| Convenience constructor combining construction & initialization. | |
| POA_Current_Impl * | previous (void) const |
| Return the previous current implementation. | |
| void | teardown (void) |
| Teardown the current for this request. | |
| void | setup (::TAO_Root_POA *impl, const TAO::ObjectKey &key) |
| Setup the current. | |
Protected Attributes | |
| ::TAO_Root_POA * | poa_ |
| The POA implementation invoking an upcall. | |
| CORBA::Octet | object_id_buf_ [TAO_POA_OBJECT_ID_BUF_SIZE] |
| PortableServer::ObjectId | object_id_ |
| const TAO::ObjectKey * | object_key_ |
| The object key of the current context. | |
| PortableServer::Servant | servant_ |
| The servant for the current upcall. | |
| CORBA::Short | priority_ |
| The priority for the current upcall. | |
| POA_Current_Impl * | previous_current_impl_ |
| Current previous from <this>. | |
| bool | setup_done_ |
| Is setup complete? | |
| TAO_TSS_Resources * | tss_resources_ |
| Pointer to tss resources. | |
Private Member Functions | |
| POA_Current_Impl (const POA_Current_Impl &) | |
| void | operator= (const POA_Current_Impl &) |
Friends | |
| class | ::TAO_Root_POA |
Implementation of the PortableServer::Current object.
Objects of this class hold state information regarding the current POA invocation. Savvy readers will notice that this contains substantially more methods than the POA spec shows; they exist because the ORB either (a) needs them or (b) finds them useful for implementing a more efficient ORB. The intent is that instances of this class are held in Thread-Specific Storage so that upcalls can get context information regarding their invocation. The POA itself must insure that all <set_*> operations are performed in the execution thread so that the proper <TAO_POA_Current> pointer is obtained from TSS.
Definition at line 66 of file POA_Current_Impl.h.
| TAO::Portable_Server::POA_Current_Impl::POA_Current_Impl | ( | void | ) |
Convenience constructor combining construction & initialization.
Definition at line 24 of file POA_Current_Impl.cpp.
: poa_ (0), object_id_ (TAO_POA_OBJECT_ID_BUF_SIZE, 0, object_id_buf_), object_key_ (0), servant_ (0), priority_ (TAO_INVALID_PRIORITY), previous_current_impl_ (0), setup_done_ (false) { }
| TAO::Portable_Server::POA_Current_Impl::POA_Current_Impl | ( | const POA_Current_Impl & | ) | [private] |
| PortableServer::ObjectId * TAO::Portable_Server::POA_Current_Impl::get_object_id | ( | void | ) |
Return pointer to the object id through which this was invoked. This may be necessary in cases where a <Servant> is serving under the guise of multiple object ids.
Definition at line 77 of file POA_Current_Impl.cpp.
{
PortableServer::ObjectId *objid = 0;
// Create a new one and pass it back
ACE_NEW_RETURN (objid,
PortableServer::ObjectId (this->object_id_),
0);
return objid;
}
| PortableServer::POA_ptr TAO::Portable_Server::POA_Current_Impl::get_POA | ( | void | ) |
Return pointer to the invoking POA. Raises the CORBA::NoContext exception.
Definition at line 71 of file POA_Current_Impl.cpp.
{
return PortableServer::POA::_duplicate (this->poa_);
}
| CORBA::Object_ptr TAO::Portable_Server::POA_Current_Impl::get_reference | ( | void | ) |
This operation returns a locally manufactured reference to the object in the context of which it is called.
Definition at line 89 of file POA_Current_Impl.cpp.
{
return this->poa_->id_to_reference (this->object_id_);
}
| PortableServer::Servant TAO::Portable_Server::POA_Current_Impl::get_servant | ( | void | ) |
Returns a reference to the servant that hosts the object in whose context it is called.
Definition at line 95 of file POA_Current_Impl.cpp.
{
return this->servant_;
}
| void TAO::Portable_Server::POA_Current_Impl::object_id | ( | const PortableServer::ObjectId & | id | ) |
Set the object ID.
Definition at line 26 of file POA_Current_Impl.inl.
{
if (this->object_id_.release () ||
this->object_id_.get_buffer() == this->object_id_buf_)
{
// Resize the current object_id_. If it is less than the
// length of the current buffer, no allocation will take place.
size_t id_size = id.length ();
this->object_id_.length (id_size);
// Get the buffer and copy the new object id in it's place.
ACE_OS::memcpy (this->object_id_.get_buffer (),
id.get_buffer (), id_size);
}
else
{
this->object_id_ = id;
}
}
| const PortableServer::ObjectId & TAO::Portable_Server::POA_Current_Impl::object_id | ( | void | ) | const |
| void TAO::Portable_Server::POA_Current_Impl::object_key | ( | const TAO::ObjectKey & | key | ) |
Set the object key.
Definition at line 65 of file POA_Current_Impl.inl.
{
this->object_key_ = &key;
}
| const TAO::ObjectKey & TAO::Portable_Server::POA_Current_Impl::object_key | ( | void | ) | const |
Get the object key.
Definition at line 71 of file POA_Current_Impl.inl.
{
return *this->object_key_;
}
| void TAO::Portable_Server::POA_Current_Impl::operator= | ( | const POA_Current_Impl & | ) | [private] |
| TAO_ORB_Core & TAO::Portable_Server::POA_Current_Impl::orb_core | ( | void | ) | const |
ORB Core for this current.
Definition at line 101 of file POA_Current_Impl.cpp.
| void TAO::Portable_Server::POA_Current_Impl::poa | ( | ::TAO_Root_POA * | p | ) |
| TAO_Root_POA * TAO::Portable_Server::POA_Current_Impl::poa | ( | void | ) | const |
Get the POA implemantation.
Definition at line 20 of file POA_Current_Impl.inl.
{
return this->poa_;
}
| POA_Current_Impl * TAO::Portable_Server::POA_Current_Impl::previous | ( | void | ) | const |
Return the previous current implementation.
Definition at line 55 of file POA_Current_Impl.cpp.
{
return this->previous_current_impl_;
}
| CORBA::Short TAO::Portable_Server::POA_Current_Impl::priority | ( | void | ) | const |
Get the priority for the current upcall.
Definition at line 95 of file POA_Current_Impl.inl.
{
return this->priority_;
}
| void TAO::Portable_Server::POA_Current_Impl::priority | ( | CORBA::Short | priority | ) |
Set the priority for the current upcall.
Definition at line 89 of file POA_Current_Impl.inl.
{
this->priority_ = priority;
}
| void TAO::Portable_Server::POA_Current_Impl::replace_object_id | ( | const PortableServer::ObjectId & | system_id | ) |
Just replace the object id smartly.
Definition at line 53 of file POA_Current_Impl.inl.
{
// This has the effect of replacing the underlying buffer
// with that of another object id without copying.
object_id_.replace (system_id.maximum (),
system_id.length (),
const_cast <CORBA::Octet *> (system_id.get_buffer ()),
0);
}
| PortableServer::Servant TAO::Portable_Server::POA_Current_Impl::servant | ( | void | ) | const |
Get the servant for the current upcall.
Definition at line 83 of file POA_Current_Impl.inl.
{
return this->servant_;
}
| void TAO::Portable_Server::POA_Current_Impl::servant | ( | PortableServer::Servant | servant | ) |
Set the servant for the current upcall.
Definition at line 77 of file POA_Current_Impl.inl.
{
this->servant_ = servant;
}
| void TAO::Portable_Server::POA_Current_Impl::setup | ( | ::TAO_Root_POA * | impl, | |
| const TAO::ObjectKey & | key | |||
| ) |
Setup the current.
Definition at line 36 of file POA_Current_Impl.cpp.
{
// Remember information about this upcall.
this->poa_ = p;
this->object_key_ = &key;
// Set the current context and remember the old one.
this->tss_resources_ = TAO_TSS_Resources::instance ();
this->previous_current_impl_ =
static_cast <POA_Current_Impl *>
(this->tss_resources_->poa_current_impl_);
this->tss_resources_->poa_current_impl_ = this;
// Setup is complete.
this->setup_done_ = true;
}
| void TAO::Portable_Server::POA_Current_Impl::teardown | ( | void | ) |
Teardown the current for this request.
Definition at line 61 of file POA_Current_Impl.cpp.
{
if (this->setup_done_)
{
// Reset the old context.
this->tss_resources_->poa_current_impl_ = this->previous_current_impl_;
}
}
friend class ::TAO_Root_POA [friend] |
Definition at line 69 of file POA_Current_Impl.h.
PortableServer::ObjectId TAO::Portable_Server::POA_Current_Impl::object_id_ [protected] |
The object ID of the current context. This is the user id and not the id the goes into the IOR. Note also that unlike the object_key, this field is stored by value.
Definition at line 161 of file POA_Current_Impl.h.
CORBA::Octet TAO::Portable_Server::POA_Current_Impl::object_id_buf_[TAO_POA_OBJECT_ID_BUF_SIZE] [protected] |
In order to avoid memory allocations, we will populate the object id with this buffer.
Definition at line 154 of file POA_Current_Impl.h.
const TAO::ObjectKey* TAO::Portable_Server::POA_Current_Impl::object_key_ [protected] |
The object key of the current context.
Definition at line 164 of file POA_Current_Impl.h.
::TAO_Root_POA* TAO::Portable_Server::POA_Current_Impl::poa_ [protected] |
The POA implementation invoking an upcall.
Definition at line 150 of file POA_Current_Impl.h.
POA_Current_Impl* TAO::Portable_Server::POA_Current_Impl::previous_current_impl_ [protected] |
Current previous from <this>.
Definition at line 173 of file POA_Current_Impl.h.
CORBA::Short TAO::Portable_Server::POA_Current_Impl::priority_ [protected] |
The priority for the current upcall.
Definition at line 170 of file POA_Current_Impl.h.
PortableServer::Servant TAO::Portable_Server::POA_Current_Impl::servant_ [protected] |
The servant for the current upcall.
Definition at line 167 of file POA_Current_Impl.h.
bool TAO::Portable_Server::POA_Current_Impl::setup_done_ [protected] |
Is setup complete?
Definition at line 176 of file POA_Current_Impl.h.
TAO_TSS_Resources* TAO::Portable_Server::POA_Current_Impl::tss_resources_ [protected] |
Pointer to tss resources.
Definition at line 179 of file POA_Current_Impl.h.
1.7.0