Remove EmptyGenerateFileLocation.
GitOrigin-RevId: 83cacf7526496f5ef3a2cb2ae0df19d384bdf04a
This commit is contained in:
parent
fbb2dc6ccb
commit
ef071614b9
@ -185,7 +185,7 @@ class FileDb : public FileDbInterface {
|
|||||||
}
|
}
|
||||||
string generate_key;
|
string generate_key;
|
||||||
if (file_data.generate_.type_ == GenerateFileLocation::Type::Full) {
|
if (file_data.generate_.type_ == GenerateFileLocation::Type::Full) {
|
||||||
generate_key = as_key(file_data.generate_.full_);
|
generate_key = as_key(file_data.generate_.full());
|
||||||
}
|
}
|
||||||
send_closure(file_db_actor_, &FileDbActor::clear_file_data, id, remote_key, local_key, generate_key);
|
send_closure(file_db_actor_, &FileDbActor::clear_file_data, id, remote_key, local_key, generate_key);
|
||||||
}
|
}
|
||||||
@ -200,7 +200,7 @@ class FileDb : public FileDbInterface {
|
|||||||
}
|
}
|
||||||
string generate_key;
|
string generate_key;
|
||||||
if (file_data.generate_.type_ == GenerateFileLocation::Type::Full && new_generate) {
|
if (file_data.generate_.type_ == GenerateFileLocation::Type::Full && new_generate) {
|
||||||
generate_key = as_key(file_data.generate_.full_);
|
generate_key = as_key(file_data.generate_.full());
|
||||||
}
|
}
|
||||||
LOG(DEBUG) << "SAVE " << id << " -> " << file_data << " "
|
LOG(DEBUG) << "SAVE " << id << " -> " << file_data << " "
|
||||||
<< tag("remote", format::as_hex_dump<4>(Slice(remote_key)))
|
<< tag("remote", format::as_hex_dump<4>(Slice(remote_key)))
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
namespace td {
|
namespace td {
|
||||||
|
|
||||||
struct LocalFileLocation;
|
class LocalFileLocation;
|
||||||
class ResourceManager;
|
class ResourceManager;
|
||||||
|
|
||||||
class FileLoaderActor : public NetQueryCallback {
|
class FileLoaderActor : public NetQueryCallback {
|
||||||
|
@ -695,8 +695,10 @@ inline StringBuilder &operator<<(StringBuilder &string_builder,
|
|||||||
return string_builder << "]";
|
return string_builder << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
struct RemoteFileLocation {
|
class RemoteFileLocation {
|
||||||
enum class Type : int32 { Empty, Partial, Full } type_;
|
public:
|
||||||
|
enum class Type : int32 { Empty, Partial, Full };
|
||||||
|
Type type_;
|
||||||
Variant<EmptyRemoteFileLocation, PartialRemoteFileLocation, FullRemoteFileLocation> variant_;
|
Variant<EmptyRemoteFileLocation, PartialRemoteFileLocation, FullRemoteFileLocation> variant_;
|
||||||
|
|
||||||
template <class StorerT>
|
template <class StorerT>
|
||||||
@ -710,18 +712,12 @@ struct RemoteFileLocation {
|
|||||||
});
|
});
|
||||||
CHECK(ok);
|
CHECK(ok);
|
||||||
}
|
}
|
||||||
EmptyRemoteFileLocation &empty_location() {
|
|
||||||
return variant_.get<0>();
|
|
||||||
}
|
|
||||||
PartialRemoteFileLocation &partial() {
|
PartialRemoteFileLocation &partial() {
|
||||||
return variant_.get<1>();
|
return variant_.get<1>();
|
||||||
}
|
}
|
||||||
FullRemoteFileLocation &full() {
|
FullRemoteFileLocation &full() {
|
||||||
return variant_.get<2>();
|
return variant_.get<2>();
|
||||||
}
|
}
|
||||||
const EmptyRemoteFileLocation &empty_location() const {
|
|
||||||
return variant_.get<0>();
|
|
||||||
}
|
|
||||||
const PartialRemoteFileLocation &partial() const {
|
const PartialRemoteFileLocation &partial() const {
|
||||||
return variant_.get<1>();
|
return variant_.get<1>();
|
||||||
}
|
}
|
||||||
@ -734,7 +730,7 @@ struct RemoteFileLocation {
|
|||||||
switch (type_) {
|
switch (type_) {
|
||||||
case Type::Empty: {
|
case Type::Empty: {
|
||||||
variant_ = EmptyRemoteFileLocation();
|
variant_ = EmptyRemoteFileLocation();
|
||||||
return empty_location().parse(parser);
|
return;
|
||||||
}
|
}
|
||||||
case Type::Partial: {
|
case Type::Partial: {
|
||||||
variant_ = PartialRemoteFileLocation();
|
variant_ = PartialRemoteFileLocation();
|
||||||
@ -792,8 +788,8 @@ inline bool operator!=(const EmptyLocalFileLocation &lhs, const EmptyLocalFileLo
|
|||||||
struct PartialLocalFileLocation {
|
struct PartialLocalFileLocation {
|
||||||
FileType type_;
|
FileType type_;
|
||||||
string path_;
|
string path_;
|
||||||
int part_size_;
|
int32 part_size_;
|
||||||
int ready_part_count_;
|
int32 ready_part_count_;
|
||||||
string iv_;
|
string iv_;
|
||||||
|
|
||||||
template <class StorerT>
|
template <class StorerT>
|
||||||
@ -880,23 +876,18 @@ inline StringBuilder &operator<<(StringBuilder &sb, const FullLocalFileLocation
|
|||||||
return sb << tag("path", location.path_);
|
return sb << tag("path", location.path_);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct LocalFileLocation {
|
class LocalFileLocation {
|
||||||
|
public:
|
||||||
enum class Type : int32 { Empty, Partial, Full };
|
enum class Type : int32 { Empty, Partial, Full };
|
||||||
Type type_;
|
Type type_;
|
||||||
Variant<EmptyLocalFileLocation, PartialLocalFileLocation, FullLocalFileLocation> variant_;
|
Variant<EmptyLocalFileLocation, PartialLocalFileLocation, FullLocalFileLocation> variant_;
|
||||||
|
|
||||||
EmptyLocalFileLocation &empty_location() {
|
|
||||||
return variant_.get<0>();
|
|
||||||
}
|
|
||||||
PartialLocalFileLocation &partial() {
|
PartialLocalFileLocation &partial() {
|
||||||
return variant_.get<1>();
|
return variant_.get<1>();
|
||||||
}
|
}
|
||||||
FullLocalFileLocation &full() {
|
FullLocalFileLocation &full() {
|
||||||
return variant_.get<2>();
|
return variant_.get<2>();
|
||||||
}
|
}
|
||||||
const EmptyLocalFileLocation &empty_location() const {
|
|
||||||
return variant_.get<0>();
|
|
||||||
}
|
|
||||||
const PartialLocalFileLocation &partial() const {
|
const PartialLocalFileLocation &partial() const {
|
||||||
return variant_.get<1>();
|
return variant_.get<1>();
|
||||||
}
|
}
|
||||||
@ -920,7 +911,7 @@ struct LocalFileLocation {
|
|||||||
switch (type_) {
|
switch (type_) {
|
||||||
case Type::Empty:
|
case Type::Empty:
|
||||||
variant_ = EmptyLocalFileLocation();
|
variant_ = EmptyLocalFileLocation();
|
||||||
return parse(empty_location(), parser);
|
return;
|
||||||
case Type::Partial:
|
case Type::Partial:
|
||||||
variant_ = PartialLocalFileLocation();
|
variant_ = PartialLocalFileLocation();
|
||||||
return parse(partial(), parser);
|
return parse(partial(), parser);
|
||||||
@ -950,23 +941,6 @@ inline bool operator!=(const LocalFileLocation &lhs, const LocalFileLocation &rh
|
|||||||
return !(lhs == rhs);
|
return !(lhs == rhs);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct EmptyGenerateFileLocation {
|
|
||||||
template <class StorerT>
|
|
||||||
void store(StorerT &storer) const {
|
|
||||||
}
|
|
||||||
template <class ParserT>
|
|
||||||
void parse(ParserT &parser) {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
inline bool operator==(const EmptyGenerateFileLocation &lhs, const EmptyGenerateFileLocation &rhs) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool operator!=(const EmptyGenerateFileLocation &lhs, const EmptyGenerateFileLocation &rhs) {
|
|
||||||
return !(lhs == rhs);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct FullGenerateFileLocation {
|
struct FullGenerateFileLocation {
|
||||||
FileType type_{FileType::None};
|
FileType type_{FileType::None};
|
||||||
string original_path_;
|
string original_path_;
|
||||||
@ -1019,33 +993,41 @@ inline StringBuilder &operator<<(StringBuilder &string_builder,
|
|||||||
<< tag("conversion", full_generated_file_location.conversion_) << "]";
|
<< tag("conversion", full_generated_file_location.conversion_) << "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
struct GenerateFileLocation {
|
class GenerateFileLocation {
|
||||||
|
public:
|
||||||
enum class Type : int32 { Empty, Full };
|
enum class Type : int32 { Empty, Full };
|
||||||
Type type_;
|
Type type_;
|
||||||
EmptyGenerateFileLocation empty_;
|
|
||||||
FullGenerateFileLocation full_;
|
FullGenerateFileLocation &full() {
|
||||||
|
CHECK(type_ == Type::Full);
|
||||||
|
return full_;
|
||||||
|
}
|
||||||
|
const FullGenerateFileLocation &full() const {
|
||||||
|
CHECK(type_ == Type::Full);
|
||||||
|
return full_;
|
||||||
|
}
|
||||||
|
|
||||||
template <class StorerT>
|
template <class StorerT>
|
||||||
void store(StorerT &storer) const {
|
void store(StorerT &storer) const {
|
||||||
storer.store_int(static_cast<int32>(type_));
|
td::store(type_, storer);
|
||||||
switch (type_) {
|
switch (type_) {
|
||||||
case Type::Empty:
|
case Type::Empty:
|
||||||
return empty_.store(storer);
|
return;
|
||||||
case Type::Full:
|
case Type::Full:
|
||||||
return full_.store(storer);
|
return td::store(full_, storer);
|
||||||
}
|
}
|
||||||
UNREACHABLE();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class ParserT>
|
template <class ParserT>
|
||||||
void parse(ParserT &parser) {
|
void parse(ParserT &parser) {
|
||||||
type_ = static_cast<Type>(parser.fetch_int());
|
td::parse(type_, parser);
|
||||||
switch (type_) {
|
switch (type_) {
|
||||||
case Type::Empty:
|
case Type::Empty:
|
||||||
return empty_.parse(parser);
|
return;
|
||||||
case Type::Full:
|
case Type::Full:
|
||||||
return full_.parse(parser);
|
return td::parse(full_, parser);
|
||||||
}
|
}
|
||||||
return parser.set_error("Invalid type in LocalFileLocation");
|
return parser.set_error("Invalid type in GenerateFileLocation");
|
||||||
}
|
}
|
||||||
|
|
||||||
GenerateFileLocation() : type_(Type::Empty) {
|
GenerateFileLocation() : type_(Type::Empty) {
|
||||||
@ -1053,9 +1035,13 @@ struct GenerateFileLocation {
|
|||||||
|
|
||||||
explicit GenerateFileLocation(const FullGenerateFileLocation &full) : type_(Type::Full), full_(full) {
|
explicit GenerateFileLocation(const FullGenerateFileLocation &full) : type_(Type::Full), full_(full) {
|
||||||
}
|
}
|
||||||
|
|
||||||
GenerateFileLocation(FileType file_type, string original_path, string conversion)
|
GenerateFileLocation(FileType file_type, string original_path, string conversion)
|
||||||
: type_(Type::Full), full_(file_type, std::move(original_path), std::move(conversion)) {
|
: type_(Type::Full), full_{file_type, std::move(original_path), std::move(conversion)} {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
FullGenerateFileLocation full_;
|
||||||
};
|
};
|
||||||
|
|
||||||
inline bool operator==(const GenerateFileLocation &lhs, const GenerateFileLocation &rhs) {
|
inline bool operator==(const GenerateFileLocation &lhs, const GenerateFileLocation &rhs) {
|
||||||
@ -1064,9 +1050,9 @@ inline bool operator==(const GenerateFileLocation &lhs, const GenerateFileLocati
|
|||||||
}
|
}
|
||||||
switch (lhs.type_) {
|
switch (lhs.type_) {
|
||||||
case GenerateFileLocation::Type::Empty:
|
case GenerateFileLocation::Type::Empty:
|
||||||
return lhs.empty_ == rhs.empty_;
|
return true;
|
||||||
case GenerateFileLocation::Type::Full:
|
case GenerateFileLocation::Type::Full:
|
||||||
return lhs.full_ == rhs.full_;
|
return lhs.full() == rhs.full();
|
||||||
}
|
}
|
||||||
UNREACHABLE();
|
UNREACHABLE();
|
||||||
return false;
|
return false;
|
||||||
|
@ -184,7 +184,7 @@ bool FileNode::need_pmc_flush() const {
|
|||||||
|
|
||||||
bool has_generate_location = generate_.type_ == GenerateFileLocation::Type::Full;
|
bool has_generate_location = generate_.type_ == GenerateFileLocation::Type::Full;
|
||||||
// Do not save "#file_id#" conversion.
|
// Do not save "#file_id#" conversion.
|
||||||
if (has_generate_location && begins_with(generate_.full_.conversion_, "#file_id#")) {
|
if (has_generate_location && begins_with(generate_.full().conversion_, "#file_id#")) {
|
||||||
has_generate_location = false;
|
has_generate_location = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ bool FileView::has_generate_location() const {
|
|||||||
}
|
}
|
||||||
const FullGenerateFileLocation &FileView::generate_location() const {
|
const FullGenerateFileLocation &FileView::generate_location() const {
|
||||||
CHECK(has_generate_location());
|
CHECK(has_generate_location());
|
||||||
return node_->generate_.full_;
|
return node_->generate_.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
int64 FileView::size() const {
|
int64 FileView::size() const {
|
||||||
@ -1112,7 +1112,7 @@ void FileManager::flush_to_pmc(FileNode *node, bool new_remote, bool new_local,
|
|||||||
data.generate_ = node->generate_;
|
data.generate_ = node->generate_;
|
||||||
|
|
||||||
if (data.generate_.type_ == GenerateFileLocation::Type::Full &&
|
if (data.generate_.type_ == GenerateFileLocation::Type::Full &&
|
||||||
begins_with(data.generate_.full_.conversion_, "#file_id#")) {
|
begins_with(data.generate_.full().conversion_, "#file_id#")) {
|
||||||
data.generate_ = GenerateFileLocation();
|
data.generate_ = GenerateFileLocation();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1542,7 +1542,7 @@ void FileManager::run_generate(FileNode *node) {
|
|||||||
|
|
||||||
QueryId id = queries_container_.create(Query{file_id, Query::Generate});
|
QueryId id = queries_container_.create(Query{file_id, Query::Generate});
|
||||||
node->generate_id_ = id;
|
node->generate_id_ = id;
|
||||||
send_closure(file_generate_manager_, &FileGenerateManager::generate_file, id, node->generate_.full_, node->local_,
|
send_closure(file_generate_manager_, &FileGenerateManager::generate_file, id, node->generate_.full(), node->local_,
|
||||||
node->name_, [file_manager = this, id] {
|
node->name_, [file_manager = this, id] {
|
||||||
class Callback : public FileGenerateCallback {
|
class Callback : public FileGenerateCallback {
|
||||||
ActorId<FileManager> actor_;
|
ActorId<FileManager> actor_;
|
||||||
|
Reference in New Issue
Block a user