Public Member Functions | Static Public Member Functions | Private Attributes

TAO_RelativeRoundtripTimeoutPolicy Class Reference

#include <Messaging_Policy_i.h>

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

List of all members.

Public Member Functions

 TAO_RelativeRoundtripTimeoutPolicy (const TimeBase::TimeT &relative_expiry)
 Constructor.
 TAO_RelativeRoundtripTimeoutPolicy (const TAO_RelativeRoundtripTimeoutPolicy &rhs)
 Copy constructor.
virtual
TAO_RelativeRoundtripTimeoutPolicy
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

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 38 of file Messaging_Policy_i.h.


Constructor & Destructor Documentation

TAO_RelativeRoundtripTimeoutPolicy::TAO_RelativeRoundtripTimeoutPolicy ( const TimeBase::TimeT relative_expiry  ) 

Constructor.

Definition at line 22 of file Messaging_Policy_i.cpp.

  : ::CORBA::Object ()
  , ::CORBA::Policy ()
  , Messaging::RelativeRoundtripTimeoutPolicy ()
  , ::CORBA::LocalObject ()
  , relative_expiry_ (relative_expiry)
{
}

TAO_RelativeRoundtripTimeoutPolicy::TAO_RelativeRoundtripTimeoutPolicy ( const TAO_RelativeRoundtripTimeoutPolicy rhs  ) 

Copy constructor.

Definition at line 32 of file Messaging_Policy_i.cpp.

  : ::CORBA::Object ()
  , ::CORBA::Policy ()
  , Messaging::RelativeRoundtripTimeoutPolicy ()
  , ::CORBA::LocalObject ()
  , relative_expiry_ (rhs.relative_expiry_)
{
}


Member Function Documentation

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

Definition at line 159 of file Messaging_Policy_i.cpp.

{
  return TAO_CACHED_POLICY_RELATIVE_ROUNDTRIP_TIMEOUT;
}

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

Returns a copy of <this>.

Definition at line 130 of file Messaging_Policy_i.cpp.

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

Definition at line 140 of file Messaging_Policy_i.cpp.

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

  TAO_RelativeRoundtripTimeoutPolicy* tmp = 0;
  ACE_NEW_THROW_EX (tmp, TAO_RelativeRoundtripTimeoutPolicy (*this),
                    CORBA::NO_MEMORY (TAO::VMCID,
                                      CORBA::COMPLETED_NO));

  return tmp;
}

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

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

Definition at line 112 of file Messaging_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_RelativeRoundtripTimeoutPolicy *tmp = 0;
  ACE_NEW_THROW_EX (tmp,
                    TAO_RelativeRoundtripTimeoutPolicy (value),
                    CORBA::NO_MEMORY (TAO::VMCID,
                                      CORBA::COMPLETED_NO));

  return tmp;
}

void TAO_RelativeRoundtripTimeoutPolicy::destroy ( void   )  [virtual]

Definition at line 154 of file Messaging_Policy_i.cpp.

{
}

void TAO_RelativeRoundtripTimeoutPolicy::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 55 of file Messaging_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_RELATIVE_ROUNDTRIP_TIMEOUT);
        }
      else
        {
          policy =
            stub->get_cached_policy (
              TAO_CACHED_POLICY_RELATIVE_ROUNDTRIP_TIMEOUT);
        }

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

      Messaging::RelativeRoundtripTimeoutPolicy_var p =
        Messaging::RelativeRoundtripTimeoutPolicy::_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) - Request timeout is ")
                      ACE_TEXT ("%Q milliseconds\n"),
                      msecs));
        }
    }
  catch (const ::CORBA::Exception&)
    {
      // Ignore all exceptions...
    }
}

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

Definition at line 49 of file Messaging_Policy_i.cpp.

{
  return Messaging::RELATIVE_RT_TIMEOUT_POLICY_TYPE;
}

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

Definition at line 43 of file Messaging_Policy_i.cpp.

{
  return this->relative_expiry_;
}

void TAO_RelativeRoundtripTimeoutPolicy::set_time_value ( ACE_Time_Value time_value  ) 

Change the CORBA representation to the ACE representation.

Definition at line 165 of file Messaging_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) - Request timeout is ")
                  ACE_TEXT ("%Q milliseconds\n"),
                  msecs));
    }
}


Member Data Documentation

The attribute.

Definition at line 81 of file Messaging_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