99
1010#include < Poco/Timestamp.h>
1111#include < Poco/Util/AbstractConfiguration.h>
12+ #include < Poco/JSON/Object.h>
1213#include < Core/Defines.h>
1314#include < IO/ReadSettings.h>
1415#include < IO/WriteSettings.h>
@@ -101,6 +102,10 @@ struct ObjectMetadata
101102 ObjectAttributes attributes;
102103};
103104
105+ struct DataFileInfo ;
106+ class DataFileMetaInfo ;
107+ using DataFileMetaInfoPtr = std::shared_ptr<DataFileMetaInfo>;
108+
104109struct RelativePathWithMetadata
105110{
106111 class CommandInTaskResponse
@@ -109,31 +114,35 @@ struct RelativePathWithMetadata
109114 CommandInTaskResponse () = default ;
110115 explicit CommandInTaskResponse (const std::string & task);
111116
112- bool is_parsed () const { return successfully_parsed; }
113- void set_retry_after_us (Poco::Timestamp::TimeDiff time_us) { retry_after_us = time_us; }
117+ bool isParsed () const { return successfully_parsed; }
118+ void setFilePath (const std::string & file_path_ ) { file_path = file_path_; }
119+ void setRetryAfterUs (Poco::Timestamp::TimeDiff time_us) { retry_after_us = time_us; }
120+ void setFileMetaInfo (DataFileMetaInfoPtr file_meta_info_ ) { file_meta_info = file_meta_info_; }
121+
122+ std::string toString () const ;
123+
124+ std::optional<std::string> getFilePath () const { return file_path; }
114125
115- std::string to_string () const ;
126+ std::optional<Poco::Timestamp::TimeDiff> getRetryAfterUs () const { return retry_after_us; }
116127
117- std::optional<Poco::Timestamp::TimeDiff> get_retry_after_us () const { return retry_after_us ; }
128+ std::optional<DataFileMetaInfoPtr> getFileMetaInfo () const { return file_meta_info ; }
118129
119130 private:
120131 bool successfully_parsed = false ;
132+ std::optional<std::string> file_path;
121133 std::optional<Poco::Timestamp::TimeDiff> retry_after_us;
134+ std::optional<DataFileMetaInfoPtr> file_meta_info;
122135 };
123136
124137 String relative_path;
125138 std::optional<ObjectMetadata> metadata;
126139 CommandInTaskResponse command;
140+ std::optional<DataFileMetaInfoPtr> file_meta_info;
127141
128142 RelativePathWithMetadata () = default ;
129143
130- explicit RelativePathWithMetadata (const String & task_string, std::optional<ObjectMetadata> metadata_ = std::nullopt )
131- : metadata(std::move(metadata_))
132- , command(task_string)
133- {
134- if (!command.is_parsed ())
135- relative_path = task_string;
136- }
144+ explicit RelativePathWithMetadata (const String & task_string, std::optional<ObjectMetadata> metadata_ = std::nullopt );
145+ explicit RelativePathWithMetadata (const DataFileInfo & info, std::optional<ObjectMetadata> metadata_ = std::nullopt );
137146
138147 virtual ~RelativePathWithMetadata () = default ;
139148
@@ -145,6 +154,10 @@ struct RelativePathWithMetadata
145154 virtual std::string getPathToArchive () const { throw Exception (ErrorCodes::LOGICAL_ERROR, " Not an archive" ); }
146155 virtual size_t fileSizeInArchive () const { throw Exception (ErrorCodes::LOGICAL_ERROR, " Not an archive" ); }
147156
157+ void setFileMetaInfo (DataFileMetaInfoPtr file_meta_info_ ) { file_meta_info = file_meta_info_; }
158+ void setFileMetaInfo (std::optional<DataFileMetaInfoPtr> file_meta_info_ ) { file_meta_info = file_meta_info_; }
159+ std::optional<DataFileMetaInfoPtr> getFileMetaInfo () const { return file_meta_info; }
160+
148161 void loadMetadata (ObjectStoragePtr object_storage, bool ignore_non_existent_file);
149162 const CommandInTaskResponse & getCommand () const { return command; }
150163};
0 commit comments