Orocos Real-Time Toolkit
2.8.3
|
Implements call, send, collect, collectIfDone for all function arities. More...
#include <rtt/internal/LocalOperationCaller.hpp>
Public Types | |
typedef FunctionT | Signature |
typedef boost::function_traits< Signature >::result_type | result_type |
typedef boost::function_traits< Signature >::result_type | result_reference |
typedef boost::function_traits< Signature > | traits |
typedef boost::shared_ptr< LocalOperationCallerImpl > | shared_ptr |
Public Member Functions | |
LocalOperationCallerImpl () | |
virtual bool | ready () const |
Available such that implementations have a way to expose their ready-ness, ie being able to do the call. More... | |
virtual bool | isError () const |
void | executeAndDispose () |
Execute functionality and free this object. More... | |
void | dispose () |
As long as dispose (or executeAndDispose() ) is not called, this object will not be destroyed. More... | |
SendHandle< Signature > | do_send (shared_ptr cl) |
SendHandle< Signature > | send_impl () |
template<class T1 > | |
SendHandle< Signature > | send_impl (T1 a1) |
template<class T1 , class T2 > | |
SendHandle< Signature > | send_impl (T1 a1, T2 a2) |
template<class T1 , class T2 , class T3 > | |
SendHandle< Signature > | send_impl (T1 a1, T2 a2, T3 a3) |
template<class T1 , class T2 , class T3 , class T4 > | |
SendHandle< Signature > | send_impl (T1 a1, T2 a2, T3 a3, T4 a4) |
template<class T1 , class T2 , class T3 , class T4 , class T5 > | |
SendHandle< Signature > | send_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 > | |
SendHandle< Signature > | send_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 > | |
SendHandle< Signature > | send_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7) |
SendStatus | collectIfDone_impl () |
template<class T1 > | |
SendStatus | collectIfDone_impl (T1 &a1) |
template<class T1 , class T2 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2) |
template<class T1 , class T2 , class T3 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2, T3 &a3) |
template<class T1 , class T2 , class T3 , class T4 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4) |
template<class T1 , class T2 , class T3 , class T4 , class T5 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4, T5 &a5) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4, T5 &a5, T6 &a6) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4, T5 &a5, T6 &a6, T7 &a7) |
bool | checkCaller () |
SendStatus | collect_impl () |
template<class T1 > | |
SendStatus | collect_impl (T1 &a1) |
template<class T1 , class T2 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2) |
template<class T1 , class T2 , class T3 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2, T3 &a3) |
template<class T1 , class T2 , class T3 , class T4 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4) |
template<class T1 , class T2 , class T3 , class T4 , class T5 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4, T5 &a5) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4, T5 &a5, T6 &a6) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4, T5 &a5, T6 &a6, T7 &a7) |
template<class Xignored > | |
result_type | call_impl () |
Invoke this operator if the method has no arguments. More... | |
template<class T1 > | |
result_type | call_impl (T1 a1) |
Invoke this operator if the method has one argument. More... | |
template<class T1 , class T2 > | |
result_type | call_impl (T1 a1, T2 a2) |
template<class T1 , class T2 , class T3 > | |
result_type | call_impl (T1 a1, T2 a2, T3 a3) |
template<class T1 , class T2 , class T3 , class T4 > | |
result_type | call_impl (T1 a1, T2 a2, T3 a3, T4 a4) |
template<class T1 , class T2 , class T3 , class T4 , class T5 > | |
result_type | call_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 > | |
result_type | call_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 > | |
result_type | call_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7) |
result_type | ret_impl () |
template<class T1 > | |
result_type | ret_impl (T1 a1) |
This function has the same signature of call() and returns the stored return value, and tries to return all arguments. More... | |
template<class T1 , class T2 > | |
result_type | ret_impl (T1 a1, T2 a2) |
template<class T1 , class T2 , class T3 > | |
result_type | ret_impl (T1 a1, T2 a2, T3 a3) |
template<class T1 , class T2 , class T3 , class T4 > | |
result_type | ret_impl (T1 a1, T2 a2, T3 a3, T4 a4) |
template<class T1 , class T2 , class T3 , class T4 , class T5 > | |
result_type | ret_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 > | |
result_type | ret_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6) |
template<class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 > | |
result_type | ret_impl (T1 a1, T2 a2, T3 a3, T4 a4, T5 a5, T6 a6, T7 a7) |
virtual shared_ptr | cloneRT () const =0 |
virtual OperationCallerBase< FunctionT > * | cloneI (ExecutionEngine *caller) const =0 |
Creates a new clone of this method using operator new(). More... | |
virtual void | setOwner (ExecutionEngine *ee) |
Set the ExecutionEngine of the task which owns this method. More... | |
virtual void | setCaller (ExecutionEngine *ee) |
Sets the caller's engine of this operation. More... | |
bool | setThread (ExecutionThread et, ExecutionEngine *executor) |
Sets the Thread execution policy of this object. More... | |
ExecutionThread | getThread () const |
void | reportError () |
Executed when the operation execution resulted in a C++ exception. More... | |
bool | isSend () |
Helpful function to tell us if this operations is to be sent or not. More... | |
ExecutionEngine * | getMessageProcessor () const |
Protected Types | |
typedef BindStorage< FunctionT > | Store |
Protected Attributes | |
base::OperationCallerBase< FunctionT >::shared_ptr | self |
Used to refcount self as long as dispose() is not called. More... | |
ExecutionEngine * | myengine |
ExecutionEngine * | caller |
ExecutionThread | met |
Implements call, send, collect, collectIfDone for all function arities.
You can pass arguments by (const) value and by (const) reference. Passing pointers is 'accidentally' supported in-process, it will not work with out-of-process calls. The send takes all arguments (C++ doesn't know pure out args), the collect() only takes the return value and the 'reference' arguments (if any)
If this object is disposed, the collection of results is no longer possible and this will generate a SendFailure at caller side.
Definition at line 77 of file LocalOperationCaller.hpp.
typedef boost::function_traits<Signature>::result_type RTT::internal::LocalOperationCallerImpl< FunctionT >::result_reference |
Definition at line 86 of file LocalOperationCaller.hpp.
typedef boost::function_traits<Signature>::result_type RTT::internal::LocalOperationCallerImpl< FunctionT >::result_type |
Definition at line 85 of file LocalOperationCaller.hpp.
typedef boost::shared_ptr<LocalOperationCallerImpl> RTT::internal::LocalOperationCallerImpl< FunctionT >::shared_ptr |
Definition at line 89 of file LocalOperationCaller.hpp.
typedef FunctionT RTT::internal::LocalOperationCallerImpl< FunctionT >::Signature |
Definition at line 84 of file LocalOperationCaller.hpp.
|
protected |
Definition at line 620 of file LocalOperationCaller.hpp.
typedef boost::function_traits<Signature> RTT::internal::LocalOperationCallerImpl< FunctionT >::traits |
Definition at line 87 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 83 of file LocalOperationCaller.hpp.
|
inline |
Invoke this operator if the method has no arguments.
Definition at line 351 of file LocalOperationCaller.hpp.
References RTT::SendHandle< Signature >::collect(), RTT::base::OperationCallerInterface::isSend(), RTT::internal::NA< T >::na(), RTT::internal::LocalOperationCallerImpl< FunctionT >::send_impl(), RTT::SendFailure, and RTT::SendSuccess.
|
inline |
Invoke this operator if the method has one argument.
Definition at line 375 of file LocalOperationCaller.hpp.
References RTT::SendHandle< Signature >::collect(), RTT::base::OperationCallerInterface::isSend(), RTT::internal::NA< T >::na(), RTT::SendFailure, and RTT::SendSuccess.
|
inline |
Definition at line 399 of file LocalOperationCaller.hpp.
References RTT::SendHandle< Signature >::collect(), RTT::base::OperationCallerInterface::isSend(), RTT::internal::NA< T >::na(), RTT::SendFailure, and RTT::SendSuccess.
|
inline |
Definition at line 421 of file LocalOperationCaller.hpp.
References RTT::SendHandle< Signature >::collect(), RTT::base::OperationCallerInterface::isSend(), RTT::internal::NA< T >::na(), RTT::SendFailure, and RTT::SendSuccess.
|
inline |
Definition at line 443 of file LocalOperationCaller.hpp.
References RTT::SendHandle< Signature >::collect(), RTT::base::OperationCallerInterface::isSend(), RTT::internal::NA< T >::na(), RTT::SendFailure, and RTT::SendSuccess.
|
inline |
Definition at line 465 of file LocalOperationCaller.hpp.
References RTT::SendHandle< Signature >::collect(), RTT::base::OperationCallerInterface::isSend(), RTT::internal::NA< T >::na(), RTT::SendFailure, and RTT::SendSuccess.
|
inline |
Definition at line 487 of file LocalOperationCaller.hpp.
References RTT::SendHandle< Signature >::collect(), RTT::base::OperationCallerInterface::isSend(), RTT::internal::NA< T >::na(), RTT::SendFailure, and RTT::SendSuccess.
|
inline |
Definition at line 509 of file LocalOperationCaller.hpp.
References RTT::SendHandle< Signature >::collect(), RTT::base::OperationCallerInterface::isSend(), RTT::internal::NA< T >::na(), RTT::SendFailure, and RTT::SendSuccess.
|
inline |
Definition at line 284 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, and RTT::Error.
Referenced by RTT::internal::LocalOperationCallerImpl< FunctionT >::collect_impl().
|
pure virtualinherited |
Creates a new clone of this method using operator new().
caller | The ExecutionEngine of the task that wishes to call this method. |
|
pure virtual |
|
inline |
Definition at line 293 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::CollectFailure, RTT::internal::LocalOperationCallerImpl< FunctionT >::collectIfDone_impl(), and RTT::ExecutionEngine::waitForMessages().
|
inline |
Definition at line 299 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::CollectFailure, RTT::internal::LocalOperationCallerImpl< FunctionT >::collectIfDone_impl(), and RTT::ExecutionEngine::waitForMessages().
|
inline |
Definition at line 306 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::CollectFailure, RTT::internal::LocalOperationCallerImpl< FunctionT >::collectIfDone_impl(), and RTT::ExecutionEngine::waitForMessages().
|
inline |
Definition at line 313 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::CollectFailure, RTT::internal::LocalOperationCallerImpl< FunctionT >::collectIfDone_impl(), and RTT::ExecutionEngine::waitForMessages().
|
inline |
Definition at line 320 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::CollectFailure, RTT::internal::LocalOperationCallerImpl< FunctionT >::collectIfDone_impl(), and RTT::ExecutionEngine::waitForMessages().
|
inline |
Definition at line 327 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::CollectFailure, RTT::internal::LocalOperationCallerImpl< FunctionT >::collectIfDone_impl(), and RTT::ExecutionEngine::waitForMessages().
|
inline |
Definition at line 334 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::CollectFailure, RTT::internal::LocalOperationCallerImpl< FunctionT >::collectIfDone_impl(), and RTT::ExecutionEngine::waitForMessages().
|
inline |
Definition at line 341 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::CollectFailure, RTT::internal::LocalOperationCallerImpl< FunctionT >::collectIfDone_impl(), and RTT::ExecutionEngine::waitForMessages().
|
inline |
Definition at line 204 of file LocalOperationCaller.hpp.
References RTT::SendNotReady, and RTT::SendSuccess.
Referenced by RTT::internal::LocalOperationCallerImpl< FunctionT >::collect_impl().
|
inline |
Definition at line 215 of file LocalOperationCaller.hpp.
References RTT::SendNotReady, and RTT::SendSuccess.
|
inline |
Definition at line 225 of file LocalOperationCaller.hpp.
References RTT::SendNotReady, and RTT::SendSuccess.
|
inline |
Definition at line 235 of file LocalOperationCaller.hpp.
References RTT::SendNotReady, and RTT::SendSuccess.
|
inline |
Definition at line 245 of file LocalOperationCaller.hpp.
References RTT::SendNotReady, and RTT::SendSuccess.
|
inline |
Definition at line 255 of file LocalOperationCaller.hpp.
References RTT::SendNotReady, and RTT::SendSuccess.
|
inline |
Definition at line 265 of file LocalOperationCaller.hpp.
References RTT::SendNotReady, and RTT::SendSuccess.
|
inline |
Definition at line 275 of file LocalOperationCaller.hpp.
References RTT::SendNotReady, and RTT::SendSuccess.
|
inlinevirtual |
As long as dispose (or executeAndDispose() ) is not called, this object will not be destroyed.
Implements RTT::base::DisposableInterface.
Definition at line 126 of file LocalOperationCaller.hpp.
Referenced by RTT::internal::LocalOperationCallerImpl< FunctionT >::executeAndDispose().
|
inline |
Definition at line 130 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::getMessageProcessor(), and RTT::ExecutionEngine::process().
Referenced by RTT::internal::LocalOperationCallerImpl< FunctionT >::send_impl().
|
inlinevirtual |
Execute functionality and free this object.
You may no longer use this object after calling this method.
Implements RTT::base::DisposableInterface.
Definition at line 99 of file LocalOperationCaller.hpp.
References RTT::base::OperationCallerInterface::caller, RTT::internal::LocalOperationCallerImpl< FunctionT >::dispose(), RTT::ExecutionEngine::process(), and RTT::base::OperationCallerInterface::reportError().
|
inherited |
Definition at line 34 of file OperationCallerInterface.cpp.
References RTT::internal::GlobalEngine::Instance(), RTT::base::OperationCallerInterface::met, RTT::base::OperationCallerInterface::myengine, and RTT::OwnThread.
Referenced by RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
|
inlineinherited |
Definition at line 67 of file OperationCallerInterface.hpp.
|
inlinevirtual |
Definition at line 95 of file LocalOperationCaller.hpp.
|
inlineinherited |
Helpful function to tell us if this operations is to be sent or not.
Definition at line 79 of file OperationCallerInterface.hpp.
References RTT::OwnThread.
Referenced by RTT::internal::LocalOperationCallerImpl< FunctionT >::call_impl().
|
inlinevirtual |
Available such that implementations have a way to expose their ready-ness, ie being able to do the call.
Implements RTT::base::OperationCallerInterface.
Definition at line 91 of file LocalOperationCaller.hpp.
|
inherited |
Executed when the operation execution resulted in a C++ exception.
Must report the error to the ExecutionEngine of the owner of this operation.
Definition at line 44 of file OperationCallerInterface.cpp.
References RTT::base::OperationCallerInterface::myengine, and RTT::ExecutionEngine::setExceptionTask().
Referenced by RTT::internal::FusedMCallDataSource< Signature >::evaluate(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::executeAndDispose().
|
inline |
Definition at line 530 of file LocalOperationCaller.hpp.
|
inline |
This function has the same signature of call() and returns the stored return value, and tries to return all arguments.
Definition at line 542 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 553 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 564 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 575 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 586 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 597 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 608 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT().
|
inline |
Definition at line 143 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
Referenced by RTT::internal::LocalOperationCallerImpl< FunctionT >::call_impl().
|
inline |
Definition at line 148 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
|
inline |
Definition at line 156 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
|
inline |
Definition at line 164 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
|
inline |
Definition at line 172 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
|
inline |
Definition at line 180 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
|
inline |
Definition at line 188 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
|
inline |
Definition at line 196 of file LocalOperationCaller.hpp.
References RTT::internal::LocalOperationCallerImpl< FunctionT >::cloneRT(), and RTT::internal::LocalOperationCallerImpl< FunctionT >::do_send().
|
virtualinherited |
Sets the caller's engine of this operation.
This object will be used to test if asynchronous messaging is required.
ee | The ExecutionEngine of the component that is calling this operation. |
Definition at line 24 of file OperationCallerInterface.cpp.
References RTT::base::OperationCallerInterface::caller.
Referenced by RTT::internal::LocalOperationCaller< bool(std::string) >::LocalOperationCaller(), RTT::internal::RemoteOperationCaller< OperationCallerT >::RemoteOperationCaller(), and RTT::internal::RemoteOperationCaller< OperationCallerT >::setCaller().
|
virtualinherited |
Set the ExecutionEngine of the task which owns this method.
ee | The ExecutionEngine of the component that owns this operation. |
Definition at line 20 of file OperationCallerInterface.cpp.
References RTT::base::OperationCallerInterface::myengine.
Referenced by RTT::internal::LocalOperationCaller< bool(std::string) >::LocalOperationCaller(), and RTT::base::OperationCallerInterface::setThread().
|
inherited |
Sets the Thread execution policy of this object.
et | OwnThread or ClientThread. |
executor | The engine of the component owning this operation. In case it is not yet owned by a component, executor may be null. |
Definition at line 28 of file OperationCallerInterface.cpp.
References RTT::base::OperationCallerInterface::met, and RTT::base::OperationCallerInterface::setOwner().
Referenced by RTT::internal::LocalOperationCaller< bool(std::string) >::LocalOperationCaller(), and RTT::Service::setOperationThread().
|
protectedinherited |
Definition at line 85 of file OperationCallerInterface.hpp.
Referenced by RTT::internal::LocalOperationCallerImpl< FunctionT >::checkCaller(), RTT::internal::RemoteOperationCaller< OperationCallerT >::cloneI(), RTT::internal::LocalOperationCallerImpl< FunctionT >::collect_impl(), RTT::internal::LocalOperationCallerImpl< FunctionT >::executeAndDispose(), RTT::internal::RemoteOperationCaller< OperationCallerT >::RemoteOperationCaller(), RTT::base::OperationCallerInterface::setCaller(), and RTT::base::OperationCallerBase< FunctionT >::~OperationCallerBase().
|
protectedinherited |
Definition at line 86 of file OperationCallerInterface.hpp.
Referenced by RTT::base::OperationCallerInterface::getMessageProcessor(), and RTT::base::OperationCallerInterface::setThread().
|
protectedinherited |
Definition at line 84 of file OperationCallerInterface.hpp.
Referenced by RTT::base::OperationCallerInterface::getMessageProcessor(), RTT::base::OperationCallerInterface::reportError(), and RTT::base::OperationCallerInterface::setOwner().
|
protected |
Used to refcount self as long as dispose() is not called.
This refcount is real-time since both shared_ptr and object were allocated with the rt_allocator class.
Definition at line 626 of file LocalOperationCaller.hpp.