From b4c1dc8e1f34d22aed951239698258808e0f0350 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 20 Jan 2025 15:46:54 -0400 Subject: [PATCH] MT#61630 support evicting multiple cache entries Change-Id: Ia332a6ba8b56d02bac8adefd9cff78ced4e5abc2 --- daemon/cli.c | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/daemon/cli.c b/daemon/cli.c index 9f88118c3..3dad299aa 100644 --- a/daemon/cli.c +++ b/daemon/cli.c @@ -246,9 +246,9 @@ HANDLER_END HANDLER_START(cli_media_evict_handlers) HANDLER_CMD("file", cli_incoming_media_evict_file, "", "remove one media file from memory cache") HANDLER_CMD("files", cli_incoming_media_evict_files, NULL, "remove all media files from memory") - HANDLER_CMD("db", cli_incoming_media_evict_db, "", "remove one database media entry from memory cache") + HANDLER_CMD("db", cli_incoming_media_evict_db, " ...", "remove one database media entry from memory cache") HANDLER_CMD("dbs", cli_incoming_media_evict_dbs, NULL, "remove all database media entries from memory") - HANDLER_CMD("cache", cli_incoming_media_evict_cache, "", "remove one database media entry from file system cache") + HANDLER_CMD("cache", cli_incoming_media_evict_cache, " ...", "remove one database media entry from file system cache") HANDLER_CMD("caches", cli_incoming_media_evict_caches, NULL, "remove all database media entries from file cache") HANDLER_CMD("players", cli_incoming_media_evict_players, NULL, "remove all full encoded media streams from memory cache") HANDLER_END @@ -2023,15 +2023,18 @@ static void cli_incoming_media_evict_db(str *instr, struct cli_writer *cw, const return ; } - unsigned long long id = str_to_ui(instr, 0); - if (id == 0 || id == ULLONG_MAX) - cw->cw_printf(cw, "Invalid ID '" STR_FORMAT "'\n", STR_FMT(instr)); - else { - bool ok = media_player_evict_db_media(id); - if (ok) - cw->cw_printf(cw, "Success\n"); - else - cw->cw_printf(cw, "Failed to evict '" STR_FORMAT "'\n", STR_FMT(instr)); + str token; + while (str_token_sep(&token, instr, ' ')) { + unsigned long long id = str_to_ui(&token, 0); + if (id == 0 || id == ULLONG_MAX) + cw->cw_printf(cw, "Invalid ID '" STR_FORMAT "'\n", STR_FMT(&token)); + else { + bool ok = media_player_evict_db_media(id); + if (ok) + cw->cw_printf(cw, "Success (%llu)\n", id); + else + cw->cw_printf(cw, "Failed to evict %llu\n", id); + } } } @@ -2068,15 +2071,18 @@ static void cli_incoming_media_evict_cache(str *instr, struct cli_writer *cw, co return ; } - unsigned long long id = str_to_ui(instr, 0); - if (id == 0 || id == ULLONG_MAX) - cw->cw_printf(cw, "Invalid ID '" STR_FORMAT "'\n", STR_FMT(instr)); - else { - bool ok = media_player_evict_cache(id); - if (ok) - cw->cw_printf(cw, "Success\n"); - else - cw->cw_printf(cw, "Failed to evict '" STR_FORMAT "'\n", STR_FMT(instr)); + str token; + while (str_token_sep(&token, instr, ' ')) { + unsigned long long id = str_to_ui(&token, 0); + if (id == 0 || id == ULLONG_MAX) + cw->cw_printf(cw, "Invalid ID '" STR_FORMAT "'\n", STR_FMT(&token)); + else { + bool ok = media_player_evict_cache(id); + if (ok) + cw->cw_printf(cw, "Success (%llu)\n", id); + else + cw->cw_printf(cw, "Failed to evict %llu\n", id); + } } }