diff options
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/serialise.cc | 15 | ||||
-rw-r--r-- | src/libutil/serialise.hh | 6 |
2 files changed, 8 insertions, 13 deletions
diff --git a/src/libutil/serialise.cc b/src/libutil/serialise.cc index 3a8a01f16..80b111f08 100644 --- a/src/libutil/serialise.cc +++ b/src/libutil/serialise.cc @@ -266,20 +266,17 @@ std::unique_ptr<FinishSink> sourceToSink(std::function<void(Source &)> fun) } -std::unique_ptr<Source> sinkToSource( - std::function<void(Sink &)> fun, - std::function<void()> eof) +std::unique_ptr<Source> sinkToSource(std::function<void(Sink &)> fun) { struct SinkToSource : Source { typedef boost::coroutines2::coroutine<std::string> coro_t; std::function<void(Sink &)> fun; - std::function<void()> eof; std::optional<coro_t::pull_type> coro; - SinkToSource(std::function<void(Sink &)> fun, std::function<void()> eof) - : fun(fun), eof(eof) + SinkToSource(std::function<void(Sink &)> fun) + : fun(fun) { } @@ -298,7 +295,9 @@ std::unique_ptr<Source> sinkToSource( }); } - if (!*coro) { eof(); abort(); } + if (!*coro) { + throw EndOfFile("coroutine has finished"); + } if (pos == cur.size()) { if (!cur.empty()) { @@ -317,7 +316,7 @@ std::unique_ptr<Source> sinkToSource( } }; - return std::make_unique<SinkToSource>(fun, eof); + return std::make_unique<SinkToSource>(fun); } diff --git a/src/libutil/serialise.hh b/src/libutil/serialise.hh index c9294ba2d..0632e3109 100644 --- a/src/libutil/serialise.hh +++ b/src/libutil/serialise.hh @@ -338,11 +338,7 @@ std::unique_ptr<FinishSink> sourceToSink(std::function<void(Source &)> fun); * Convert a function that feeds data into a Sink into a Source. The * Source executes the function as a coroutine. */ -std::unique_ptr<Source> sinkToSource( - std::function<void(Sink &)> fun, - std::function<void()> eof = []() { - throw EndOfFile("coroutine has finished"); - }); +std::unique_ptr<Source> sinkToSource(std::function<void(Sink &)> fun); void writePadding(size_t len, Sink & sink); |