#include <OperationCaller.hpp>
A OperationCaller serves as a placeholder (aka 'proxy') for a remote Operation. If you want to call an operation, you need this class to do it.
The OperationCaller has the exact same signature template argument as the Operation it wishes to call.
OwnThread operations need the caller's ExecutionEngine to be able to inform it of completion . In case the caller has no ExecutionEngine, the GlobalEngine is used instead, and the GlobalEngine will block until the call completes.
Definition at line 82 of file OperationCaller.hpp.
typedef internal::InvokerSignature<boost::function_traits<Signature>::arity, Signature, boost::shared_ptr< base::OperationCallerBase<Signature> > > RTT::OperationCaller< SignatureT >::Base |
Definition at line 94 of file OperationCaller.hpp.
typedef boost::shared_ptr< base::OperationCallerBase<Signature> > RTT::OperationCaller< SignatureT >::OperationCallerBasePtr |
Definition at line 97 of file OperationCaller.hpp.
typedef boost::function_traits<Signature>::result_type RTT::OperationCaller< SignatureT >::result_type |
Definition at line 95 of file OperationCaller.hpp.
typedef SignatureT RTT::OperationCaller< SignatureT >::Signature |
Definition at line 91 of file OperationCaller.hpp.
typedef boost::function_traits<Signature> RTT::OperationCaller< SignatureT >::traits |
Definition at line 96 of file OperationCaller.hpp.
RTT::OperationCaller< SignatureT >::OperationCaller | ( | ) | [inline] |
Create an empty OperationCaller object. Use assignment to initialise it.
Definition at line 103 of file OperationCaller.hpp.
RTT::OperationCaller< SignatureT >::OperationCaller | ( | std::string | name, |
ExecutionEngine * | caller = 0 |
||
) | [inline] |
Create an OperationCaller object with a name and optional caller.
name | The name of the operation that will be called. |
name | The ExecutionEngine of the TaskContext calling the operation. |
Definition at line 112 of file OperationCaller.hpp.
RTT::OperationCaller< SignatureT >::OperationCaller | ( | const OperationCaller< SignatureT > & | m | ) | [inline] |
OperationCaller objects may be copied. A deep copy is made of the implementation object such that using this object does not interfere when using the original, m.
m | the original |
Definition at line 123 of file OperationCaller.hpp.
RTT::OperationCaller< SignatureT >::OperationCaller | ( | boost::shared_ptr< base::DisposableInterface > | implementation, |
ExecutionEngine * | caller = 0 |
||
) | [inline] |
Initialise a nameless OperationCaller object from a local Operation.
implementation | The implementation of the operation which is to be used by the OperationCaller object. This object will be cloned such that the method uses its own implementation. |
caller | The ExecutionEngine which will be used to call us back in case of asynchronous communication. If zero, the global Engine is used. |
Definition at line 159 of file OperationCaller.hpp.
RTT::OperationCaller< SignatureT >::OperationCaller | ( | OperationInterfacePart * | part, |
ExecutionEngine * | caller = 0 |
||
) | [inline] |
Initialise a nameless OperationCaller object from an operation factory.
part | The OperationInterfacePart which is used by the OperationCaller object to get the implementation. |
caller | The ExecutionEngine which will be used to call us back in case of asynchronous communication. If zero, the global Engine is used. |
Definition at line 180 of file OperationCaller.hpp.
RTT::OperationCaller< SignatureT >::OperationCaller | ( | const std::string & | name, |
ServicePtr | service, | ||
ExecutionEngine * | caller = 0 |
||
) | [inline] |
Initialise a named OperationCaller object from a Service.
name | The name of the operation to look for. |
service | The Service where the operation will be looked up. |
caller | The ExecutionEngine which will be used to call us back in case of asynchronous communication. If zero, the global Engine is used. |
Definition at line 199 of file OperationCaller.hpp.
RTT::OperationCaller< SignatureT >::~OperationCaller | ( | ) | [inline] |
Clean up the OperationCaller object.
Definition at line 317 of file OperationCaller.hpp.
void RTT::OperationCaller< SignatureT >::disconnect | ( | ) | [inline, virtual] |
Disconnects this caller from the operation it was connected to. If this OperationCaller had a name, the name is still kept.
Implements RTT::base::OperationCallerBaseInvoker.
Definition at line 373 of file OperationCaller.hpp.
std::string const& RTT::OperationCaller< SignatureT >::getName | ( | ) | const [inline, virtual] |
Get the name of this OperationCaller.
Implements RTT::base::OperationCallerBaseInvoker.
Definition at line 333 of file OperationCaller.hpp.
const OperationCallerBasePtr RTT::OperationCaller< SignatureT >::getOperationCallerImpl | ( | ) | const [inline] |
Returns the internal implementation of the OperationCaller object.
Definition at line 356 of file OperationCaller.hpp.
OperationCaller& RTT::OperationCaller< SignatureT >::operator= | ( | const OperationCaller< SignatureT > & | m | ) | [inline] |
OperationCaller objects may be assigned. A deep copy is made of the implementation object such that using this object does not interfere when using the original, m.
m | the original |
Definition at line 137 of file OperationCaller.hpp.
OperationCaller& RTT::OperationCaller< SignatureT >::operator= | ( | boost::shared_ptr< base::DisposableInterface > | implementation | ) | [inline] |
OperationCaller objects may be assigned to an implementation. This variant is used when a local implementation is available.
implementation | the implementation. |
Definition at line 218 of file OperationCaller.hpp.
OperationCaller& RTT::OperationCaller< SignatureT >::operator= | ( | OperationInterfacePart * | part | ) | [inline] |
OperationCaller objects may be assigned to a part responsible for production of an implementation. This variant is used when a only a remote implementation is available.
part | The part used by the OperationCaller to produce an implementation. |
Definition at line 236 of file OperationCaller.hpp.
OperationCaller& RTT::OperationCaller< SignatureT >::operator= | ( | ServicePtr | service | ) | [inline] |
Named OperationCaller objects may be looked up in a Service.
service | The Service where the operation will be looked up. |
Definition at line 256 of file OperationCaller.hpp.
bool RTT::OperationCaller< SignatureT >::ready | ( | ) | const [inline, virtual] |
Check if this OperationCaller is ready for execution.
Implements RTT::base::OperationCallerBaseInvoker.
Definition at line 326 of file OperationCaller.hpp.
void RTT::OperationCaller< SignatureT >::setCaller | ( | ExecutionEngine * | caller | ) | [inline, virtual] |
Sets the caller of this method after the implementation was set.
caller |
Implements RTT::base::OperationCallerBaseInvoker.
Definition at line 367 of file OperationCaller.hpp.
bool RTT::OperationCaller< SignatureT >::setImplementation | ( | boost::shared_ptr< base::DisposableInterface > | impl, |
ExecutionEngine * | caller = 0 |
||
) | [inline, virtual] |
Sets a new implementation for this method.
impl | An implementation object that can be upcast to the OperationCallerBase class type of this method. |
caller | The engine of the calling TaskContext. |
Implements RTT::base::OperationCallerBaseInvoker.
Definition at line 335 of file OperationCaller.hpp.
bool RTT::OperationCaller< SignatureT >::setImplementationPart | ( | OperationInterfacePart * | orp, |
ExecutionEngine * | caller = 0 |
||
) | [inline, virtual] |
Sets a new implementation for this method by using a service part.
orp | A part obtained from a service's OperationInterface. |
caller | The engine of the calling TaskContext. |
Implements RTT::base::OperationCallerBaseInvoker.
Definition at line 344 of file OperationCaller.hpp.
void RTT::OperationCaller< SignatureT >::setOperationCallerImpl | ( | OperationCallerBasePtr | new_impl | ) | const [inline] |
Sets the internal implementation of the OperationCaller object.
Definition at line 363 of file OperationCaller.hpp.
void RTT::OperationCaller< SignatureT >::setupOperationCaller | ( | OperationInterfacePart * | part | ) | [inline, protected] |
If no local implementation of an operation could be found, this method tries it using the operationrepository factories.
part |
Definition at line 383 of file OperationCaller.hpp.
ExecutionEngine* RTT::OperationCaller< SignatureT >::mcaller [private] |
Definition at line 89 of file OperationCaller.hpp.
std::string RTT::OperationCaller< SignatureT >::mname [private] |
Definition at line 88 of file OperationCaller.hpp.