From 2ba7152d23f9dcbdc99680fbd0bc87d41868b57a Mon Sep 17 00:00:00 2001 From: hiddenpath Date: Fri, 27 Jun 2025 17:41:44 +0300 Subject: YT-23616: Introduce WriteFile RPC implementation commit_hash:627b3fd7979f64a7365a590bca09a1c53c23464a --- yt/cpp/mapreduce/http_client/raw_client.cpp | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'yt/cpp/mapreduce/http_client/raw_client.cpp') diff --git a/yt/cpp/mapreduce/http_client/raw_client.cpp b/yt/cpp/mapreduce/http_client/raw_client.cpp index f50b239c2aa..d2c64257222 100644 --- a/yt/cpp/mapreduce/http_client/raw_client.cpp +++ b/yt/cpp/mapreduce/http_client/raw_client.cpp @@ -767,6 +767,48 @@ std::unique_ptr THttpRawClient::ReadTable( return std::make_unique(std::move(responseInfo)); } +struct THttpRequestStream + : public IOutputStream +{ +public: + THttpRequestStream(NHttpClient::IHttpRequestPtr request) + : Request_(std::move(request)) + , Underlying_(Request_->GetStream()) + { } + +private: + void DoWrite(const void* buf, size_t len) override + { + Underlying_->Write(buf, len); + } + + void DoFinish() override + { + Underlying_->Finish(); + Request_->Finish()->GetResponse(); + } + +private: + NHttpClient::IHttpRequestPtr Request_; + IOutputStream* Underlying_; +}; + +std::unique_ptr THttpRawClient::WriteFile( + const TTransactionId& transactionId, + const TRichYPath& path, + const TFileWriterOptions& options) +{ + THttpHeader header("PUT", GetWriteFileCommand(Context_.Config->ApiVersion)); + header.AddTransactionId(transactionId); + header.SetRequestCompression(ToString(Context_.Config->ContentEncoding)); + header.MergeParameters(FormIORequestParameters(path, options)); + + TRequestConfig config; + config.IsHeavy = true; + auto request = StartRequestWithoutRetry(Context_, header, config); + return std::make_unique(std::move(request)); +} + std::unique_ptr THttpRawClient::ReadTablePartition( const TString& cookie, const TMaybe& format, -- cgit v1.3