This commit is contained in:
aozhiwei 2023-05-24 22:38:19 +08:00
parent 43ee63e993
commit 15ea46ca30
2 changed files with 33 additions and 1 deletions

View File

@ -2,8 +2,11 @@
#include <iostream>
#include <f8/timer.h>
#include "coroutine.h"
#include "comgr.h"
#include "app.h"
void Awaiter::Await(std::shared_ptr<Awaiter> notifyer)
{
@ -122,3 +125,17 @@ void Coroutine::DoResume()
{
CoResume();
}
void TimerPromise::DoAwait()
{
std::shared_ptr<TimerPromise> self = std::static_pointer_cast<TimerPromise>(Awaiter::shared_from_this());
f8::Timer::Instance()->SetTimeout
(
time_,
[self] (int event, const a8::Args* args) mutable
{
if (event == a8::TIMER_EXEC_EVENT) {
}
});
}

View File

@ -45,7 +45,7 @@ protected:
friend class Coroutine;
};
class Promise : public Awaiter
class Promise : public Awaiter, public std::enable_shared_from_this<Promise>
{
protected:
@ -53,6 +53,21 @@ protected:
};
class TimerPromise : public Promise, public std::enable_shared_from_this<TimerPromise>
{
public:
TimerPromise(long long time) { time_ = time; };
protected:
virtual void DoAwait() override;
private:
long long time_ = 0;
};
class Coroutine : public Awaiter
{
public: