Public Member Functions | Static Public Attributes | Private Attributes

TAO_RTScheduler_Current Class Reference

#include <Current.h>

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

List of all members.

Public Member Functions

 TAO_RTScheduler_Current (void)
virtual ~TAO_RTScheduler_Current (void)
void init (TAO_ORB_Core *orb)
virtual RTCORBA::Priority the_priority (void)
virtual void the_priority (RTCORBA::Priority the_priority)
void rt_current (RTCORBA::Current_ptr rt_current)
virtual void begin_scheduling_segment (const char *name, CORBA::Policy_ptr sched_param, CORBA::Policy_ptr implicit_sched_param)
virtual void update_scheduling_segment (const char *name, CORBA::Policy_ptr sched_param, CORBA::Policy_ptr implicit_sched_param)
virtual void end_scheduling_segment (const char *name)
virtual
RTScheduling::DistributableThread_ptr 
lookup (const RTScheduling::Current::IdType &id)
virtual
RTScheduling::DistributableThread_ptr 
spawn (RTScheduling::ThreadAction_ptr start, CORBA::VoidData data, const char *name, CORBA::Policy_ptr sched_param, CORBA::Policy_ptr implicit_sched_param, CORBA::ULong stack_size, RTCORBA::Priority base_priority)
virtual
::RTScheduling::Current::IdType
id (void)
virtual ::CORBA::Policy_ptr scheduling_parameter (void)
virtual ::CORBA::Policy_ptr implicit_scheduling_parameter (void)
virtual
::RTScheduling::Current::NameList * 
current_scheduling_segment_names (void)
TAO_RTScheduler_Current_iimplementation (void)
TAO_RTScheduler_Current_iimplementation (TAO_RTScheduler_Current_i *)
TAO_ORB_Coreorb (void)
DT_Hash_Mapdt_hash (void)

Static Public Attributes

static ACE_Atomic_Op
< TAO_SYNCH_MUTEX, long > 
guid_counter

Private Attributes

RTCORBA::Current_var rt_current_
TAO_ORB_Coreorb_
DT_Hash_Map dt_hash_

Reference Related Methods



typedef TAO_RTScheduler_Current_ptr _ptr_type
 Useful for template programming.
typedef TAO_RTScheduler_Current_var _var_type
virtual const char * _interface_repository_id (void) const
static TAO_RTScheduler_Current_ptr _duplicate (TAO_RTScheduler_Current_ptr obj)
static TAO_RTScheduler_Current_ptr _narrow (CORBA::Object_ptr obj)
static TAO_RTScheduler_Current_ptr _nil (void)
 Return a NIL object.

Detailed Description

Definition at line 78 of file Current.h.


Member Typedef Documentation

Useful for template programming.

Reimplemented from CORBA::LocalObject.

Definition at line 145 of file Current.h.

Reimplemented from CORBA::LocalObject.

Definition at line 146 of file Current.h.


Constructor & Destructor Documentation

TAO_RTScheduler_Current::TAO_RTScheduler_Current ( void   ) 

Definition at line 27 of file Current.cpp.

{
}

TAO_RTScheduler_Current::~TAO_RTScheduler_Current ( void   )  [virtual]

Definition at line 31 of file Current.cpp.

{
}


Member Function Documentation

TAO_RTScheduler_Current_ptr TAO_RTScheduler_Current::_duplicate ( TAO_RTScheduler_Current_ptr  obj  )  [static]

Definition at line 921 of file Current.cpp.

{
  if (!CORBA::is_nil (obj))
    obj->_add_ref ();
  return obj;
}

const char * TAO_RTScheduler_Current::_interface_repository_id ( void   )  const [virtual]

The repository ID for the most derived class, this is an implementation method and does no remote invocations!

Reimplemented from CORBA::Object.

Definition at line 928 of file Current.cpp.

{
  return "IDL:TAO_RTScheduler_Current:1.0";
}

TAO_RTScheduler_Current_ptr TAO_RTScheduler_Current::_narrow ( CORBA::Object_ptr  obj  )  [static]
Todo:
Narrowing a LocalObject to a CORBA::Object is broken right now. The solution seems to be making CORBA::Object an abstract base class and create a CORBA::RemoteObject for regular object. Or, even easier, add a is_local member into CORBA::Object. I'll take the easier route for now.

Reimplemented from CORBA::LocalObject.

Definition at line 909 of file Current.cpp.

{
  return
    TAO_RTScheduler_Current::_duplicate (
        dynamic_cast<TAO_RTScheduler_Current *> (obj)
      );
}

static TAO_RTScheduler_Current_ptr TAO_RTScheduler_Current::_nil ( void   )  [inline, static]

Return a NIL object.

Reimplemented from CORBA::LocalObject.

Definition at line 155 of file Current.h.

void TAO_RTScheduler_Current::begin_scheduling_segment ( const char *  name,
CORBA::Policy_ptr  sched_param,
CORBA::Policy_ptr  implicit_sched_param 
) [virtual]

Definition at line 71 of file Current.cpp.

{
  TAO_RTScheduler_Current_i *impl = this->implementation ();

  if (impl == 0)
    {
      ACE_NEW_THROW_EX (impl,
                        TAO_RTScheduler_Current_i (this->orb_,
                                                   &this->dt_hash_),
                        CORBA::NO_MEMORY (
                                          CORBA::SystemException::_tao_minor_code (
                                          TAO::VMCID,
                                          ENOMEM),
                                          CORBA::COMPLETED_NO));

      this->implementation (impl);
    }

  impl->begin_scheduling_segment (name,
                                  sched_param,
                                  implicit_sched_param
                                 );
}

RTScheduling::Current::NameList * TAO_RTScheduler_Current::current_scheduling_segment_names ( void   ) 

Definition at line 207 of file Current.cpp.

{
  TAO_RTScheduler_Current_i *impl = this->implementation ();

  if (impl == 0)
    throw ::CORBA::BAD_INV_ORDER ();

  return impl->current_scheduling_segment_names ();
}

DT_Hash_Map * TAO_RTScheduler_Current::dt_hash ( void   ) 

Definition at line 64 of file Current.cpp.

{
  return &this->dt_hash_;
}

void TAO_RTScheduler_Current::end_scheduling_segment ( const char *  name  )  [virtual]

Definition at line 117 of file Current.cpp.

{
  TAO_RTScheduler_Current_i *impl = this->implementation ();

  if (impl == 0)
    {
      ACE_ERROR ((LM_ERROR,
                  "Missing scheduling context OR DT cancelled\n"));
      throw ::CORBA::BAD_INV_ORDER ();
      return;
    }

  impl->end_scheduling_segment (name
                               );
}

RTScheduling::Current::IdType * TAO_RTScheduler_Current::id ( void   ) 

Definition at line 173 of file Current.cpp.

{
  TAO_RTScheduler_Current_i *impl = this->implementation ();

  if (impl == 0)
    throw ::CORBA::BAD_INV_ORDER ();

  return impl->id ();
}

TAO_RTScheduler_Current_i * TAO_RTScheduler_Current::implementation ( TAO_RTScheduler_Current_i new_current  ) 

Definition at line 230 of file Current.cpp.

TAO_RTScheduler_Current_i * TAO_RTScheduler_Current::implementation ( void   ) 

Definition at line 243 of file Current.cpp.

CORBA::Policy_ptr TAO_RTScheduler_Current::implicit_scheduling_parameter ( void   ) 

Definition at line 196 of file Current.cpp.

{
  TAO_RTScheduler_Current_i *impl = this->implementation ();

  if (impl == 0)
    throw ::CORBA::BAD_INV_ORDER ();

  return impl->implicit_scheduling_parameter ();
}

void TAO_RTScheduler_Current::init ( TAO_ORB_Core orb  ) 

Definition at line 36 of file Current.cpp.

{
  this->orb_ = orb;

  // Create the RT_Current.
  RTCORBA::Current_ptr current;
  ACE_NEW_THROW_EX (current,
                    TAO_RT_Current (orb),
                    CORBA::NO_MEMORY (CORBA::SystemException::_tao_minor_code (
                                        TAO::VMCID,
                                        ENOMEM),
                                      CORBA::COMPLETED_NO));
  this->rt_current_ = current;
}

RTScheduling::DistributableThread_ptr TAO_RTScheduler_Current::lookup ( const RTScheduling::Current::IdType id  )  [virtual]

Definition at line 134 of file Current.cpp.

{
  RTScheduling::DistributableThread_var DT;
  int result = this->dt_hash_.find (id,
                                    DT);
  if (result == 0)
    return DT._retn ();
  else return RTScheduling::DistributableThread::_nil ();
}

TAO_ORB_Core * TAO_RTScheduler_Current::orb ( void   ) 

Definition at line 58 of file Current.cpp.

{
  return this->orb_;
}

void TAO_RTScheduler_Current::rt_current ( RTCORBA::Current_ptr  rt_current  ) 

Definition at line 52 of file Current.cpp.

CORBA::Policy_ptr TAO_RTScheduler_Current::scheduling_parameter ( void   ) 

Definition at line 184 of file Current.cpp.

{

  TAO_RTScheduler_Current_i *impl = this->implementation ();

  if (impl == 0)
    throw ::CORBA::BAD_INV_ORDER ();

  return impl->scheduling_parameter ();
}

RTScheduling::DistributableThread_ptr TAO_RTScheduler_Current::spawn ( RTScheduling::ThreadAction_ptr  start,
CORBA::VoidData  data,
const char *  name,
CORBA::Policy_ptr  sched_param,
CORBA::Policy_ptr  implicit_sched_param,
CORBA::ULong  stack_size,
RTCORBA::Priority  base_priority 
) [virtual]

Definition at line 149 of file Current.cpp.

{
  TAO_RTScheduler_Current_i *impl = this->implementation ();

  if (impl == 0)
    throw ::CORBA::BAD_INV_ORDER ();

  return impl->spawn (start,
                      data,
                      name,
                      sched_param,
                      implicit_sched_param,
                      stack_size,
                      base_priority
                     );
}

RTCORBA::Priority TAO_RTScheduler_Current::the_priority ( void   )  [virtual]

Definition at line 218 of file Current.cpp.

{
  return this->rt_current_->the_priority ();
}

void TAO_RTScheduler_Current::the_priority ( RTCORBA::Priority  the_priority  )  [virtual]

Definition at line 224 of file Current.cpp.

{
  this->rt_current_->the_priority(the_priority);
}

void TAO_RTScheduler_Current::update_scheduling_segment ( const char *  name,
CORBA::Policy_ptr  sched_param,
CORBA::Policy_ptr  implicit_sched_param 
) [virtual]

Definition at line 100 of file Current.cpp.

{
  TAO_RTScheduler_Current_i *impl = this->implementation ();

  if (impl == 0)
    throw ::CORBA::BAD_INV_ORDER ();

  impl->update_scheduling_segment (name,
                                   sched_param,
                                   implicit_sched_param
                                  );
}


Member Data Documentation

Definition at line 166 of file Current.h.

ACE_Atomic_Op< TAO_SYNCH_MUTEX, long > TAO_RTScheduler_Current::guid_counter [static]

Definition at line 83 of file Current.h.

Definition at line 165 of file Current.h.

RTCORBA::Current_var TAO_RTScheduler_Current::rt_current_ [private]

Definition at line 164 of file Current.h.


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