Orocos Real-Time Toolkit  2.9.0
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
RTT::corba::TaskContextServer Class Reference

This class manages the creation of TaskContext Corba Servers and a Corba Object Request Broker (Orb) which executes the servers. More...

#include <rtt/transports/corba/TaskContextServer.hpp>

Inheritance diagram for RTT::corba::TaskContextServer:
RTT::corba::ApplicationServer

Public Member Functions

 ~TaskContextServer ()
 When a TaskContextServer is destroyed, the object reference is removed from the Naming Service and the servant is deleted. More...
 
CTaskContext_ptr server () const
 Get the Corba Object of this TaskContext. More...
 

Static Public Member Functions

static void ShutdownOrb (bool wait_for_completion=true)
 Invoke this method once to shutdown the Orb which is running the task servers in RunOrb(). More...
 
static void CleanupServers ()
 Destroys all TaskContextServer objects. More...
 
static void RunOrb ()
 Invoke this method to run the orb and accept client requests. More...
 
static void ThreadOrb ()
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This is kept (instead of using only default parameters in the other version) for ABI compatibility. More...
 
static void ThreadOrb (int scheduler, int priority=RTT::os::LowestPriority, unsigned cpu_affinity=0)
 Invoke this method to run the orb in a separate thread and accept client requests from that thread. More...
 
static void DestroyOrb ()
 Invoke this method once to cleanup the orb. More...
 
static TaskContextServerCreate (TaskContext *tc, bool use_naming=true, bool require_name_service=false)
 Factory method: create a CORBA server for an existing TaskContext. More...
 
static TaskContextServerCreate (TaskContext *tc, const std::string &alias, bool use_naming=true, bool require_name_service=false)
 Factory method: create a CORBA server for an existing TaskContext. More...
 
static CTaskContext_ptr CreateServer (TaskContext *tc, bool use_naming=true, bool require_name_service=false)
 Factory method: create a CORBA server for an existing TaskContext. More...
 
static CTaskContext_ptr CreateServer (TaskContext *tc, const std::string &alias, bool use_naming=true, bool require_name_service=false)
 Factory method: create a CORBA server for an existing TaskContext. More...
 
static void CleanupServer (TaskContext *tc)
 Deletes a TaskContext server for a given taskcontext. More...
 
static std::string getIOR (TaskContext *tc)
 Get the IOR of a given TaskContext. More...
 
static RTT_CORBA_API bool InitOrb (int argc, char *argv[], Seconds orb_timeout=0)
 Invoke this method once to initialise the Orb which will run the task servers. More...
 

Static Public Attributes

static CORBA::ORB_var orb
 The orb of this process. More...
 
static PortableServer::POA_var rootPOA
 The root POA of this process. More...
 

Protected Types

typedef std::map< TaskContext *, TaskContextServer * > ServerMap
 
typedef std::map< TaskContext *, std::string > IorMap
 

Protected Member Functions

 TaskContextServer (TaskContext *taskcontext, bool use_naming, bool require_name_service)
 Private constructor which creates a new servant. More...
 
 TaskContextServer (TaskContext *taskcontext, const std::string &alias, bool use_naming, bool require_name_service)
 Private constructor which creates a new servant using an alias. More...
 
void initTaskContextServer (bool require_name_service)
 

Static Protected Member Functions

static void DoShutdownOrb (bool wait_for_completion=true)
 Internal shutdown function, used by both thread and ShutdownOrb. More...
 

Protected Attributes

PortableServer::POA_var mpoa
 
PortableServer::ServantBase_var mtask_i
 
corba::CTaskContext_var mtask
 
TaskContextmtaskcontext
 
bool muse_naming
 
std::string mregistered_name
 

Static Protected Attributes

static ServerMap servers
 
static base::ActivityInterfaceorbrunner = 0
 
static bool is_shutdown = false
 
static IorMap iors
 

Friends

class OrbRunner
 
class TaskContextProxy
 

Detailed Description

This class manages the creation of TaskContext Corba Servers and a Corba Object Request Broker (Orb) which executes the servers.

The Orb may be run from the main thread or in its own thread.

Definition at line 65 of file TaskContextServer.hpp.

Member Typedef Documentation

typedef std::map<TaskContext*, std::string> RTT::corba::TaskContextServer::IorMap
protected

Definition at line 79 of file TaskContextServer.hpp.

Definition at line 72 of file TaskContextServer.hpp.

Constructor & Destructor Documentation

RTT::corba::TaskContextServer::TaskContextServer ( TaskContext taskcontext,
bool  use_naming,
bool  require_name_service 
)
protected

Private constructor which creates a new servant.

Definition at line 252 of file TaskContextServer.cpp.

References initTaskContextServer().

Referenced by Create(), and CreateServer().

RTT::corba::TaskContextServer::TaskContextServer ( TaskContext taskcontext,
const std::string &  alias,
bool  use_naming,
bool  require_name_service 
)
protected

Private constructor which creates a new servant using an alias.

Definition at line 245 of file TaskContextServer.cpp.

References initTaskContextServer().

RTT::corba::TaskContextServer::~TaskContextServer ( )

When a TaskContextServer is destroyed, the object reference is removed from the Naming Service and the servant is deleted.

Definition at line 77 of file TaskContextServer.cpp.

References RTT::Info, and RTT::Warning.

Member Function Documentation

void RTT::corba::TaskContextServer::CleanupServer ( TaskContext tc)
static

Deletes a TaskContext server for a given taskcontext.

If no such server exists, this method silently does nothing.

Definition at line 270 of file TaskContextServer.cpp.

References RTT::corba::CDataFlowInterface_i::deregisterServant(), RTT::TaskContext::getName(), RTT::Info, RTT::corba::ApplicationServer::orb, RTT::TaskContext::provides(), and servers.

void RTT::corba::TaskContextServer::CleanupServers ( )
static
TaskContextServer * RTT::corba::TaskContextServer::Create ( TaskContext tc,
bool  use_naming = true,
bool  require_name_service = false 
)
static

Factory method: create a CORBA server for an existing TaskContext.

Parameters
tcThe TaskContext to serve.
use_namingSet to false in order not to use the Corba Naming Service.
require_namingSet to true to require that the Corba Naming Service be found.
Return values
0if the ORB is not initialised, or if require_name_service==true and the name service was not found
Returns
A new or previously created CORBA server for tc.

Definition at line 408 of file TaskContextServer.cpp.

References RTT::TaskContext::getName().

Referenced by RTT::corba::TaskContextProxy::addPeer(), RTT::corba::TaskContextProxy::connectPeers(), RTT::corba::TaskContextProxy::connectPorts(), and RTT::corba::TaskContextProxy::connectServices().

TaskContextServer * RTT::corba::TaskContextServer::Create ( TaskContext tc,
const std::string &  alias,
bool  use_naming = true,
bool  require_name_service = false 
)
static

Factory method: create a CORBA server for an existing TaskContext.

Parameters
tcThe TaskContext to serve.
aliasAlias to use as name when registering the CORBA server.
use_namingSet to false in order not to use the Corba Naming Service.
require_namingSet to true to require that the Corba Naming Service be found.
Return values
0if the ORB is not initialised, or if require_name_service==true and the name service was not found
Returns
A new or previously created CORBA server for tc.

Definition at line 412 of file TaskContextServer.cpp.

References RTT::Debug, RTT::os::endl(), RTT::Info, RTT::corba::ApplicationServer::orb, servers, TaskContextServer(), and RTT::corba::IllegalServer::what().

CTaskContext_ptr RTT::corba::TaskContextServer::CreateServer ( TaskContext tc,
bool  use_naming = true,
bool  require_name_service = false 
)
static

Factory method: create a CORBA server for an existing TaskContext.

Same as above, but immediately return the Corba object. Also checks if tc is TaskContextProxy and returns the server of the proxy if so.

Parameters
tcThe TaskContext to serve.
use_namingSet to false in order not to use the Corba Naming Service.
require_namingSet to true to require that the Corba Naming Service be found.
Return values
0if the ORB is not initialised, or if require_name_service==true and the name service was not found
Returns
A new or previously created CORBA server for tc. Since this is a factory function, you need to store the object in a _var and don't need to _duplicate it.

Definition at line 433 of file TaskContextServer.cpp.

References RTT::TaskContext::getName().

Referenced by RTT::corba::AnyConversion< RTT::TaskContext * >::createAny(), and RTT::corba::AnyConversion< RTT::TaskContext * >::updateAny().

CTaskContext_ptr RTT::corba::TaskContextServer::CreateServer ( TaskContext tc,
const std::string &  alias,
bool  use_naming = true,
bool  require_name_service = false 
)
static

Factory method: create a CORBA server for an existing TaskContext.

Same as above, but immediately return the Corba object. Also checks if tc is TaskContextProxy and returns the server of the proxy if so.

Parameters
tcThe TaskContext to serve.
aliasAlias to use as name when registering the CORBA server.
use_namingSet to false in order not to use the Corba Naming Service.
require_namingSet to true to require that the Corba Naming Service be found.
Return values
0if the ORB is not initialised, or if require_name_service==true and the name service was not found
Returns
A new or previously created CORBA server for tc. Since this is a factory function, you need to store the object in a _var and don't need to _duplicate it.

Definition at line 437 of file TaskContextServer.cpp.

References RTT::Debug, RTT::os::endl(), RTT::Info, RTT::corba::ApplicationServer::orb, RTT::corba::TaskContextProxy::proxies, server(), servers, TaskContextServer(), and RTT::corba::IllegalServer::what().

void RTT::corba::TaskContextServer::DestroyOrb ( )
static
void RTT::corba::TaskContextServer::DoShutdownOrb ( bool  wait_for_completion = true)
staticprotected

Internal shutdown function, used by both thread and ShutdownOrb.

Definition at line 288 of file TaskContextServer.cpp.

References CleanupServers(), CORBA_EXCEPTION_INFO, RTT::Error, RTT::Info, is_shutdown, and RTT::corba::ApplicationServer::orb.

Referenced by ShutdownOrb().

std::string RTT::corba::TaskContextServer::getIOR ( TaskContext tc)
static

Get the IOR of a given TaskContext.

Parameters
tcThe TaskContext to find the IOR for
Returns
IOR of the provided TaskContext or an empty string if the TaskContext is unknown

Definition at line 471 of file TaskContextServer.cpp.

References iors.

RTT_CORBA_API bool RTT::corba::ApplicationServer::InitOrb ( int  argc,
char *  argv[],
Seconds  orb_timeout = 0 
)
staticinherited

Invoke this method once to initialise the Orb which will run the task servers.

Parameters
orb_timeouttimeout value for each remote call, expressed in seconds. The resolution is up to 100 nano seconds. Anything smaller will be interpreted as a zero.

Definition at line 55 of file ApplicationServer.cpp.

References CORBA_EXCEPTION_INFO, RTT::Error, RTT::Logger::log(), RTT::Logger::nl(), RTT::corba::ApplicationServer::orb, and RTT::corba::ApplicationServer::rootPOA.

Referenced by RTT::corba::TaskContextFactory::InitOrb().

void RTT::corba::TaskContextServer::initTaskContextServer ( bool  require_name_service)
protected
void RTT::corba::TaskContextServer::RunOrb ( )
static

Invoke this method to run the orb and accept client requests.

Use ShutdownOrb() to break out of this method.

Definition at line 316 of file TaskContextServer.cpp.

References CORBA_EXCEPTION_INFO, RTT::Error, RTT::Info, and RTT::corba::ApplicationServer::orb.

Referenced by RTT::corba::OrbRunner::loop().

CTaskContext_ptr RTT::corba::TaskContextServer::server ( ) const

Get the Corba Object of this TaskContext.

If you want to store this reference, you must _duplicate it. This object universally identifies the remote TaskContextServer and can be used to tell other (remote) objects where to find it.

Definition at line 465 of file TaskContextServer.cpp.

References mtask.

Referenced by RTT::corba::TaskContextProxy::addPeer(), RTT::corba::TaskContextProxy::connectPeers(), RTT::corba::TaskContextProxy::connectPorts(), RTT::corba::TaskContextProxy::connectServices(), and CreateServer().

void RTT::corba::TaskContextServer::ShutdownOrb ( bool  wait_for_completion = true)
static

Invoke this method once to shutdown the Orb which is running the task servers in RunOrb().

When this function returns, no CORBA invocations are in progress, unless wait_for_completion is false.

Definition at line 282 of file TaskContextServer.cpp.

References DoShutdownOrb().

void RTT::corba::TaskContextServer::ThreadOrb ( )
static

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.This is kept (instead of using only default parameters in the other version) for ABI compatibility.

Definition at line 361 of file TaskContextServer.cpp.

References ORO_SCHED_RT.

void RTT::corba::TaskContextServer::ThreadOrb ( int  scheduler,
int  priority = RTT::os::LowestPriority,
unsigned  cpu_affinity = 0 
)
static

Invoke this method to run the orb in a separate thread and accept client requests from that thread.

Use ShutdownOrb() to break out of this method.

Definition at line 362 of file TaskContextServer.cpp.

References RTT::Error, RTT::Info, RTT::corba::ApplicationServer::orb, OrbRunner, orbrunner, and RTT::base::ActivityInterface::start().

Friends And Related Function Documentation

friend class OrbRunner
friend

Definition at line 69 of file TaskContextServer.hpp.

Referenced by ThreadOrb().

friend class TaskContextProxy
friend

Definition at line 70 of file TaskContextServer.hpp.

Member Data Documentation

std::map< TaskContext *, std::string > RTT::corba::TaskContextServer::iors
staticprotected

Definition at line 80 of file TaskContextServer.hpp.

Referenced by getIOR().

bool RTT::corba::TaskContextServer::is_shutdown = false
staticprotected

Definition at line 75 of file TaskContextServer.hpp.

Referenced by CleanupServers(), and DoShutdownOrb().

PortableServer::POA_var RTT::corba::TaskContextServer::mpoa
protected

Definition at line 77 of file TaskContextServer.hpp.

std::string RTT::corba::TaskContextServer::mregistered_name
protected

Definition at line 98 of file TaskContextServer.hpp.

corba::CTaskContext_var RTT::corba::TaskContextServer::mtask
protected

Definition at line 95 of file TaskContextServer.hpp.

Referenced by server().

PortableServer::ServantBase_var RTT::corba::TaskContextServer::mtask_i
protected

Definition at line 94 of file TaskContextServer.hpp.

TaskContext* RTT::corba::TaskContextServer::mtaskcontext
protected

Definition at line 96 of file TaskContextServer.hpp.

bool RTT::corba::TaskContextServer::muse_naming
protected

Definition at line 97 of file TaskContextServer.hpp.

CORBA::ORB_var RTT_API RTT::corba::ApplicationServer::orb
staticinherited
base::ActivityInterface * RTT::corba::TaskContextServer::orbrunner = 0
staticprotected

Definition at line 74 of file TaskContextServer.hpp.

Referenced by DestroyOrb(), and ThreadOrb().

PortableServer::POA_var RTT::corba::ApplicationServer::rootPOA
staticinherited

The root POA of this process.

Definition at line 67 of file ApplicationServer.hpp.

Referenced by RTT::corba::TaskContextProxy::DestroyOrb(), DestroyOrb(), and RTT::corba::ApplicationServer::InitOrb().

std::map< TaskContext *, TaskContextServer * > RTT::corba::TaskContextServer::servers
staticprotected

The documentation for this class was generated from the following files: