Pigweed
 
Loading...
Searching...
No Matches
pw::async2::PendFuncTask< Func > Class Template Reference

#include <pend_func_task.h>

Inheritance diagram for pw::async2::PendFuncTask< Func >:
pw::async2::Task

Public Types

using CallableType = Func
 

Public Member Functions

 PendFuncTask (Func &&func)
 
- Public Member Functions inherited from pw::async2::Task
 Task (const Task &)=delete
 
 Task (Task &&)=delete
 
Taskoperator= (const Task &)=delete
 
Taskoperator= (Task &&)=delete
 
Poll Pend (Context &cx)
 
bool IsRegistered () const
 
void Deregister ()
 
void Destroy ()
 

Private Member Functions

Poll DoPend (Context &cx) final
 

Detailed Description

template<typename Func = Function<Poll<>(Context&)>>
class pw::async2::PendFuncTask< Func >

A Task that delegates to a provided function func.

The provided func may be any callable (function, lambda, or similar) which accepts a Context& and returns a Poll<>.

The resulting Task will implement Pend by invoking func.

Constructor & Destructor Documentation

◆ PendFuncTask()

template<typename Func = Function<Poll<>(Context&)>>
pw::async2::PendFuncTask< Func >::PendFuncTask ( Func &&  func)
inline

Create a new Task which delegates Pend to func.

See class docs for more details.

Member Function Documentation

◆ DoPend()

template<typename Func = Function<Poll<>(Context&)>>
Poll pw::async2::PendFuncTask< Func >::DoPend ( Context )
inlinefinalprivatevirtual

Attempts to advance this Task to completion.

This method should not perform synchronous waiting, as doing so may block the main Dispatcher loop and prevent other Task s from progressing. Because of this, Task s should not invoke blocking Dispatcher methods such as RunUntilComplete.

Task s should also avoid invoking RunUntilStalled` on their own Dispatcher``.

Returns Ready if complete, or Pending if the Task was not yet able to complete.

If Pending is returned, the Task must ensure it is woken up when it is able to make progress. To do this, Task::Pend must arrange for Waker::Wake to be called, either by storing a copy of the Waker away to be awoken by another system (such as an interrupt handler).

Implements pw::async2::Task.


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