45 using Extras = map<string, string, std::less<>>;
48 FileSpec(
string filehandler,
const vector<string>& chunksIn)
49 : fileHandlerName{std::move(filehandler)}, chunks{chunksIn} {}
50 FileSpec(
string filehandler,
const vector<string>&& chunksIn)
51 : fileHandlerName{std::move(filehandler)}, chunks{chunksIn} {}
52 explicit FileSpec(
const vector<string>& chunksIn) : chunks{chunksIn} {}
53 explicit FileSpec(vector<string>&& chunksIn) : chunks{std::move(chunksIn)} {}
60 bool isDiskFile()
const;
62 static int parseUri(string_view uri,
string& outScheme,
string& outPath, Extras& outQueryParams);
70 int fromPathJsonUri(string_view pathJsonUri, string_view defaultFileHandlerName = {});
73 string toPathJsonUri()
const;
79 bool fromJson(string_view jsonStr);
84 string toJson()
const;
90 bool hasChunkSizes()
const;
92 int64_t getFileSize()
const;
94 string getSourceLocation()
const;
96 string getEasyPath()
const;
98 string getFileName()
const;
101 string getXXHash()
const;
104 bool operator==(
const FileSpec& rhs)
const;
107 const string& getExtra(string_view name)
const;
109 bool getExtra(string_view name,
string& outValue)
const;
111 bool hasExtra(string_view name)
const;
114 int getExtraAsInt(string_view name,
int defaultValue = 0)
const;
117 int64_t getExtraAsInt64(string_view name, int64_t defaultValue = 0)
const;
120 uint64_t getExtraAsUInt64(string_view name, uint64_t defaultValue = 0)
const;
123 double getExtraAsDouble(string_view name,
double defaultValue = 0)
const;
126 bool getExtraAsBool(string_view name,
bool defaultValue =
false)
const;
128 static int decodeQuery(string_view query,
string& outKey,
string& outValue);
129 static int urldecode(string_view in,
string& out);
131 void setExtra(string_view name, string_view value);
132 void setExtra(string_view name,
const char* value);
133 void setExtra(string_view name,
bool value);
134 void setExtra(string_view name,
const string& value);
135 template <
typename T>
136 void setExtra(string_view name, T value) {
137 extras[string(name)] = std::to_string(value);
141 void unsetExtra(string_view name);
143 string fileHandlerName;
146 vector<string> chunks;
147 vector<int64_t> chunkSizes;