client_reader.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #pragma once
  2. #include <yt/cpp/mapreduce/common/fwd.h>
  3. #include <yt/cpp/mapreduce/http/context.h>
  4. #include <yt/cpp/mapreduce/http/requests.h>
  5. #include <yt/cpp/mapreduce/http/http.h>
  6. #include <yt/cpp/mapreduce/http/http_client.h>
  7. namespace NYT {
  8. class TPingableTransaction;
  9. ////////////////////////////////////////////////////////////////////////////////
  10. class TClientReader
  11. : public TRawTableReader
  12. {
  13. public:
  14. TClientReader(
  15. const TRichYPath& path,
  16. const IRawClientPtr& rawClient,
  17. IClientRetryPolicyPtr clientRetryPolicy,
  18. ITransactionPingerPtr transactionPinger,
  19. const TClientContext& context,
  20. const TTransactionId& transactionId,
  21. const TFormat& format,
  22. const TTableReaderOptions& options,
  23. bool useFormatFromTableAttributes);
  24. bool Retry(
  25. const TMaybe<ui32>& rangeIndex,
  26. const TMaybe<ui64>& rowIndex,
  27. const std::exception_ptr& error) override;
  28. void ResetRetries() override;
  29. bool HasRangeIndices() const override { return true; }
  30. protected:
  31. size_t DoRead(void* buf, size_t len) override;
  32. private:
  33. TRichYPath Path_;
  34. const IRawClientPtr RawClient_;
  35. const IClientRetryPolicyPtr ClientRetryPolicy_;
  36. const TClientContext Context_;
  37. TTransactionId ParentTransactionId_;
  38. TMaybe<TFormat> Format_;
  39. TTableReaderOptions Options_;
  40. std::unique_ptr<TPingableTransaction> ReadTransaction_;
  41. std::unique_ptr<IInputStream> Input_;
  42. IRequestRetryPolicyPtr CurrentRequestRetryPolicy_;
  43. private:
  44. void TransformYPath();
  45. void CreateRequest(const TMaybe<ui32>& rangeIndex = Nothing(), const TMaybe<ui64>& rowIndex = Nothing());
  46. };
  47. ////////////////////////////////////////////////////////////////////////////////
  48. } // namespace NYT