Skip to content

Commit efe81d3

Browse files
committed
Use capy::spawn API for coroutine tasks
1 parent dbb20c1 commit efe81d3

File tree

1 file changed

+8
-18
lines changed

1 file changed

+8
-18
lines changed

src/server/route_handler.cpp

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -60,25 +60,15 @@ spawn(
6060
return this->suspend(
6161
[ex = this->ex, t = std::move(t)](resumer resume) mutable
6262
{
63-
auto h = t.release();
64-
65-
h.promise().on_done = [resume, h]()
66-
{
67-
auto& r = h.promise().result;
68-
if(r.index() == 2)
63+
capy::spawn(ex, std::move(t),
64+
[resume](system::result<
65+
route_result, std::exception_ptr> r)
6966
{
70-
auto ep = std::get<2>(r);
71-
h.destroy();
72-
resume(ep);
73-
return;
74-
}
75-
auto rv = std::move(std::get<1>(r));
76-
auto resume_ = resume; // would be destroyed
77-
h.destroy();
78-
resume_(rv);
79-
};
80-
81-
ex.post([h]() { h.resume(); });
67+
if(r.has_error())
68+
resume(r.error());
69+
else
70+
resume(*r);
71+
});
8272
});
8373
}
8474

0 commit comments

Comments
 (0)