diff options
author | Max Kellermann <max@duempel.org> | 2015-08-13 12:48:31 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2015-08-13 12:48:31 +0200 |
commit | 86e036c3933def22b6ff0eae5bcf9cd7103240e7 (patch) | |
tree | e8d812461e22b189cea3b3df908515cebbfe0cd1 /src/command/OtherCommands.cxx | |
parent | 7652a2986b0d0ad55b2776685130f1c68d7108c7 (diff) | |
download | mpd-86e036c3933def22b6ff0eae5bcf9cd7103240e7.tar.gz mpd-86e036c3933def22b6ff0eae5bcf9cd7103240e7.tar.xz mpd-86e036c3933def22b6ff0eae5bcf9cd7103240e7.zip |
command: pass Response object to command callbacks
Diffstat (limited to 'src/command/OtherCommands.cxx')
-rw-r--r-- | src/command/OtherCommands.cxx | 81 |
1 files changed, 31 insertions, 50 deletions
diff --git a/src/command/OtherCommands.cxx b/src/command/OtherCommands.cxx index c1346ca44..96415962f 100644 --- a/src/command/OtherCommands.cxx +++ b/src/command/OtherCommands.cxx @@ -69,9 +69,8 @@ print_spl_list(Response &r, const PlaylistVector &list) } CommandResult -handle_urlhandlers(Client &client, gcc_unused Request args) +handle_urlhandlers(Client &client, gcc_unused Request args, Response &r) { - Response r(client); if (client.IsLocal()) r.Format("handler: file://\n"); print_supported_uri_schemes(r); @@ -79,29 +78,31 @@ handle_urlhandlers(Client &client, gcc_unused Request args) } CommandResult -handle_decoders(Client &client, gcc_unused Request args) +handle_decoders(gcc_unused Client &client, gcc_unused Request args, + Response &r) { - Response r(client); decoder_list_print(r); return CommandResult::OK; } CommandResult -handle_tagtypes(Client &client, gcc_unused Request args) +handle_tagtypes(gcc_unused Client &client, gcc_unused Request request, + Response &r) { - Response r(client); tag_print_types(r); return CommandResult::OK; } CommandResult -handle_kill(gcc_unused Client &client, gcc_unused Request args) +handle_kill(gcc_unused Client &client, gcc_unused Request request, + gcc_unused Response &r) { return CommandResult::KILL; } CommandResult -handle_close(gcc_unused Client &client, gcc_unused Request args) +handle_close(gcc_unused Client &client, gcc_unused Request args, + gcc_unused Response &r) { return CommandResult::FINISH; } @@ -115,16 +116,14 @@ print_tag(TagType type, const char *value, void *ctx) } CommandResult -handle_listfiles(Client &client, Request args) +handle_listfiles(Client &client, Request args, Response &r) { - Response r(client); - /* default is root directory */ const auto uri = args.GetOptional(0, ""); if (memcmp(uri, "file:///", 8) == 0) /* list local directory */ - return handle_listfiles_local(client, uri + 7); + return handle_listfiles_local(client, r, uri + 7); #ifdef ENABLE_DATABASE if (uri_has_scheme(uri)) @@ -142,7 +141,7 @@ handle_listfiles(Client &client, Request args) uri); /* fall back to entries from database if we have no storage */ - return handle_listfiles_db(client, uri); + return handle_listfiles_db(client, r, uri); #else r.Error(ACK_ERROR_NO_EXIST, "No database"); return CommandResult::ERROR; @@ -156,13 +155,11 @@ static constexpr tag_handler print_tag_handler = { }; CommandResult -handle_lsinfo(Client &client, Request args) +handle_lsinfo(Client &client, Request args, Response &r) { /* default is root directory */ const auto uri = args.GetOptional(0, ""); - Response r(client); - if (memcmp(uri, "file:///", 8) == 0) { /* print information about an arbitrary local file */ const char *path_utf8 = uri + 7; @@ -202,7 +199,7 @@ handle_lsinfo(Client &client, Request args) } #ifdef ENABLE_DATABASE - CommandResult result = handle_lsinfo2(client, args); + CommandResult result = handle_lsinfo2(client, args, r); if (result != CommandResult::OK) return result; #endif @@ -224,11 +221,9 @@ handle_lsinfo(Client &client, Request args) #ifdef ENABLE_DATABASE static CommandResult -handle_update(Client &client, UpdateService &update, +handle_update(Response &r, UpdateService &update, const char *uri_utf8, bool discard) { - Response r(client); - unsigned ret = update.Enqueue(uri_utf8, discard); if (ret > 0) { r.Format("updating_db: %i\n", ret); @@ -240,11 +235,9 @@ handle_update(Client &client, UpdateService &update, } static CommandResult -handle_update(Client &client, Database &db, +handle_update(Response &r, Database &db, const char *uri_utf8, bool discard) { - Response r(client); - Error error; unsigned id = db.Update(uri_utf8, discard, error); if (id > 0) { @@ -263,10 +256,8 @@ handle_update(Client &client, Database &db, #endif static CommandResult -handle_update(Client &client, Request args, bool discard) +handle_update(Client &client, Request args, Response &r, bool discard) { - Response r(client); - #ifdef ENABLE_DATABASE const char *path = ""; @@ -285,11 +276,11 @@ handle_update(Client &client, Request args, bool discard) UpdateService *update = client.partition.instance.update; if (update != nullptr) - return handle_update(client, *update, path, discard); + return handle_update(r, *update, path, discard); Database *db = client.partition.instance.database; if (db != nullptr) - return handle_update(client, *db, path, discard); + return handle_update(r, *db, path, discard); #else (void)args; (void)discard; @@ -300,22 +291,20 @@ handle_update(Client &client, Request args, bool discard) } CommandResult -handle_update(Client &client, gcc_unused Request args) +handle_update(Client &client, Request args, gcc_unused Response &r) { - return handle_update(client, args, false); + return handle_update(client, args, r, false); } CommandResult -handle_rescan(Client &client, gcc_unused Request args) +handle_rescan(Client &client, Request args, Response &r) { - return handle_update(client, args, true); + return handle_update(client, args, r, true); } CommandResult -handle_setvol(Client &client, Request args) +handle_setvol(Client &client, Request args, Response &r) { - Response r(client); - unsigned level; if (!args.Parse(0, level, r, 100)) return CommandResult::ERROR; @@ -329,10 +318,8 @@ handle_setvol(Client &client, Request args) } CommandResult -handle_volume(Client &client, Request args) +handle_volume(Client &client, Request args, Response &r) { - Response r(client); - int relative; if (!args.Parse(0, relative, r, -100, 100)) return CommandResult::ERROR; @@ -359,24 +346,22 @@ handle_volume(Client &client, Request args) } CommandResult -handle_stats(Client &client, gcc_unused Request args) +handle_stats(Client &client, gcc_unused Request args, Response &r) { - Response r(client); stats_print(r, client.partition); return CommandResult::OK; } CommandResult -handle_ping(gcc_unused Client &client, gcc_unused Request args) +handle_ping(gcc_unused Client &client, gcc_unused Request args, + gcc_unused Response &r) { return CommandResult::OK; } CommandResult -handle_password(Client &client, Request args) +handle_password(Client &client, Request args, Response &r) { - Response r(client); - unsigned permission = 0; if (getPermissionFromPassword(args.front(), &permission) < 0) { r.Error(ACK_ERROR_PASSWORD, "incorrect password"); @@ -389,10 +374,8 @@ handle_password(Client &client, Request args) } CommandResult -handle_config(Client &client, gcc_unused Request args) +handle_config(Client &client, gcc_unused Request args, Response &r) { - Response r(client); - if (!client.IsLocal()) { r.Error(ACK_ERROR_PERMISSION, "Command only permitted to local clients"); @@ -411,10 +394,8 @@ handle_config(Client &client, gcc_unused Request args) } CommandResult -handle_idle(Client &client, Request args) +handle_idle(Client &client, Request args, Response &r) { - Response r(client); - unsigned flags = 0; for (const char *i : args) { unsigned event = idle_parse_name(i); |