12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #pragma once
- #include <yt/cpp/mapreduce/interface/io.h>
- #include <util/generic/vector.h>
- #include <util/generic/ptr.h>
- #include <util/stream/file.h>
- #include <util/stream/buffered.h>
- namespace NYT {
- ////////////////////////////////////////////////////////////////////////////////
- namespace NDetail {
- ////////////////////////////////////////////////////////////////////////////////
- class TJobWriterStream {
- public:
- explicit TJobWriterStream(int fd);
- explicit TJobWriterStream(const TFile& file);
- ~TJobWriterStream();
- public:
- static constexpr size_t BufferSize = 1 << 20;
- TFile FdFile;
- TUnbufferedFileOutput FdOutput;
- TBufferedOutput BufferedOutput;
- };
- ////////////////////////////////////////////////////////////////////////////////
- } // namespace NDetail
- ////////////////////////////////////////////////////////////////////////////////
- class TJobWriter
- : public IProxyOutput
- {
- public:
- explicit TJobWriter(size_t outputTableCount);
- explicit TJobWriter(const TVector<TFile>& fileList);
- size_t GetBufferMemoryUsage() const override;
- size_t GetStreamCount() const override;
- IOutputStream* GetStream(size_t tableIndex) const override;
- void OnRowFinished(size_t tableIndex) override;
- private:
- TVector<THolder<NDetail::TJobWriterStream>> Streams_;
- };
- ////////////////////////////////////////////////////////////////////////////////
- class TSingleStreamJobWriter
- : public IProxyOutput
- {
- public:
- explicit TSingleStreamJobWriter(size_t tableIndex);
- size_t GetBufferMemoryUsage() const override;
- size_t GetStreamCount() const override;
- IOutputStream* GetStream(size_t tableIndex) const override;
- void OnRowFinished(size_t tableIndex) override;
- private:
- const size_t TableIndex_;
- THolder<NDetail::TJobWriterStream> Stream_;
- };
- ////////////////////////////////////////////////////////////////////////////////
- } // namespace NYT
|