39 #ifndef ORO_CORELIB_SEND_HANDLE_HPP 40 #define ORO_CORELIB_SEND_HANDLE_HPP 42 #include "rtt-config.h" 48 #include <boost/type_traits.hpp> 57 template<
class Signature>
59 :
public internal::CollectSignature<boost::function_traits<typename internal::CollectType<Signature>::Ft>::arity,
60 typename internal::CollectType<Signature>::Ft,
61 internal::CollectBase<Signature>* >,
62 public internal::ReturnSignature<boost::function_traits<Signature>::arity,
64 typename internal::CollectBase<Signature>::shared_ptr >
67 typedef internal::CollectSignature<boost::function_traits<typename internal::CollectType<Signature>::Ft>::arity,
94 if (this->RBase::impl && this->RBase::impl == implementation)
97 if ( !this->RBase::impl && implementation ) {
98 log(
Error) <<
"Tried to assign SendHandle from incompatible type."<<
endlog();
101 if ( !this->CBase::cimpl && implementation ) {
102 log(
Error) <<
"Tried to assign SendHandle from incompatible type."<<
endlog();
111 operator bool()
const {
return ready();}
117 bool ready()
const {
return this->CBase::cimpl && this->RBase::impl ;}
119 using CBase::collect;
127 return this->impl->collect();
SendHandle(const SendHandle &hs)
ft::function_type< fttype >::type Ft
internal::ReturnSignature< boost::function_traits< Signature >::arity, Signature, typename internal::CollectBase< Signature >::shared_ptr > RBase
boost::shared_ptr< CollectBase< F > > shared_ptr
The SendHandle is used to collect the result values of an asynchronous invocation. The template argument Signature must have the same type as the method being invoked.
An object that is executable and is freed after execution.
SendHandle & operator=(base::DisposableInterface *implementation)
SendStatus collect() const
Contains TaskContext, Activity, OperationCaller, Operation, Property, InputPort, OutputPort, Attribute.
internal::CollectSignature< boost::function_traits< typename internal::CollectType< Signature >::Ft >::arity, typename internal::CollectType< Signature >::Ft, internal::CollectBase< Signature > * > CBase
static Logger::LogFunction endlog()
SendHandle(typename internal::CollectBase< Signature >::shared_ptr coll)