ngcp-panel/lib/NGCP/Panel/Utils/Rtpengine.pm

51 lines
1.4 KiB

package NGCP::Panel::Utils::Rtpengine;
use Sipwise::Base;
use NGCP::Panel::Utils::HTTPDispatcher;
use NGCP::Panel::Utils::Sounds;
use List::Util qw(any);
sub clear_audio_cache_files {
my ($c, @sound_ids) = @_;
return unless @sound_ids;
my @all;
if (@sound_ids < 1000) {
my @ret = NGCP::Panel::Utils::HTTPDispatcher::dispatch($c, "rtpengine", 1, 1, "POST", "text/plain",
"media evict cache @sound_ids");
push(@all, @ret);
@ret = NGCP::Panel::Utils::HTTPDispatcher::dispatch($c, "rtpengine", 1, 1, "POST", "text/plain",
"media evict db @sound_ids");
push(@all, @ret);
} else {
my @ret = NGCP::Panel::Utils::HTTPDispatcher::dispatch($c, "rtpengine", 1, 1, "POST", "text/plain",
"media evict caches");
push(@all, @ret);
@ret = NGCP::Panel::Utils::HTTPDispatcher::dispatch($c, "rtpengine", 1, 1, "POST", "text/plain",
"media evict dbs");
push(@all, @ret);
}
if (any { $$_[1] != 1 } @all) {
die "failed to clear rtpengine audio cache";
}
return;
}
sub clear_audio_cache_set {
my ($c, $set_id) = @_;
my $handles = NGCP::Panel::Utils::Sounds::get_file_handles(c => $c, set_id => $set_id);
my @db_ids = map { $_->{file_id} // () } @{$handles};
clear_audio_cache_files($c, @db_ids);
return;
}
1;
# vim: set tabstop=4 expandtab: