#include "file_fragment_writer.h" #include #include #include namespace NYT::NDetail { //////////////////////////////////////////////////////////////////////////////// class TFileFragmentWriter : public IFileFragmentWriter { public: explicit TFileFragmentWriter(std::unique_ptr stream) : Underlying_(std::move(stream)) { } TWriteFileFragmentResult GetWriteFragmentResult() const override { return TWriteFileFragmentResult(NodeFromYsonString(Underlying_->GetResponse())); } private: std::unique_ptr Underlying_; void DoWrite(const void* buf, size_t len) override { Underlying_->Write(buf, len); } void DoFinish() override { Underlying_->Finish(); } }; //////////////////////////////////////////////////////////////////////////////// IFileFragmentWriterPtr CreateFileFragmentWriter( const IRawClientPtr& rawClient, const IRequestRetryPolicyPtr& retryPolicy, const TDistributedWriteFileCookie& cookie, const TFileFragmentWriterOptions& options) { auto stream = NDetail::RequestWithRetry>( retryPolicy, [&] (TMutationId /*mutationId*/) { return rawClient->WriteFileFragment(cookie, options); } ); return MakeIntrusive(std::move(stream)); } //////////////////////////////////////////////////////////////////////////////// } // namespace NYT::NDetail