RTT::Corba::ExpressionProxy Class Reference

This class manages the access of remote Expression Corba Servers. More...

#include <rtt/corba/ExpressionProxy.hpp>

Inheritance diagram for RTT::Corba::ExpressionProxy:
RTT::DataSourceBase

List of all members.

Public Types

typedef boost::intrusive_ptr
< ExpressionProxy
shared_ptr
 Use this type to store a pointer to a DataSourceBase.
typedef boost::intrusive_ptr
< const DataSourceBase
const_ptr
 Use this type to store a const pointer to a DataSourceBase.

Public Member Functions

template<class T >
DataSource< T > * narrowDataSource () const
 Create an Orocos DataSource<T> proxy.
DataSource< void > * narrowDataSource () const
 Create an Orocos DataSource<void> proxy.
template<class T >
AssignableDataSource< T > * narrowAssignableDataSource () const
 Create an Orocos AssignableDataSource<T> proxy.
virtual int serverProtocol () const
 Get the Corba Object reference of the Expression.
virtual bool evaluate () const
 Force an evaluation of the DataSourceBase.
virtual DataSourceBaseclone () const
 Return a shallow clone of this DataSource.
virtual DataSourceBasecopy (std::map< const DataSourceBase *, DataSourceBase * > &alreadyCloned) const
 Create a deep copy of this DataSource, unless it is already cloned.
virtual std::string getType () const
 Return useful type info in a human readable format.
virtual const TypeInfogetTypeInfo () const
 Return the Orocos type info object.
virtual std::string getTypeName () const
 Return the Orocos type name, without const, pointer or reference qualifiers.
virtual void * createBlob (int p)
 Creates a transportable data object with the current value of this DataSource.
virtual void * getBlob (int p)
 Creates a transportable data object with the current value of this DataSource.
virtual void * server (int p, void *arg)
 Create an object server which 'mirrors' this DataSource.
virtual void * server (int p, void *arg) const
virtual void * method (int p, MethodC *, void *arg)
 Create an object server which 'mirrors' this DataSource.
void ref () const
 Increase the reference count by one.
void deref () const
 Decrease the reference count by one and delete this on zero.
virtual void reset ()
 Reset the data to initial values.
virtual void updated ()
 In case the DataSource returns a 'reference' type, call this method to notify it that the data was updated in the course of an invocation of get().
virtual bool update (DataSourceBase *other)
 Update the value of this DataSource with the value of an other DataSource.
virtual CommandInterfaceupdateCommand (DataSourceBase *other)
 Generate a CommandInterface object which will update this DataSource with the value of another DataSource when execute()'ed.
virtual bool updatePart (DataSourceBase *part, DataSourceBase *other)
 Update part of the value of this DataSource with the value of an other DataSource.
virtual CommandInterfaceupdatePartCommand (DataSourceBase *part, DataSourceBase *other)
 Generate a CommandInterface object which will partially update this DataSource with the value of another DataSource when execute()'ed.
std::ostream & write (std::ostream &os)
 Stream the contents of this object.
std::string toString ()
 Get the contents of this object as a string.
bool decomposeType (PropertyBag &targetbag)
 Decompose the contents of this object into properties.
bool composeType (DataSourceBase::shared_ptr source)
 Compose the contents of this object from another datasource.
virtual bool updateBlob (int protocol, const void *data)
 Updates the value of this DataSource with the value of a transportable data object.

Static Public Member Functions

static ExpressionProxy::shared_ptr Create (::RTT::Corba::Expression_ptr expr)
 Factory method: create a CORBA connection to an existing Expression Object.
static DataSourceBase::shared_ptr CreateDataSource (::RTT::Corba::Expression_ptr expr)
 Factory method: create a DataSource to an existing Expression Object.
template<class T >
static DataSource< T > * NarrowDataSource (::RTT::Corba::Expression_ptr expr)
 Create a DataSource connection to an existing Expression Object.
template<class T >
static DataSource< T > * NarrowConstant (const CORBA::Any &any)
 Create a ConstantDataSource representing a read-only Any.
template<class T >
static AssignableDataSource< T > * NarrowAssignableDataSource (::RTT::Corba::Expression_ptr expr)
 Create an Orocos AssignableDataSource<T> proxy.

Protected Types

typedef std::map
< Corba::Expression_ptr,
ExpressionProxy::shared_ptr
EMap
typedef std::map
< Corba::Expression_ptr,
DataSourceBase::shared_ptr
DMap

Protected Member Functions

 ExpressionProxy (::RTT::Corba::Expression_ptr t)
 Private constructor which creates a new connection to a corba object.

Protected Attributes

Corba::Expression_var mdata
OS::AtomicInt refcount
 We keep the refcount ourselves.

Static Protected Attributes

static EMap proxies
static DMap dproxies

Detailed Description

This class manages the access of remote Expression Corba Servers.

Definition at line 62 of file ExpressionProxy.hpp.


Member Function Documentation

virtual DataSourceBase* RTT::Corba::ExpressionProxy::clone (  )  const [inline, virtual]

Return a shallow clone of this DataSource.

This method returns a duplicate of this instance which re-uses the DataSources this DataSource holds reference to. The clone() function is thus a non-deep copy.

Implements RTT::DataSourceBase.

Definition at line 185 of file ExpressionProxy.hpp.

bool RTT::DataSourceBase::composeType ( DataSourceBase::shared_ptr  source  )  [inherited]

Compose the contents of this object from another datasource.

See also:
TypeInfo
virtual DataSourceBase* RTT::Corba::ExpressionProxy::copy ( std::map< const DataSourceBase *, DataSourceBase * > &  alreadyCloned  )  const [inline, virtual]

Create a deep copy of this DataSource, unless it is already cloned.

Places the association (parent, clone) in alreadyCloned. If the DataSource is non-copyable (for example it represents the Property of a Task ), this may be returned.

Implements RTT::DataSourceBase.

Definition at line 189 of file ExpressionProxy.hpp.

static ExpressionProxy::shared_ptr RTT::Corba::ExpressionProxy::Create ( ::RTT::Corba::Expression_ptr  expr  )  [static]

Factory method: create a CORBA connection to an existing Expression Object.

Parameters:
expr The Object to connect to.
Returns:
A new or previously created CORBA proxy for expr.
virtual void* RTT::Corba::ExpressionProxy::createBlob ( int  protocol  )  [inline, virtual]

Creates a transportable data object with the current value of this DataSource.

This does not trigger the evaluation() of this data source.

Returns:
a valid object or nill if this type is not supported.

Reimplemented from RTT::DataSourceBase.

Definition at line 200 of file ExpressionProxy.hpp.

static DataSourceBase::shared_ptr RTT::Corba::ExpressionProxy::CreateDataSource ( ::RTT::Corba::Expression_ptr  expr  )  [static]

Factory method: create a DataSource to an existing Expression Object.

Parameters:
expr The Object to connect to.
Returns:
A new or previously created DataSource for expr.
bool RTT::DataSourceBase::decomposeType ( PropertyBag targetbag  )  [inherited]

Decompose the contents of this object into properties.

See also:
TypeInfo
virtual bool RTT::Corba::ExpressionProxy::evaluate (  )  const [inline, virtual]

Force an evaluation of the DataSourceBase.

Returns:
true on successful evaluation. If the DataSource itself contains a boolean, return that boolean.

Implements RTT::DataSourceBase.

Definition at line 181 of file ExpressionProxy.hpp.

virtual void* RTT::Corba::ExpressionProxy::getBlob ( int  protocol  )  [inline, virtual]

Creates a transportable data object with the current value of this DataSource.

This does trigger the evaluation() of this data source. Equivalent to this->evaluate(); this->createBlob();

Returns:
a valid object or nill if this type is not supported.

Reimplemented from RTT::DataSourceBase.

Definition at line 206 of file ExpressionProxy.hpp.

virtual void* RTT::Corba::ExpressionProxy::method ( int  protocol,
MethodC orig,
void *  arg 
) [inline, virtual]

Create an object server which 'mirrors' this DataSource.

Returns:
The existing server if serverProtocol() == protocol, or a new method object reference otherwise.
See also:
Operations.idl

Reimplemented from RTT::DataSourceBase.

Definition at line 224 of file ExpressionProxy.hpp.

template<class T >
AssignableDataSource<T>* RTT::Corba::ExpressionProxy::narrowAssignableDataSource (  )  const [inline]

Create an Orocos AssignableDataSource<T> proxy.

Parameters:
T the type of data the Expression supposedly has.
Returns:
0 if the Expression is not convertible to T.

Definition at line 165 of file ExpressionProxy.hpp.

template<class T >
static AssignableDataSource<T>* RTT::Corba::ExpressionProxy::NarrowAssignableDataSource ( ::RTT::Corba::Expression_ptr  expr  )  [inline, static]

Create an Orocos AssignableDataSource<T> proxy.

Parameters:
T the type of data the Expression supposedly has.
expr The Object to connect to.
Returns:
0 if the Expression is not convertible to T.

Definition at line 124 of file ExpressionProxy.hpp.

References RTT::Logger::log(), RTT::DataSourceBase::ref(), and RTT::AssignableDataSource< T >::updateBlob().

template<class T >
static DataSource<T>* RTT::Corba::ExpressionProxy::NarrowConstant ( const CORBA::Any &  any  )  [inline, static]

Create a ConstantDataSource representing a read-only Any.

Parameters:
T the type of data the Any supposedly has.
any The any.
Returns:
0 if the Any is not convertible to T.

Definition at line 111 of file ExpressionProxy.hpp.

DataSource<void>* RTT::Corba::ExpressionProxy::narrowDataSource (  )  const [inline]

Create an Orocos DataSource<void> proxy.

Returns:
A new DataSource.

Definition at line 155 of file ExpressionProxy.hpp.

template<class T >
DataSource<T>* RTT::Corba::ExpressionProxy::narrowDataSource (  )  const [inline]

Create an Orocos DataSource<T> proxy.

Parameters:
T the type of data the Expression supposedly has.
Returns:
0 if the Expression is not convertible to T.

Definition at line 147 of file ExpressionProxy.hpp.

template<class T >
static DataSource<T>* RTT::Corba::ExpressionProxy::NarrowDataSource ( ::RTT::Corba::Expression_ptr  expr  )  [inline, static]

Create a DataSource connection to an existing Expression Object.

Parameters:
T the type of data the Expression supposedly has.
expr The Object to connect to.
Returns:
0 if the Expression is not convertible to T.

Definition at line 90 of file ExpressionProxy.hpp.

References RTT::Logger::log(), RTT::DataSourceBase::ref(), and RTT::AssignableDataSource< T >::updateBlob().

virtual void* RTT::Corba::ExpressionProxy::server ( int  protocol,
void *  arg 
) [inline, virtual]

Create an object server which 'mirrors' this DataSource.

Returns:
The existing server if serverProtocol() == protocol, or a new server object reference otherwise.
See also:
Operations.idl

Reimplemented from RTT::DataSourceBase.

Definition at line 212 of file ExpressionProxy.hpp.

virtual int RTT::Corba::ExpressionProxy::serverProtocol (  )  const [inline, virtual]

Get the Corba Object reference of the Expression.

This object universally identifies the remote Expression Object and can be used to tell other (remote) objects where to find it.

Reimplemented from RTT::DataSourceBase.

Definition at line 176 of file ExpressionProxy.hpp.

std::string RTT::DataSourceBase::toString (  )  [inherited]

Get the contents of this object as a string.

See also:
TypeInfo
virtual bool RTT::DataSourceBase::update ( DataSourceBase other  )  [virtual, inherited]
virtual bool RTT::DataSourceBase::updateBlob ( int  protocol,
const void *  data 
) [virtual, inherited]
virtual CommandInterface* RTT::DataSourceBase::updateCommand ( DataSourceBase other  )  [virtual, inherited]
virtual bool RTT::DataSourceBase::updatePart ( DataSourceBase part,
DataSourceBase other 
) [virtual, inherited]

Update part of the value of this DataSource with the value of an other DataSource.

Update does a partial update of the value, according to part, which is most likely an index or hash value of some type.

Returns:
false if the DataSources are of different type OR if the contents of this DataSource can not be partially updated.

Reimplemented in RTT::detail::AssignableDataSourceAdaptor< To const &, To >.

Referenced by RTT::detail::AssignableDataSourceAdaptor< To const &, To >::updatePart().

virtual CommandInterface* RTT::DataSourceBase::updatePartCommand ( DataSourceBase part,
DataSourceBase other 
) [virtual, inherited]

Generate a CommandInterface object which will partially update this DataSource with the value of another DataSource when execute()'ed.

part is an index or hash value of some type.

Returns:
zero if the DataSource types do not match OR if the contents of this DataSource can not be partially updated.

Reimplemented in RTT::Corba::CORBAAssignableExpression< T >, RTT::detail::AssignableDataSourceAdaptor< To const &, To >, and RTT::IndexedValueDataSource< T, Index, SetType, IPred, APred >.

Referenced by RTT::detail::AssignableDataSourceAdaptor< To const &, To >::updatePartCommand().

std::ostream& RTT::DataSourceBase::write ( std::ostream &  os  )  [inherited]

Stream the contents of this object.

See also:
TypeInfo

Member Data Documentation

OS::AtomicInt RTT::DataSourceBase::refcount [mutable, protected, inherited]

We keep the refcount ourselves.

We aren't using boost::shared_ptr, because boost::intrusive_ptr is better, exactly because it can be used with refcounts that are stored in the class itself. Advantages are that the shared_ptr's for derived classes use the same refcount, which is of course very much desired, and that refcounting happens in an efficient way, which is also nice :)

Definition at line 89 of file DataSourceBase.hpp.


The documentation for this class was generated from the following file:
Generated on Thu Dec 23 13:22:45 2010 for Orocos Real-Time Toolkit by  doxygen 1.6.3