add precondition for mount/unmount in commands response

This commit is contained in:
jcorporation 2022-10-07 13:49:29 +02:00
parent 209e4e940e
commit 2937a55582
4 changed files with 27 additions and 0 deletions

View File

@ -234,6 +234,12 @@ command_available([[maybe_unused]] const Partition &partition,
return neighbor_commands_available(partition.instance);
#endif
#ifdef ENABLE_DATABASE
if (StringIsEqual(cmd->cmd, "mount") ||
StringIsEqual(cmd->cmd, "unmount"))
return mount_commands_available(partition.instance);
#endif
if (StringIsEqual(cmd->cmd, "save") ||
StringIsEqual(cmd->cmd, "rm") ||
StringIsEqual(cmd->cmd, "rename") ||

View File

@ -275,3 +275,15 @@ handle_unmount(Client &client, Request args, Response &r)
return CommandResult::OK;
}
bool
mount_commands_available(Instance &instance) noexcept
{
#ifdef ENABLE_DATABASE
if (auto *db = dynamic_cast<SimpleDatabase *>(instance.GetDatabase())) {
return db->HasCache();
}
#endif
return false;
}

View File

@ -22,6 +22,7 @@
#include "CommandResult.hxx"
struct Instance;
class Client;
class Storage;
class Request;
@ -42,4 +43,8 @@ handle_mount(Client &client, Request request, Response &response);
CommandResult
handle_unmount(Client &client, Request request, Response &response);
[[gnu::pure]]
bool
mount_commands_available(Instance &instance) noexcept;
#endif

View File

@ -86,6 +86,10 @@ public:
return *root;
}
bool HasCache() const noexcept {
return !cache_path.IsNull();
}
void Save();
/**