Public Member Functions | Static Public Member Functions | Private Attributes

TAO_ConnectionTimeoutPolicy Class Reference

#include <Connection_Timeout_Policy_i.h>

Inheritance diagram for TAO_ConnectionTimeoutPolicy:
Inheritance graph
[legend]
Collaboration diagram for TAO_ConnectionTimeoutPolicy:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 TAO_ConnectionTimeoutPolicy (const TimeBase::TimeT &relative_expiry)
 Constructor.
 TAO_ConnectionTimeoutPolicy (const TAO_ConnectionTimeoutPolicy &rhs)
 Copy constructor.
virtual
TAO_ConnectionTimeoutPolicy
clone (void) const
 Returns a copy of <this>.
virtual TimeBase::TimeT relative_expiry (void)
virtual CORBA::PolicyType policy_type (void)
virtual CORBA::Policy_ptr copy (void)
virtual void destroy (void)
void set_time_value (ACE_Time_Value &time_value)
 Change the CORBA representation to the ACE representation.
virtual TAO_Cached_Policy_Type _tao_cached_type (void) const
 Return the cached policy type for this policy.

Static Public Member Functions

static void hook (TAO_ORB_Core *orb_core, TAO_Stub *stub, bool &has_timeout, ACE_Time_Value &time_value)
static CORBA::Policy_ptr create (const CORBA::Any &val)

Private Attributes

TimeBase::TimeT relative_expiry_
 The attribute.

Detailed Description

Definition at line 45 of file Connection_Timeout_Policy_i.h.


Constructor & Destructor Documentation

TAO_ConnectionTimeoutPolicy::TAO_ConnectionTimeoutPolicy ( const TimeBase::TimeT relative_expiry  ) 

Constructor.

Definition at line 20 of file Connection_Timeout_Policy_i.cpp.

  : ::CORBA::Object ()
  , ::CORBA::Policy ()
  , TAO::ConnectionTimeoutPolicy ()
  , ::CORBA::LocalObject ()
  , relative_expiry_ (relative_expiry)
{
}

TAO_ConnectionTimeoutPolicy::TAO_ConnectionTimeoutPolicy ( const TAO_ConnectionTimeoutPolicy rhs  ) 

Copy constructor.

Definition at line 30 of file Connection_Timeout_Policy_i.cpp.

  : ::CORBA::Object ()
  , ::CORBA::Policy ()
  , TAO::ConnectionTimeoutPolicy ()
  , ::CORBA::LocalObject ()
  , relative_expiry_ (rhs.relative_expiry_)
{
}


Member Function Documentation

TAO_Cached_Policy_Type TAO_ConnectionTimeoutPolicy::_tao_cached_type ( void   )  const [virtual]

Return the cached policy type for this policy.

Definition at line 157 of file Connection_Timeout_Policy_i.cpp.

{
  return TAO_CACHED_POLICY_CONNECTION_TIMEOUT;
}

TAO_ConnectionTimeoutPolicy * TAO_ConnectionTimeoutPolicy::clone ( void   )  const [virtual]

Returns a copy of <this>.

Definition at line 128 of file Connection_Timeout_Policy_i.cpp.

CORBA::Policy_ptr TAO_ConnectionTimeoutPolicy::copy ( void   )  [virtual]

Definition at line 138 of file Connection_Timeout_Policy_i.cpp.

{
  // Future policy implementors: notice how the following code is
  // exception safe!
  TAO_ConnectionTimeoutPolicy* tmp = 0;
  ACE_NEW_THROW_EX (tmp,
                    TAO_ConnectionTimeoutPolicy (*this),
                    CORBA::NO_MEMORY (TAO::VMCID,
                                      CORBA::COMPLETED_NO));

  return tmp;
}

CORBA::Policy_ptr TAO_ConnectionTimeoutPolicy::create ( const CORBA::Any val  )  [static]

Helper method for the implementation of CORBA::ORB::create_policy.

Definition at line 109 of file Connection_Timeout_Policy_i.cpp.

{
  // Future policy implementors: notice how the following code is
  // exception safe!

  TimeBase::TimeT value;
  if ((val >>= value) == 0)
    throw ::CORBA::PolicyError (CORBA::BAD_POLICY_VALUE);

  TAO_ConnectionTimeoutPolicy *tmp = 0;
  ACE_NEW_THROW_EX (tmp,
                    TAO_ConnectionTimeoutPolicy (value),
                    CORBA::NO_MEMORY (TAO::VMCID,
                                      CORBA::COMPLETED_NO));

  return tmp;
}

void TAO_ConnectionTimeoutPolicy::destroy ( void   )  [virtual]

Definition at line 152 of file Connection_Timeout_Policy_i.cpp.

{
}

void TAO_ConnectionTimeoutPolicy::hook ( TAO_ORB_Core orb_core,
TAO_Stub stub,
bool &  has_timeout,
ACE_Time_Value time_value 
) [static]

Implement the timeout hook, this is set in the ORB_Core at initialization time.

Definition at line 53 of file Connection_Timeout_Policy_i.cpp.

{
  try
    {
      CORBA::Policy_var policy = CORBA::Policy::_nil ();

      if (stub == 0)
        {
          policy =
            orb_core->get_cached_policy_including_current (
              TAO_CACHED_POLICY_CONNECTION_TIMEOUT);
        }
      else
        {
          policy =
            stub->get_cached_policy (TAO_CACHED_POLICY_CONNECTION_TIMEOUT);
        }

      if (CORBA::is_nil (policy.in ()))
        {
          has_timeout = false;
          return;
        }

      TAO::ConnectionTimeoutPolicy_var p =
        TAO::ConnectionTimeoutPolicy::_narrow (policy.in ());

      TimeBase::TimeT const t = p->relative_expiry ();
      TimeBase::TimeT const seconds = t / 10000000u;
      TimeBase::TimeT const microseconds = (t % 10000000u) / 10;
      time_value.set (ACE_Utils::truncate_cast<time_t> (seconds),
                      ACE_Utils::truncate_cast<suseconds_t> (microseconds));

      // Set the flag once all operations complete successfully
      has_timeout = true;

      if (TAO_debug_level > 0)
        {
          ACE_UINT64 msecs;
          const_cast<ACE_Time_Value const &> (time_value).msec (msecs);
          ACE_DEBUG ((LM_DEBUG,
                      ACE_TEXT ("TAO (%P|%t) - Connect timeout is ")
                      ACE_TEXT ("%Q milliseconds\n"),
                      msecs));
        }
    }
  catch (const ::CORBA::Exception&)
    {
      // Ignore all exceptions...
    }
}

CORBA::PolicyType TAO_ConnectionTimeoutPolicy::policy_type ( void   )  [virtual]

Definition at line 47 of file Connection_Timeout_Policy_i.cpp.

{
  return TAO::CONNECTION_TIMEOUT_POLICY_TYPE;
}

TimeBase::TimeT TAO_ConnectionTimeoutPolicy::relative_expiry ( void   )  [virtual]

Definition at line 41 of file Connection_Timeout_Policy_i.cpp.

{
  return this->relative_expiry_;
}

void TAO_ConnectionTimeoutPolicy::set_time_value ( ACE_Time_Value time_value  ) 

Change the CORBA representation to the ACE representation.

Definition at line 163 of file Connection_Timeout_Policy_i.cpp.

{
  TimeBase::TimeT const t = this->relative_expiry_;
  TimeBase::TimeT const seconds = t / 10000000u;
  TimeBase::TimeT const microseconds = (t % 10000000u) / 10;
  time_value.set (ACE_Utils::truncate_cast<time_t> (seconds),
                  ACE_Utils::truncate_cast<suseconds_t> (microseconds));

  if (TAO_debug_level > 0)
    {
      ACE_UINT64 msecs;
      const_cast<ACE_Time_Value const &> (time_value).msec (msecs);
      ACE_DEBUG ((LM_DEBUG,
                  ACE_TEXT ("TAO (%P|%t) - Connect timeout is ")
                  ACE_TEXT ("%Q milliseconds\n"),
                  msecs));
    }
}


Member Data Documentation

The attribute.

Definition at line 88 of file Connection_Timeout_Policy_i.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines