/*! the event id enumeration to bind to */
switch_event_types_t event_id;
/*! the event subclass to bind to for custom events */
- switch_event_subclass_t *subclass;
+ char *subclass_name;
/*! a callback function to execute when the event is triggered */
switch_event_callback_t callback;
/*! private data */
if (node->event_id == SWITCH_EVENT_ALL) {
match++;
- if (!node->subclass) {
+ if (!node->subclass_name) {
return match;
}
}
if (match || event->event_id == node->event_id) {
- if (event->subclass_name && node->subclass) {
- if (!strncasecmp(node->subclass->name, "file:", 5)) {
+ if (event->subclass_name && node->subclass_name) {
+ if (!strncasecmp(node->subclass_name, "file:", 5)) {
char *file_header;
if ((file_header = switch_event_get_header(event, "file")) != 0) {
- match = strstr(node->subclass->name + 5, file_header) ? 1 : 0;
+ match = strstr(node->subclass_name + 5, file_header) ? 1 : 0;
}
- } else if (!strncasecmp(node->subclass->name, "func:", 5)) {
+ } else if (!strncasecmp(node->subclass_name, "func:", 5)) {
char *func_header;
if ((func_header = switch_event_get_header(event, "function")) != 0) {
- match = strstr(node->subclass->name + 5, func_header) ? 1 : 0;
+ match = strstr(node->subclass_name + 5, func_header) ? 1 : 0;
}
- } else if (event->subclass_name && node->subclass->name) {
- match = strstr(event->subclass_name, node->subclass->name) ? 1 : 0;
+ } else if (event->subclass_name && node->subclass_name) {
+ match = strstr(event->subclass_name, node->subclass_name) ? 1 : 0;
}
- } else if ((event->subclass_name && !node->subclass) || (!event->subclass_name && !node->subclass)) {
+ } else if ((event->subclass_name && !node->subclass_name) || (!event->subclass_name && !node->subclass_name)) {
match = 1;
} else {
match = 0;
/* <LOCKED> ----------------------------------------------- */
event_node->id = DUP(id);
event_node->event_id = event;
- event_node->subclass = subclass;
+ if (subclass_name) {
+ event_node->subclass_name = DUP(subclass_name);
+ }
event_node->callback = callback;
event_node->user_data = user_data;
}
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Event Binding deleted for %s:%s\n", n->id, switch_event_name(n->event_id));
+ FREE(n->subclass_name);
FREE(n->id);
FREE(n);
status = SWITCH_STATUS_SUCCESS;
EVENT_NODES[n->event_id] = n->next;
}
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Event Binding deleted for %s:%s\n", n->id, switch_event_name(n->event_id));
- n->subclass = NULL;
+ FREE(n->subclass_name);
FREE(n->id);
FREE(n);
*node = NULL;