command/Partition: add command "partition" to switch to another partition

This commit is contained in:
Max Kellermann
2017-02-20 12:37:14 +01:00
parent e48ea5f23a
commit e9e853b19a
4 changed files with 33 additions and 0 deletions

View File

@@ -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 },

View File

@@ -28,6 +28,21 @@
#include "player/Thread.hxx"
#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)
{

View File

@@ -26,6 +26,9 @@ class Client;
class Request;
class Response;
CommandResult
handle_partition(Client &client, Request request, Response &response);
CommandResult
handle_listpartitions(Client &client, Request request, Response &response);