#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include namespace NYT { //////////////////////////////////////////////////////////////////////////////// class TRetrylessWriter : public TRawTableWriter { public: template TRetrylessWriter( const TClientContext& context, const TTransactionId& parentId, const TMaybe& format, const TRichYPath& path, size_t bufferSize, const TWriterOptions& options) : BufferSize_(bufferSize) , AutoFinish_(options.AutoFinish_) { Output_ = NDetail::NRawClient::WriteTable(context, parentId, path, format, options); } ~TRetrylessWriter() override; void NotifyRowEnd() override; void Abort() override; size_t GetBufferMemoryUsage() const override; protected: void DoWrite(const void* buf, size_t len) override; void DoFinish() override; private: const size_t BufferSize_ = 0; const bool AutoFinish_; bool Running_ = true; std::unique_ptr Output_; }; //////////////////////////////////////////////////////////////////////////////// } // namespace NYT