Orocos Real-Time Toolkit
2.9.0
|
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 () const |
template<class T1 > | |
SendStatus | collectIfDone_impl (T1 &a1) const |
template<class T1 , class T2 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2) const |
template<class T1 , class T2 , class T3 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2, T3 &a3) const |
template<class T1 , class T2 , class T3 , class T4 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4) const |
template<class T1 , class T2 , class T3 , class T4 , class T5 > | |
SendStatus | collectIfDone_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4, T5 &a5) const |
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) const |
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) const |
bool | checkCaller () const |
SendStatus | collect_impl () const |
template<class T1 > | |
SendStatus | collect_impl (T1 &a1) const |
template<class T1 , class T2 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2) const |
template<class T1 , class T2 , class T3 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2, T3 &a3) const |
template<class T1 , class T2 , class T3 , class T4 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4) const |
template<class T1 , class T2 , class T3 , class T4 , class T5 > | |
SendStatus | collect_impl (T1 &a1, T2 &a2, T3 &a3, T4 &a4, T5 &a5) const |
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) const |
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) const |
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 () const |
template<class T1 > | |
result_type | ret_impl (T1 a1) const |
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) const |
template<class T1 , class T2 , class T3 > | |
result_type | ret_impl (T1 a1, T2 a2, T3 a3) const |
template<class T1 , class T2 , class T3 , class T4 > | |
result_type | ret_impl (T1 a1, T2 a2, T3 a3, T4 a4) const |
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) const |
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) const |
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) const |
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 621 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 352 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 376 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 400 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 422 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 444 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 466 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 488 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 510 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 294 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 300 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 307 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 314 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 321 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 328 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 335 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 342 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 42 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.
|
inherited |
Helpful function to tell us if this operations is to be sent or not.
Sending is only required if the operation is OwnThread and in a different thread than the caller.
Definition at line 34 of file OperationCallerInterface.cpp.
References RTT::ClientThread, RTT::ExecutionEngine::isSelf(), RTT::base::OperationCallerInterface::met, and RTT::base::OperationCallerInterface::myengine.
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 52 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 531 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 543 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 554 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 565 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 576 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 587 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 598 of file LocalOperationCaller.hpp.
|
inline |
Definition at line 609 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 87 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 88 of file OperationCallerInterface.hpp.
Referenced by RTT::base::OperationCallerInterface::getMessageProcessor(), RTT::base::OperationCallerInterface::isSend(), and RTT::base::OperationCallerInterface::setThread().
|
protectedinherited |
|
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 627 of file LocalOperationCaller.hpp.