Browse Source

MT#61822 support listing contents of FS cache

Change-Id: I31f9fe2bd0b95e832e285fa96ea969c703a816be
pull/1897/head
Richard Fuchs 11 months ago
parent
commit
33be3468a7
4 changed files with 52 additions and 0 deletions
  1. +10
    -0
      daemon/cli.c
  2. +40
    -0
      daemon/media_player.c
  3. +1
    -0
      include/media_player.h
  4. +1
    -0
      utils/rtpengine-ctl

+ 10
- 0
daemon/cli.c View File

@ -111,6 +111,7 @@ static void cli_incoming_tag_detdtmf(str *instr, struct cli_writer *cw, const cl
static void cli_incoming_media_list_files(str *instr, struct cli_writer *cw, const cli_handler_t *);
static void cli_incoming_media_list_dbs(str *instr, struct cli_writer *cw, const cli_handler_t *);
static void cli_incoming_media_list_caches(str *instr, struct cli_writer *cw, const cli_handler_t *);
static void cli_incoming_media_reload_file(str *instr, struct cli_writer *cw, const cli_handler_t *);
static void cli_incoming_media_reload_files(str *instr, struct cli_writer *cw, const cli_handler_t *);
@ -197,6 +198,7 @@ static const cli_handler_t cli_params_handlers[] = {
static const cli_handler_t cli_media_list_handlers[] = {
{ "files", cli_incoming_media_list_files, NULL },
{ "dbs", cli_incoming_media_list_dbs, NULL },
{ "caches", cli_incoming_media_list_caches, NULL },
{ NULL, },
};
static const cli_handler_t cli_media_reload_handlers[] = {
@ -1900,4 +1902,12 @@ static void cli_incoming_media_evict_dbs(str *instr, struct cli_writer *cw, cons
unsigned int num = media_player_evict_db_medias();
cw->cw_printf(cw, "%u DB media entries evicted\n", num);
}
static void cli_incoming_media_list_caches(str *instr, struct cli_writer *cw, const cli_handler_t *handler) {
GQueue list = media_player_list_caches();
while (list.head) {
void *id = g_queue_pop_head(&list);
cw->cw_printf(cw, "%llu\n", (unsigned long long) GPOINTER_TO_UINT(id));
}
}
#endif

+ 40
- 0
daemon/media_player.c View File

@ -2374,3 +2374,43 @@ GQueue media_player_list_dbs(void) {
#endif
return ret;
}
G_DEFINE_AUTOPTR_CLEANUP_FUNC(DIR, closedir)
typedef union {
GQueue *q;
} iterate_db_cache_arg __attribute__((__transparent_union__));
static void media_player_iterate_db_cache(void (*callback)(unsigned long long, iterate_db_cache_arg),
iterate_db_cache_arg arg)
{
#ifdef WITH_TRANSCODING
if (!rtpe_config.db_media_cache)
return;
g_autoptr(DIR) dir = opendir(rtpe_config.db_media_cache);
if (!dir) {
ilog(LOG_ERR, "Failed to open media cache directory: %s", strerror(errno));
return;
}
struct dirent *de;
while ((de = readdir(dir))) {
char *errp;
unsigned long long id = strtoull(de->d_name, &errp, 10);
if (!id || strcmp(errp, ".blob"))
continue;
callback(id, arg);
}
#endif
}
static void media_player_add_to_queue(unsigned long long id, GQueue *q) {
g_queue_push_tail(q, GUINT_TO_POINTER(id));
}
GQueue media_player_list_caches(void) {
GQueue ret = G_QUEUE_INIT;
media_player_iterate_db_cache(media_player_add_to_queue, &ret);
return ret;
}

+ 1
- 0
include/media_player.h View File

@ -163,6 +163,7 @@ bool media_player_evict_db_media(unsigned long long);
unsigned int media_player_evict_db_medias(void);
str_q media_player_list_files(void);
GQueue media_player_list_dbs(void);
GQueue media_player_list_caches(void);
struct send_timer *send_timer_new(struct packet_stream *);
void send_timer_push(struct send_timer *, struct codec_packet *);


+ 1
- 0
utils/rtpengine-ctl View File

@ -167,6 +167,7 @@ sub showusage {
print " list <option>\n";
print " files : list media files currently in memory\n";
print " dbs : list database media entries currently in memory\n";
print " caches : list database media entries currently in file cache\n";
print " reload <option>\n";
print " file <file name> : reload one media file into memory\n";
print " files : reload all media files currently in memory\n";


Loading…
Cancel
Save