📄 poa.i
字号:
// -*- C++ -*-
//
// POA.i,v 1.26 2003/11/25 22:10:36 bala Exp
// Exception macros
#include "poa_macros.h"
#include "tao/Environment.h"
ACE_INLINE CORBA::Boolean
TAO_POA::cleanup_in_progress (void)
{
return this->cleanup_in_progress_;
}
ACE_INLINE ACE_Lock &
TAO_POA::lock (void)
{
return this->lock_;
}
ACE_INLINE CORBA::ULong
TAO_Creation_Time::creation_time_length (void)
{
return 2 * sizeof (CORBA::ULong);
}
ACE_INLINE
TAO_Creation_Time::TAO_Creation_Time (const ACE_Time_Value &creation_time)
{
this->time_stamp_[TAO_Creation_Time::SEC_FIELD] = (CORBA::ULong) creation_time.sec ();
this->time_stamp_[TAO_Creation_Time::USEC_FIELD] = (CORBA::ULong) creation_time.usec ();
}
ACE_INLINE
TAO_Creation_Time::TAO_Creation_Time (void)
{
this->time_stamp_[TAO_Creation_Time::SEC_FIELD] = 0;
this->time_stamp_[TAO_Creation_Time::USEC_FIELD] = 0;
}
ACE_INLINE void
TAO_Creation_Time::creation_time (const void *creation_time)
{
ACE_OS::memcpy (&this->time_stamp_,
creation_time,
TAO_Creation_Time::creation_time_length ());
}
ACE_INLINE const void *
TAO_Creation_Time::creation_time (void) const
{
return &this->time_stamp_;
}
ACE_INLINE int
TAO_Creation_Time::operator== (const TAO_Creation_Time &rhs) const
{
#if (POA_NO_TIMESTAMP == 1)
ACE_UNUSED_ARG (rhs);
return 1;
#else
return ACE_OS::memcmp (&this->time_stamp_,
&rhs.time_stamp_,
TAO_Creation_Time::creation_time_length ()) == 0;
#endif /* POA_NO_TIMESTAMP */
}
ACE_INLINE int
TAO_Creation_Time::operator!= (const TAO_Creation_Time &rhs) const
{
#if (POA_NO_TIMESTAMP == 1)
ACE_UNUSED_ARG (rhs);
return 0;
#else
return ACE_OS::memcmp (&this->time_stamp_,
&rhs.time_stamp_,
TAO_Creation_Time::creation_time_length ()) != 0;
#endif /* POA_NO_TIMESTAMP */
}
ACE_INLINE int
TAO_Temporary_Creation_Time::operator== (const TAO_Creation_Time &rhs) const
{
#if (POA_NO_TIMESTAMP == 1)
ACE_UNUSED_ARG (rhs);
return 1;
#else
return ACE_OS::memcmp (this->time_stamp_,
rhs.creation_time (),
TAO_Creation_Time::creation_time_length ()) == 0;
#endif /* POA_NO_TIMESTAMP */
}
ACE_INLINE int
TAO_Temporary_Creation_Time::operator!= (const TAO_Creation_Time &rhs) const
{
#if (POA_NO_TIMESTAMP == 1)
ACE_UNUSED_ARG (rhs);
return 0;
#else
return ACE_OS::memcmp (this->time_stamp_,
rhs.creation_time (),
TAO_Creation_Time::creation_time_length ()) != 0;
#endif /* POA_NO_TIMESTAMP */
}
ACE_INLINE int
TAO_Creation_Time::operator== (const TAO_Temporary_Creation_Time &rhs) const
{
return rhs == *this;
}
ACE_INLINE int
TAO_Creation_Time::operator!= (const TAO_Temporary_Creation_Time &rhs) const
{
return rhs != *this;
}
ACE_INLINE
TAO_Temporary_Creation_Time::TAO_Temporary_Creation_Time (void)
: time_stamp_ (0)
{
}
ACE_INLINE void
TAO_Temporary_Creation_Time::creation_time (const void *creation_time)
{
this->time_stamp_ = (void *) creation_time;
}
ACE_INLINE PortableServer::POA_ptr
TAO_POA::create_POA (const char *adapter_name,
PortableServer::POAManager_ptr poa_manager,
const CORBA::PolicyList &policies
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::AdapterAlreadyExists,
PortableServer::POA::InvalidPolicy))
{
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (0);
return this->create_POA_i (adapter_name,
poa_manager,
policies
ACE_ENV_ARG_PARAMETER);
}
ACE_INLINE void
TAO_POA::destroy (CORBA::Boolean etherealize_objects,
CORBA::Boolean wait_for_completion
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException))
{
// Lock access for the duration of this transaction.
TAO_POA_Guard poa_guard (*this ACE_ENV_ARG_PARAMETER, 0);
ACE_CHECK;
ACE_UNUSED_ARG (poa_guard);
this->destroy_i (etherealize_objects,
wait_for_completion
ACE_ENV_ARG_PARAMETER);
}
ACE_INLINE TAO_POA_Policy_Set &
TAO_POA::policies (void)
{
return this->policies_;
}
ACE_INLINE TAO_Active_Object_Map &
TAO_POA::active_object_map (void) const
{
return *this->active_object_map_;
}
#if (TAO_HAS_MINIMUM_POA == 0)
ACE_INLINE PortableServer::ServantManager_ptr
TAO_POA::get_servant_manager (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::WrongPolicy))
{
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (PortableServer::ServantManager::_nil ());
return this->get_servant_manager_i (ACE_ENV_SINGLE_ARG_PARAMETER);
}
ACE_INLINE void
TAO_POA::set_servant_manager (PortableServer::ServantManager_ptr imgr
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::WrongPolicy))
{
// Lock access for the duration of this transaction.
TAO_POA_GUARD;
this->set_servant_manager_i (imgr
ACE_ENV_ARG_PARAMETER);
}
ACE_INLINE PortableServer::Servant
TAO_POA::get_servant (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::NoServant,
PortableServer::POA::WrongPolicy))
{
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (0);
return this->get_servant_i (ACE_ENV_SINGLE_ARG_PARAMETER);
}
ACE_INLINE void
TAO_POA::set_servant (PortableServer::Servant servant
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::WrongPolicy))
{
// Lock access for the duration of this transaction.
TAO_POA_GUARD;
this->set_servant_i (servant
ACE_ENV_ARG_PARAMETER);
}
#endif /* TAO_HAS_MINIMUM_POA == 0 */
ACE_INLINE PortableServer::ObjectId *
TAO_POA::activate_object (PortableServer::Servant servant
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::ServantAlreadyActive,
PortableServer::POA::WrongPolicy))
{
while (1)
{
int wait_occurred_restart_call = 0;
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (0);
PortableServer::ObjectId *result =
this->activate_object_i (servant,
this->cached_policies_.server_priority (),
wait_occurred_restart_call
ACE_ENV_ARG_PARAMETER);
ACE_CHECK_RETURN (0);
// If we ended up waiting on a condition variable, the POA state
// may have changed while we are waiting. Therefore, we need to
// restart this call.
if (wait_occurred_restart_call)
continue;
else
return result;
}
}
ACE_INLINE void
TAO_POA::activate_object_with_id (const PortableServer::ObjectId &id,
PortableServer::Servant servant
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::ServantAlreadyActive,
PortableServer::POA::ObjectAlreadyActive,
PortableServer::POA::WrongPolicy))
{
while (1)
{
int wait_occurred_restart_call = 0;
// Lock access for the duration of this transaction.
TAO_POA_GUARD;
this->activate_object_with_id_i (id,
servant,
this->cached_policies_.server_priority (),
wait_occurred_restart_call
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
// If we ended up waiting on a condition variable, the POA state
// may have changed while we are waiting. Therefore, we need to
// restart this call.
if (wait_occurred_restart_call)
continue;
else
return;
}
}
ACE_INLINE void
TAO_POA::deactivate_object (const PortableServer::ObjectId &oid
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::ObjectNotActive,
PortableServer::POA::WrongPolicy))
{
// Lock access for the duration of this transaction.
TAO_POA_GUARD;
this->deactivate_object_i (oid
ACE_ENV_ARG_PARAMETER);
}
ACE_INLINE CORBA::Object_ptr
TAO_POA::create_reference (const char *intf
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::WrongPolicy))
{
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (CORBA::Object::_nil ());
return this->create_reference_i (intf,
this->cached_policies_.server_priority ()
ACE_ENV_ARG_PARAMETER);
}
ACE_INLINE CORBA::Object_ptr
TAO_POA::create_reference_with_id (const PortableServer::ObjectId &id,
const char *intf
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::WrongPolicy))
{
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (CORBA::Object::_nil ());
return this->create_reference_with_id_i (id,
intf,
this->cached_policies_.server_priority ()
ACE_ENV_ARG_PARAMETER);
}
ACE_INLINE PortableServer::ObjectId *
TAO_POA::servant_to_id (PortableServer::Servant servant
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableServer::POA::ServantNotActive,
PortableServer::POA::WrongPolicy))
{
// If we had upgradeable locks, this would initially be a read lock
//
// Lock access for the duration of this transaction.
TAO_POA_GUARD_RETURN (0);
return this->servant_to_id_i (servant
ACE_ENV_ARG_PARAMETER);
}
ACE_INLINE PortableServer::ObjectId *
TAO_POA::servant_to_system_id (PortableServer::Servant servant,
CORBA::Short &priority
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -