summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/command/AllCommands.cxx1
-rw-r--r--src/command/PartitionCommands.cxx15
-rw-r--r--src/command/PartitionCommands.hxx3
3 files changed, 19 insertions, 0 deletions
diff --git a/src/command/AllCommands.cxx b/src/command/AllCommands.cxx
index 43dbaa691..ef4d34ded 100644
--- a/src/command/AllCommands.cxx
+++ b/src/command/AllCommands.cxx
@@ -137,6 +137,7 @@ static constexpr struct command commands[] = {
{ "next", PERMISSION_CONTROL, 0, 0, handle_next },
{ "notcommands", PERMISSION_NONE, 0, 0, handle_not_commands },
{ "outputs", PERMISSION_READ, 0, 0, handle_devices },
+ { "partition", PERMISSION_READ, 1, 1, handle_partition },
{ "password", PERMISSION_NONE, 1, 1, handle_password },
{ "pause", PERMISSION_CONTROL, 0, 1, handle_pause },
{ "ping", PERMISSION_NONE, 0, 0, handle_ping },
diff --git a/src/command/PartitionCommands.cxx b/src/command/PartitionCommands.cxx
index 5953437d2..7929b5998 100644
--- a/src/command/PartitionCommands.cxx
+++ b/src/command/PartitionCommands.cxx
@@ -29,6 +29,21 @@
#include "util/CharUtil.hxx"
CommandResult
+handle_partition(Client &client, Request request, Response &response)
+{
+ const char *name = request.front();
+ auto &instance = client.GetInstance();
+ auto *partition = instance.FindPartition(name);
+ if (partition == nullptr) {
+ response.Error(ACK_ERROR_NO_EXIST, "partition does not exist");
+ return CommandResult::ERROR;
+ }
+
+ client.SetPartition(*partition);
+ return CommandResult::OK;
+}
+
+CommandResult
handle_listpartitions(Client &client, Request, Response &r)
{
for (const auto &partition : client.GetInstance().partitions) {
diff --git a/src/command/PartitionCommands.hxx b/src/command/PartitionCommands.hxx
index 6c51beeb4..7a370a523 100644
--- a/src/command/PartitionCommands.hxx
+++ b/src/command/PartitionCommands.hxx
@@ -27,6 +27,9 @@ class Request;
class Response;
CommandResult
+handle_partition(Client &client, Request request, Response &response);
+
+CommandResult
handle_listpartitions(Client &client, Request request, Response &response);
CommandResult