#pragma once #include "Launcher.h" #include class Stream; class WaitableStream; class StreamBasedLauncher : public Launcher { WaitableStream *stream; Stream *rStream; std::vector outputBytes; bool upgradeMode = false; public: StreamBasedLauncher(boost::program_options::variables_map& options); virtual ~StreamBasedLauncher(); virtual bool Go(int timeout = 0); virtual void DumpOutput(); protected: void SetupStream(WaitableStream* aStream, Stream* wrapped = nullptr); private: void write(const void *p, size_t n); ssize_t read(void * p, size_t n); };