FS-5661 --resolve
This commit is contained in:
parent
22ab34c507
commit
05444a6ebd
|
@ -43,6 +43,7 @@ SWITCH_BEGIN_EXTERN_C
|
||||||
int64_t created;
|
int64_t created;
|
||||||
int64_t runtime;
|
int64_t runtime;
|
||||||
uint32_t cmd_id;
|
uint32_t cmd_id;
|
||||||
|
uint32_t repeat;
|
||||||
char *group;
|
char *group;
|
||||||
void *cmd_arg;
|
void *cmd_arg;
|
||||||
uint32_t task_id;
|
uint32_t task_id;
|
||||||
|
|
|
@ -3164,7 +3164,7 @@ SWITCH_STANDARD_API(uuid_broadcast_function)
|
||||||
return SWITCH_STATUS_SUCCESS;
|
return SWITCH_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SCHED_BROADCAST_SYNTAX "[+]<time> <uuid> <path> [aleg|bleg|both]"
|
#define SCHED_BROADCAST_SYNTAX "[[+]<time>|@time] <uuid> <path> [aleg|bleg|both]"
|
||||||
SWITCH_STANDARD_API(sched_broadcast_function)
|
SWITCH_STANDARD_API(sched_broadcast_function)
|
||||||
{
|
{
|
||||||
char *mycmd = NULL, *argv[4] = { 0 };
|
char *mycmd = NULL, *argv[4] = { 0 };
|
||||||
|
@ -3180,7 +3180,9 @@ SWITCH_STANDARD_API(sched_broadcast_function)
|
||||||
switch_media_flag_t flags = SMF_NONE;
|
switch_media_flag_t flags = SMF_NONE;
|
||||||
time_t when;
|
time_t when;
|
||||||
|
|
||||||
if (*argv[0] == '+') {
|
if (*argv[0] == '@') {
|
||||||
|
when = atol(argv[0] + 1);
|
||||||
|
} else if (*argv[0] == '+') {
|
||||||
when = switch_epoch_time_now(NULL) + atol(argv[0] + 1);
|
when = switch_epoch_time_now(NULL) + atol(argv[0] + 1);
|
||||||
} else {
|
} else {
|
||||||
when = atol(argv[0]);
|
when = atol(argv[0]);
|
||||||
|
|
|
@ -1121,7 +1121,9 @@ SWITCH_STANDARD_APP(sched_broadcast_function)
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
char ids[80] = "";
|
char ids[80] = "";
|
||||||
|
|
||||||
if (*argv[0] == '+') {
|
if (*argv[0] == '@') {
|
||||||
|
when = atol(argv[0] + 1);
|
||||||
|
} else if (*argv[0] == '+') {
|
||||||
when = switch_epoch_time_now(NULL) + atol(argv[0] + 1);
|
when = switch_epoch_time_now(NULL) + atol(argv[0] + 1);
|
||||||
} else {
|
} else {
|
||||||
when = atol(argv[0]);
|
when = atol(argv[0]);
|
||||||
|
|
|
@ -61,6 +61,10 @@ static void switch_scheduler_execute(switch_scheduler_task_container_t *tp)
|
||||||
|
|
||||||
tp->func(&tp->task);
|
tp->func(&tp->task);
|
||||||
|
|
||||||
|
if (tp->task.repeat) {
|
||||||
|
tp->task.runtime = switch_epoch_time_now(NULL) + tp->task.repeat;
|
||||||
|
}
|
||||||
|
|
||||||
if (tp->task.runtime > tp->executed) {
|
if (tp->task.runtime > tp->executed) {
|
||||||
tp->executed = 0;
|
tp->executed = 0;
|
||||||
if (switch_event_create(&event, SWITCH_EVENT_RE_SCHEDULE) == SWITCH_STATUS_SUCCESS) {
|
if (switch_event_create(&event, SWITCH_EVENT_RE_SCHEDULE) == SWITCH_STATUS_SUCCESS) {
|
||||||
|
@ -190,10 +194,17 @@ SWITCH_DECLARE(uint32_t) switch_scheduler_add_task(time_t task_runtime,
|
||||||
{
|
{
|
||||||
switch_scheduler_task_container_t *container, *tp;
|
switch_scheduler_task_container_t *container, *tp;
|
||||||
switch_event_t *event;
|
switch_event_t *event;
|
||||||
|
switch_time_t now = switch_epoch_time_now(NULL);
|
||||||
|
|
||||||
switch_mutex_lock(globals.task_mutex);
|
switch_mutex_lock(globals.task_mutex);
|
||||||
switch_zmalloc(container, sizeof(*container));
|
switch_zmalloc(container, sizeof(*container));
|
||||||
switch_assert(func);
|
switch_assert(func);
|
||||||
|
|
||||||
|
if (task_runtime < now) {
|
||||||
|
container->task.repeat = task_runtime;
|
||||||
|
task_runtime += now;
|
||||||
|
}
|
||||||
|
|
||||||
container->func = func;
|
container->func = func;
|
||||||
container->task.created = switch_epoch_time_now(NULL);
|
container->task.created = switch_epoch_time_now(NULL);
|
||||||
container->task.runtime = task_runtime;
|
container->task.runtime = task_runtime;
|
||||||
|
|
Loading…
Reference in New Issue