[core] allow event-channel debugging & single delivery
This commit is contained in:
parent
c76a8c5458
commit
506bcd280d
|
@ -387,7 +387,9 @@ typedef enum {
|
|||
SCF_DIALPLAN_TIMESTAMPS = (1 << 24),
|
||||
SCF_CPF_SOFT_PREFIX = (1 << 25),
|
||||
SCF_CPF_SOFT_LOOKUP = (1 << 26),
|
||||
SCF_EVENT_CHANNEL_ENABLE_HIERARCHY_DELIVERY = (1 << 27)
|
||||
SCF_EVENT_CHANNEL_ENABLE_HIERARCHY_DELIVERY = (1 << 27),
|
||||
SCF_EVENT_CHANNEL_HIERARCHY_DELIVERY_ONCE = (1 << 28),
|
||||
SCF_EVENT_CHANNEL_LOG_UNDELIVERABLE_JSON = (1 << 29)
|
||||
} switch_core_flag_enum_t;
|
||||
typedef uint32_t switch_core_flag_t;
|
||||
|
||||
|
|
|
@ -2369,6 +2369,20 @@ static void switch_load_core_config(const char *file)
|
|||
} else {
|
||||
switch_clear_flag((&runtime), SCF_EVENT_CHANNEL_ENABLE_HIERARCHY_DELIVERY);
|
||||
}
|
||||
} else if (!strcasecmp(var, "event-channel-hierarchy-deliver-once") && !zstr(val)) {
|
||||
int v = switch_true(val);
|
||||
if (v) {
|
||||
switch_set_flag((&runtime), SCF_EVENT_CHANNEL_HIERARCHY_DELIVERY_ONCE);
|
||||
} else {
|
||||
switch_clear_flag((&runtime), SCF_EVENT_CHANNEL_HIERARCHY_DELIVERY_ONCE);
|
||||
}
|
||||
} else if (!strcasecmp(var, "event-channel-log-undeliverable-json") && !zstr(val)) {
|
||||
int v = switch_true(val);
|
||||
if (v) {
|
||||
switch_set_flag((&runtime), SCF_EVENT_CHANNEL_LOG_UNDELIVERABLE_JSON);
|
||||
} else {
|
||||
switch_clear_flag((&runtime), SCF_EVENT_CHANNEL_LOG_UNDELIVERABLE_JSON);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2934,17 +2934,21 @@ static void ecd_deliver(event_channel_data_t **ecdP)
|
|||
const char *sep = switch_core_get_event_channel_key_separator();
|
||||
char *x_argv[SWITCH_CHANNEL_DISPATCH_MAX_KEY_PARTS] = { 0 };
|
||||
int x_argc = switch_separate_string_string(key, (char*) sep, x_argv, SWITCH_CHANNEL_DISPATCH_MAX_KEY_PARTS);
|
||||
char buf[512];
|
||||
int i;
|
||||
char buf[1024];
|
||||
int i, r;
|
||||
for(i=x_argc - 1; i > 0; i--) {
|
||||
int z;
|
||||
memset(buf, 0, 512);
|
||||
memset(buf, 0, 1024);
|
||||
sprintf(buf, "%s", x_argv[0]);
|
||||
for(z=1; z < i; z++) {
|
||||
strcat(buf, sep);
|
||||
strcat(buf, x_argv[z]);
|
||||
}
|
||||
t += _switch_event_channel_broadcast(buf, ecd->event_channel, ecd->json, ecd->key, ecd->id);
|
||||
r = _switch_event_channel_broadcast(buf, ecd->event_channel, ecd->json, ecd->key, ecd->id);
|
||||
t += r;
|
||||
if (r && switch_core_test_flag(SCF_EVENT_CHANNEL_HIERARCHY_DELIVERY_ONCE)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
char *p = NULL;
|
||||
|
@ -2958,7 +2962,13 @@ static void ecd_deliver(event_channel_data_t **ecdP)
|
|||
t += _switch_event_channel_broadcast(SWITCH_EVENT_CHANNEL_GLOBAL, ecd->event_channel, ecd->json, ecd->key, ecd->id);
|
||||
|
||||
if(t == 0) {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no subscribers for %s , %s\n", ecd->event_channel, ecd->key);
|
||||
if (switch_core_test_flag(SCF_EVENT_CHANNEL_LOG_UNDELIVERABLE_JSON)) {
|
||||
char *json = cJSON_Print(ecd->json);
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no subscribers for %s , %s => %s\n", ecd->event_channel, ecd->key, json);
|
||||
switch_safe_free(json);
|
||||
} else {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no subscribers for %s , %s\n", ecd->event_channel, ecd->key);
|
||||
}
|
||||
} else {
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "delivered to %u subscribers for %s\n", t, ecd->event_channel);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue