Exemplo n.º 1
0
 FutureState FutureBase::wait(qi::SteadyClock::time_point timepoint) const {
   boost::recursive_mutex::scoped_lock lock(_p->_mutex);
   if (_p->_state.load() != FutureState_Running)
     return FutureState(_p->_state.load());
   _p->_cond.wait_until(lock, timepoint, boost::bind(&waitFinished, _p));
   return FutureState(_p->_state.load());
 }
Exemplo n.º 2
0
 FutureState FutureBase::wait(qi::Duration duration) const {
   boost::recursive_mutex::scoped_lock lock(_p->_mutex);
   if (_p->_state.load() != FutureState_Running)
     return FutureState(_p->_state.load());
   _p->_cond.wait_for(lock, duration, boost::bind(&waitFinished, _p));
   return FutureState(_p->_state.load());
 }
Exemplo n.º 3
0
 FutureState FutureBase::wait(int msecs) const {
   boost::recursive_mutex::scoped_lock lock(_p->_mutex);
   if (_p->_state.load() != FutureState_Running)
     return FutureState(_p->_state.load());
   if (msecs == FutureTimeout_Infinite)
     _p->_cond.wait(lock, boost::bind(&waitFinished, _p));
   else if (msecs > 0)
     _p->_cond.wait_for(lock, qi::MilliSeconds(msecs),
         boost::bind(&waitFinished, _p));
   // msecs <= 0 : do nothing just return the state
   return FutureState(_p->_state.load());
 }
Exemplo n.º 4
0
 FutureState FutureBase::state() const
 {
   return FutureState(_p->_state.load());
 }
Exemplo n.º 5
0
 bool FutureBase::isFinished() const {
   FutureState v = FutureState(_p->_state.load());
   return v == FutureState_FinishedWithValue || v == FutureState_FinishedWithError || v == FutureState_Canceled;
 }
Exemplo n.º 6
0
 FutureState FutureBase::state() const
 {
   return FutureState(*_p->_state);
 }