| 
    rippled
    
   | 
 
Coroutines must run to completion. More...
#include <JobQueue.h>


Public Member Functions | |
| template<class F > | |
| Coro (Coro_create_t, JobQueue &, JobType, std::string const &, F &&) | |
| Coro (Coro const &)=delete | |
| Coro & | operator= (Coro const &)=delete | 
| ~Coro () | |
| void | yield () const | 
| Suspend coroutine execution.   | |
| bool | post () | 
| Schedule coroutine execution.   | |
| void | resume () | 
| Resume coroutine execution.   | |
| bool | runnable () const | 
| Returns true if the Coro is still runnable (has not returned).   | |
| void | expectEarlyExit () | 
| Once called, the Coro allows early exit without an assert.   | |
| void | join () | 
| Waits until coroutine returns from the user function.   | |
| T | shared_from_this (T... args) | 
| T | weak_from_this (T... args) | 
Private Attributes | |
| detail::LocalValues | lvs_ | 
| JobQueue & | jq_ | 
| JobType | type_ | 
| std::string | name_ | 
| bool | running_ | 
| std::mutex | mutex_ | 
| std::mutex | mutex_run_ | 
| std::condition_variable | cv_ | 
| boost::coroutines::asymmetric_coroutine< void >::pull_type | coro_ | 
| boost::coroutines::asymmetric_coroutine< void >::push_type * | yield_ | 
| bool | finished_ = false | 
Coroutines must run to completion.
Definition at line 42 of file JobQueue.h.
| ripple::JobQueue::Coro::Coro | ( | Coro_create_t | , | 
| JobQueue & | , | ||
| JobType | , | ||
| std::string const & | , | ||
| F && | |||
| ) | 
      
  | 
  delete | 
| ripple::JobQueue::Coro::~Coro | ( | ) | 
| void ripple::JobQueue::Coro::yield | ( | ) | const | 
| bool ripple::JobQueue::Coro::post | ( | ) | 
Schedule coroutine execution.
Effects: Returns immediately. A new job is scheduled to resume the execution of the coroutine. When the job runs, the coroutine's stack is restored and execution continues at the beginning of coroutine function or the statement after the previous call to yield. Undefined behavior if called after the coroutine has completed with a return (as opposed to a yield()). Undefined behavior if post() or resume() called consecutively without a corresponding yield.
| void ripple::JobQueue::Coro::resume | ( | ) | 
Resume coroutine execution.
Effects: The coroutine continues execution from where it last left off using this same thread. Undefined behavior if called after the coroutine has completed with a return (as opposed to a yield()). Undefined behavior if resume() or post() called consecutively without a corresponding yield.
| bool ripple::JobQueue::Coro::runnable | ( | ) | const | 
Returns true if the Coro is still runnable (has not returned).
| void ripple::JobQueue::Coro::expectEarlyExit | ( | ) | 
Once called, the Coro allows early exit without an assert.
| void ripple::JobQueue::Coro::join | ( | ) | 
Waits until coroutine returns from the user function.
      
  | 
  private | 
Definition at line 45 of file JobQueue.h.
      
  | 
  private | 
Definition at line 46 of file JobQueue.h.
      
  | 
  private | 
Definition at line 47 of file JobQueue.h.
      
  | 
  private | 
Definition at line 48 of file JobQueue.h.
      
  | 
  private | 
Definition at line 49 of file JobQueue.h.
      
  | 
  private | 
Definition at line 50 of file JobQueue.h.
      
  | 
  private | 
Definition at line 51 of file JobQueue.h.
      
  | 
  private | 
Definition at line 52 of file JobQueue.h.
      
  | 
  private | 
Definition at line 53 of file JobQueue.h.
      
  | 
  private | 
Definition at line 54 of file JobQueue.h.
      
  | 
  private | 
Definition at line 56 of file JobQueue.h.