diff options
author | Max Kellermann <max@musicpd.org> | 2017-02-20 12:37:14 +0100 |
---|---|---|
committer | Max Kellermann <max@musicpd.org> | 2017-02-25 10:26:33 +0100 |
commit | e9e853b19ab8989c639e7f431ede7a377a427579 (patch) | |
tree | e29bb7457aa9fd4bd9a571a7972f3b324afd3d8f /src/command | |
parent | e48ea5f23a6a1601e8eeb6d0594f8f0d89f47fdb (diff) |
command/Partition: add command "partition" to switch to another partition
Diffstat (limited to 'src/command')
-rw-r--r-- | src/command/AllCommands.cxx | 1 | ||||
-rw-r--r-- | src/command/PartitionCommands.cxx | 15 | ||||
-rw-r--r-- | src/command/PartitionCommands.hxx | 3 |
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 |