26 asyncWork.work.template bind<AsyncZLibTransformStreamT, &AsyncZLibTransformStreamT::work>(*
this);
27 asyncWork.callback.template bind<AsyncZLibTransformStreamT, &AsyncZLibTransformStreamT::afterWork>(*
this);
32 typename T_AsyncEventLoop::LoopWork asyncWork;
34 void setEventLoop(T_AsyncEventLoop& loop) { eventLoop = &loop; }
37 T_AsyncEventLoop* eventLoop =
nullptr;
39 virtual Result onProcess(Span<const char> input, Span<char> output)
override
41 SC_ASYNC_STREAMS_ASSERT_RELEASE(not finalizing);
45 SC_TRY_MSG(eventLoop !=
nullptr,
"AsyncZLibTransformStreamT::setEventLoop not called");
46 return asyncWork.start(*eventLoop);
49 virtual Result onFinalize(Span<char> output)
override
54 SC_TRY_MSG(eventLoop !=
nullptr,
"AsyncZLibTransformStreamT::setEventLoop not called");
55 return asyncWork.start(*eventLoop);
58 void afterWork(
typename T_AsyncEventLoop::LoopWork::Result&)
62 AsyncTransformStream::afterFinalize(savedOutput, streamEnded);
66 AsyncTransformStream::afterProcess(savedInput, savedOutput);
72 return finalizing ? stream.finalize(savedOutput, streamEnded) : stream.process(savedInput, savedOutput);
75 bool finalizing =
false;
76 bool streamEnded =
false;
78 Span<const char> savedInput;
79 Span<char> savedOutput;