libqi-api  2.4.3.28
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Protected Attributes | Friends | List of all members
qi::Future< T > Class Template Reference

#include <executioncontext.hpp>

Public Types

typedef detail::FutureType< T >
::type 
ValueType
 
typedef detail::FutureType< T >
::typecast 
ValueTypeCast
 
typedef boost::function< void(Future
< T >) > 
Connection
 

Public Member Functions

 Future ()
 
 Future (const Future< T > &b)
 
bool operator== (const Future< T > &other)
 
Future< T > & operator= (const Future< T > &b)
 
bool operator< (const Future< T > &b) const
 
FutureUniqueId uniqueId () const
 
 Future (const ValueType &v, FutureCallbackType async=FutureCallbackType_Async)
 
const ValueType & value (int msecs=FutureTimeout_Infinite) const
 Return the value associated to a Future. More...
 
 operator const ValueTypeCast & () const
 
FutureState wait (int msecs=FutureTimeout_Infinite) const
 
FutureState wait (qi::Duration duration) const
 
FutureState waitFor (qi::Duration duration) const
 
FutureState wait (qi::SteadyClock::time_point timepoint) const
 
FutureState waitUntil (qi::SteadyClock::time_point timepoint) const
 
bool isFinished () const
 
bool isRunning () const
 
bool isCanceled () const
 
bool hasError (int msecs=FutureTimeout_Infinite) const
 
bool hasValue (int msecs=FutureTimeout_Infinite) const
 
const std::string & error (int msecs=FutureTimeout_Infinite) const
 
FutureSync< T > sync ()
 
void cancel ()
 
bool isCancelable () const
 
template<typename R >
Future< R > thenR (FutureCallbackType type, const boost::function< R(const Future< T > &)> &func)
 
template<typename R >
Future< R > thenR (const boost::function< R(const Future< T > &)> &func)
 
template<typename R >
Future< R > andThenR (FutureCallbackType type, const boost::function< R(const typename Future< T >::ValueType &)> &func)
 
template<typename R >
Future< R > andThenR (const boost::function< R(const typename Future< T >::ValueType &)> &func)
 
boost::function< void()> makeCanceler ()
 Get a functor that will cancel the future. More...
 
template<typename AF >
void connect (const AF &fun, FutureCallbackType type=FutureCallbackType_Async)
 
template<typename FUNCTYPE , typename ARG0 >
void connect (FUNCTYPE fun, ARG0 tracked,..., FutureCallbackType type=FutureCallbackType_Async)
 
void connectWithStrand (qi::Strand *strand, const boost::function< void(const Future< T > &)> &cb)
 
void _connect (const boost::function< void()> &s)
 
boost::shared_ptr
< detail::FutureBaseTyped< T > > 
impl ()
 
 Future (boost::shared_ptr< detail::FutureBaseTyped< T > > p)
 

Protected Attributes

boost::shared_ptr
< detail::FutureBaseTyped< T > > 
_p
 

Friends

class Promise< T >
 
class FutureSync< T >
 
class detail::AddUnwrap< T >
 
class ServiceBoundObject
 
template<typename R >
void adaptFutureUnwrap (Future< AnyReference > &f, Promise< R > &p)
 Feed a promise from a generic future which may be unwrapped if it contains itself a future. More...
 
template<typename FT , typename PT >
void adaptFuture (const Future< FT > &f, Promise< PT > &p)
 Feed a promise from a future of possibly different type. More...
 
template<typename FT , typename PT , typename CONV >
void adaptFuture (const Future< FT > &f, Promise< PT > &p, CONV converter)
 Similar to adaptFuture(f, p) but with a custom converter. More...
 
template<typename R >
void adaptFuture (Future< AnyReference > &f, Promise< R > &p)
 
template<typename FT >
void detail::futureCancelAdapter (boost::weak_ptr< detail::FutureBaseTyped< FT > > wf)
 

Detailed Description

template<typename T>
class qi::Future< T >

Class that represents a value that will be set later in time.

Definition at line 18 of file executioncontext.hpp.

Member Typedef Documentation

template<typename T>
typedef boost::function<void (Future<T>) > qi::Future< T >::Connection

Definition at line 364 of file future_fwd.hpp.

template<typename T>
typedef detail::FutureType<T>::type qi::Future< T >::ValueType

Definition at line 145 of file future_fwd.hpp.

template<typename T>
typedef detail::FutureType<T>::typecast qi::Future< T >::ValueTypeCast

Definition at line 146 of file future_fwd.hpp.

Constructor & Destructor Documentation

template<typename T>
qi::Future< T >::Future ( )
inline

Definition at line 149 of file future_fwd.hpp.

template<typename T>
qi::Future< T >::Future ( const Future< T > &  b)
inline

Definition at line 154 of file future_fwd.hpp.

template<typename T>
qi::Future< T >::Future ( const ValueType &  v,
FutureCallbackType  async = FutureCallbackType_Async 
)
inlineexplicit

Construct a Future that already contains a value.

Definition at line 181 of file future_fwd.hpp.

template<typename T>
qi::Future< T >::Future ( boost::shared_ptr< detail::FutureBaseTyped< T > >  p)
inline

Definition at line 420 of file future_fwd.hpp.

Member Function Documentation

template<typename T>
void qi::Future< T >::_connect ( const boost::function< void()> &  s)
inline

Definition at line 414 of file future_fwd.hpp.

template<typename T>
template<typename R >
Future< R > qi::Future< T >::andThenR ( FutureCallbackType  type,
const boost::function< R(const typename Future< T >::ValueType &)> &  func 
)
inline

Definition at line 121 of file future.hxx.

template<typename T>
template<typename R >
Future<R> qi::Future< T >::andThenR ( const boost::function< R(const typename Future< T >::ValueType &)> &  func)
inline

Definition at line 331 of file future_fwd.hpp.

template<typename T>
void qi::Future< T >::cancel ( )
inline

cancel() the asynchronous operation if possible Exact effect is controlled by the cancel implementation, but it is expected to set a value or an error to the Future as fast as possible. Note that cancelation may be asynchronous.

Exceptions
ExceptionState_FutureNotCancelableif isCancelable() is false.

Definition at line 300 of file future_fwd.hpp.

template<typename T>
template<typename AF >
void qi::Future< T >::connect ( const AF &  fun,
FutureCallbackType  type = FutureCallbackType_Async 
)
inline

Connect a callback function that will be called once when the Future finishes (that is, switches from running to an other state).

If type is sync, connect may block and call the callback synchronously if the future is already set.

It guaranteed that your callback will be called exactly once (unless the promise is never set or the promise is reset, which is deprecated).

Definition at line 376 of file future_fwd.hpp.

template<typename T>
template<typename FUNCTYPE , typename ARG0 >
void qi::Future< T >::connect ( FUNCTYPE  fun,
ARG0  tracked,
  ...,
FutureCallbackType  type = FutureCallbackType_Async 
)

Connect a callback with binding and tracking support.

If the first argument is a weak_ptr or a pointer inheriting from qi::Trackable, the callback will not be called if tracked object was destroyed.

template<typename T>
void qi::Future< T >::connectWithStrand ( qi::Strand *  strand,
const boost::function< void(const Future< T > &)> &  cb 
)
inline

Definition at line 404 of file future_fwd.hpp.

template<typename T>
const std::string& qi::Future< T >::error ( int  msecs = FutureTimeout_Infinite) const
inline
Parameters
msecs
Returns
the error throw on timeout throw if the future do not have an actual error.

Definition at line 283 of file future_fwd.hpp.

template<typename T>
bool qi::Future< T >::hasError ( int  msecs = FutureTimeout_Infinite) const
inline
Parameters
msecstimeout
Returns
true if the future has an error. throw in the following case:
  • timeout

Definition at line 264 of file future_fwd.hpp.

template<typename T>
bool qi::Future< T >::hasValue ( int  msecs = FutureTimeout_Infinite) const
inline
Parameters
msecstimeout
Returns
true if the future has a value. throw in the following case:
  • timeout

Definition at line 274 of file future_fwd.hpp.

template<typename T>
boost::shared_ptr<detail::FutureBaseTyped<T> > qi::Future< T >::impl ( )
inline

Definition at line 419 of file future_fwd.hpp.

template<typename T>
bool qi::Future< T >::isCancelable ( ) const
inline
Returns
true if the future can be canceled. This does not mean that cancel will succeed.

Definition at line 308 of file future_fwd.hpp.

template<typename T>
bool qi::Future< T >::isCanceled ( ) const
inline
Returns
true if the future has been canceled This means that the future has been fully canceled, not that a cancel was requested. do not throw

Definition at line 255 of file future_fwd.hpp.

template<typename T>
bool qi::Future< T >::isFinished ( ) const
inline
Returns
true if the future is finished do not throw

Definition at line 239 of file future_fwd.hpp.

template<typename T>
bool qi::Future< T >::isRunning ( ) const
inline
Returns
true if the future is running do not throw

Definition at line 246 of file future_fwd.hpp.

template<typename T >
boost::function< void()> qi::Future< T >::makeCanceler ( )

Get a functor that will cancel the future.

This functor will not keep the future alive, which is useful to avoid reference cycles. If the future does not exist anymore, this is a no-op.

Note
This function should only be useful for bindings, you probably don't need it.

Definition at line 230 of file future.hxx.

template<typename T>
qi::Future< T >::operator const ValueTypeCast & ( ) const
inline

same as value() with an infinite timeout.

Definition at line 205 of file future_fwd.hpp.

template<typename T>
bool qi::Future< T >::operator< ( const Future< T > &  b) const
inline

Definition at line 169 of file future_fwd.hpp.

template<typename T>
Future<T>& qi::Future< T >::operator= ( const Future< T > &  b)
inline

Definition at line 163 of file future_fwd.hpp.

template<typename T>
bool qi::Future< T >::operator== ( const Future< T > &  other)
inline

Definition at line 158 of file future_fwd.hpp.

template<typename T>
FutureSync<T> qi::Future< T >::sync ( )
inline

Make the future sync Should not be useful, use wait().

Definition at line 289 of file future_fwd.hpp.

template<typename T>
template<typename R >
Future< R > qi::Future< T >::thenR ( FutureCallbackType  type,
const boost::function< R(const Future< T > &)> &  func 
)
inline

Definition at line 105 of file future.hxx.

template<typename T>
template<typename R >
Future<R> qi::Future< T >::thenR ( const boost::function< R(const Future< T > &)> &  func)
inline

Definition at line 319 of file future_fwd.hpp.

template<typename T>
FutureUniqueId qi::Future< T >::uniqueId ( ) const
inline

Definition at line 174 of file future_fwd.hpp.

template<typename T>
const ValueType& qi::Future< T >::value ( int  msecs = FutureTimeout_Infinite) const
inline

Return the value associated to a Future.

Parameters
msecstimeout
Returns
the value

This function can throw for many reason:

  • wait timeout
  • user error
  • future canceled

if an error is set, then value throw a FutureUserException, others errors are FutureException.

Definition at line 200 of file future_fwd.hpp.

template<typename T>
FutureState qi::Future< T >::wait ( int  msecs = FutureTimeout_Infinite) const
inline

Wait for future to contain a value or an error

Parameters
msecsMaximum time to wait in milliseconds, 0 means return immediately.
Returns
a FutureState corresponding to the state of the future.

Definition at line 212 of file future_fwd.hpp.

template<typename T>
FutureState qi::Future< T >::wait ( qi::Duration  duration) const
inline

Wait for future to contain a value or an error

Parameters
durationMaximum time to wait
Returns
a FutureState corresponding to the state of the future.

Definition at line 219 of file future_fwd.hpp.

template<typename T>
FutureState qi::Future< T >::wait ( qi::SteadyClock::time_point  timepoint) const
inline

Wait for future to contain a value or an error

Parameters
timepointTime until which we can wait
Returns
a FutureState corresponding to the state of the future.

Definition at line 229 of file future_fwd.hpp.

template<typename T>
FutureState qi::Future< T >::waitFor ( qi::Duration  duration) const
inline

Definition at line 222 of file future_fwd.hpp.

template<typename T>
FutureState qi::Future< T >::waitUntil ( qi::SteadyClock::time_point  timepoint) const
inline

Definition at line 232 of file future_fwd.hpp.

Friends And Related Function Documentation

template<typename T>
template<typename FT , typename PT >
void adaptFuture ( const Future< FT > &  f,
Promise< PT > &  p 
)
friend

Feed a promise from a future of possibly different type.

Will monitor f, and bounce its state to p. Error and canceled state are bounced as is. Valued state is bounced through FutureValueConverter<FT, PT>::convert()

Definition at line 621 of file future.hxx.

template<typename T>
template<typename FT , typename PT , typename CONV >
void adaptFuture ( const Future< FT > &  f,
Promise< PT > &  p,
CONV  converter 
)
friend

Similar to adaptFuture(f, p) but with a custom converter.

Definition at line 631 of file future.hxx.

template<typename T>
template<typename R >
void adaptFuture ( Future< AnyReference > &  f,
Promise< R > &  p 
)
friend
template<typename T>
template<typename R >
void adaptFutureUnwrap ( Future< AnyReference > &  f,
Promise< R > &  p 
)
friend

Feed a promise from a generic future which may be unwrapped if it contains itself a future.

Definition at line 610 of file future.hxx.

template<typename T>
friend class detail::AddUnwrap< T >
friend

Definition at line 445 of file future_fwd.hpp.

template<typename T>
template<typename FT >
void detail::futureCancelAdapter ( boost::weak_ptr< detail::FutureBaseTyped< FT > >  wf)
friend
template<typename T>
friend class FutureSync< T >
friend

Definition at line 430 of file future_fwd.hpp.

template<typename T>
friend class Promise< T >
friend

Definition at line 429 of file future_fwd.hpp.

template<typename T>
friend class ServiceBoundObject
friend

Definition at line 448 of file future_fwd.hpp.

Member Data Documentation

template<typename T>
boost::shared_ptr< detail::FutureBaseTyped<T> > qi::Future< T >::_p
protected

Definition at line 428 of file future_fwd.hpp.


The documentation for this class was generated from the following files: