SWITCH_DECLARE_CONSTRUCTOR Event::Event(const char *type, const char *subclass_name) { switch_event_types_t event_id; if (!strcasecmp(type, "json") && !zstr(subclass_name)) { if (switch_event_create_json(&event, subclass_name) != SWITCH_STATUS_SUCCESS) { return; } event_id = event->event_id; } else { if (switch_name_event(type, &event_id) != SWITCH_STATUS_SUCCESS) { event_id = SWITCH_EVENT_MESSAGE; } if (!zstr(subclass_name) && event_id != SWITCH_EVENT_CUSTOM) { switch_log_printf(SWITCH_CHANNEL_LOG,SWITCH_LOG_WARNING, "Changing event type to custom because you specified a subclass name!\n"); event_id = SWITCH_EVENT_CUSTOM; } if (switch_event_create_subclass(&event, event_id, subclass_name) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG,SWITCH_LOG_ERROR, "Failed to create event!\n"); event = NULL; } } serialized_string = NULL; mine = 1; }
switch_event_t *jsonapi2event(switch_core_session_t *session, const char *api, const char *data) { switch_event_t *phrases_event = NULL; switch_stream_handle_t stream = { 0 }; SWITCH_STANDARD_STREAM(stream); switch_api_execute(api, data, session, &stream); switch_event_create_json(&phrases_event, (char *) stream.data); switch_safe_free(stream.data); return phrases_event; }
void jsonapi_populate_event(switch_core_session_t *session, switch_event_t *apply_event, const char *api, const char *data) { switch_event_t *phrases_event = NULL; switch_stream_handle_t stream = { 0 }; switch_event_header_t *hp; switch_assert(apply_event); SWITCH_STANDARD_STREAM(stream); switch_api_execute(api, data, session, &stream); switch_event_create_json(&phrases_event, (char *) stream.data); switch_safe_free(stream.data); for (hp = phrases_event->headers; hp; hp = hp->next) { if (!strncasecmp(hp->name, "VM-", 3)) { switch_event_add_header(apply_event, SWITCH_STACK_BOTTOM, hp->name, "%s", hp->value); } } switch_event_destroy(&phrases_event); phrases_event = apply_event; return; }