#pragma once #include #include namespace NYT { class IProxyOutput; class IOutputStreamWithResponse; //////////////////////////////////////////////////////////////////////////////// class TNodeTableWriter : public INodeWriterImpl { public: explicit TNodeTableWriter(THolder output, ::NYson::EYsonFormat format = ::NYson::EYsonFormat::Binary); ~TNodeTableWriter() override; void AddRow(const TNode& row, size_t tableIndex) override; void AddRow(TNode&& row, size_t tableIndex) override; size_t GetBufferMemoryUsage() const override; size_t GetTableCount() const override; void FinishTable(size_t) override; void Abort() override; private: std::unique_ptr Output_; TVector> Writers_; }; //////////////////////////////////////////////////////////////////////////////// class TNodeTableFragmentWriter : public ITableFragmentWriter { public: explicit TNodeTableFragmentWriter(std::unique_ptr output, ::NYson::EYsonFormat format = ::NYson::EYsonFormat::Binary); TWriteTableFragmentResult GetWriteFragmentResult() const override; void AddRow(const TNode& row) override; void Finish() override; private: std::unique_ptr Output_; std::unique_ptr<::NYson::TYsonWriter> Writer_; }; //////////////////////////////////////////////////////////////////////////////// } // namespace NYT