]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
mod_v8: Fixed line endings, and removed old code.
authorPeter Olsson <peter@olssononline.se>
Sat, 1 Feb 2014 17:54:39 +0000 (18:54 +0100)
committerPeter Olsson <peter@olssononline.se>
Sat, 1 Feb 2014 17:54:39 +0000 (18:54 +0100)
src/mod/languages/mod_v8/src/fseventhandler.cpp

index bef824d6ad5ddca93f8a659e03b14e283bb43ba1..65b3be239b5d5719adbffbbd4cd01e107814691d 100644 (file)
 using namespace std;
 using namespace v8;
 
-typedef struct {\r
-       char *cmd;\r
-       char *arg;\r
-       char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];\r
-       int ack;\r
-       switch_memory_pool_t *pool;\r
-} api_command_struct_t;\r
+typedef struct {
+       char *cmd;
+       char *arg;
+       char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
+       int ack;
+       switch_memory_pool_t *pool;
+} api_command_struct_t;
 
 static const char js_class_name[] = "EventHandler";
 
@@ -98,87 +98,77 @@ void FSEventHandler::QueueEvent(switch_event_t *event)
 
        switch_mutex_lock(_mutex);
 
-       if (_event_list[SWITCH_EVENT_ALL]) {\r
-               send = 1;\r
-       } else if ((_event_list[event->event_id])) {\r
-               if (event->event_id != SWITCH_EVENT_CUSTOM || !event->subclass_name || (switch_core_hash_find(_event_hash, event->subclass_name))) {\r
-                       send = 1;\r
-               }\r
-       }\r
-\r
-       if (send) {\r
-               if (_filters && _filters->headers) {\r
-                       switch_event_header_t *hp;\r
-                       const char *hval;\r
-\r
-                       send = 0;\r
-\r
-                       for (hp = _filters->headers; hp; hp = hp->next) {\r
-                               if ((hval = switch_event_get_header(event, hp->name))) {\r
-                                       const char *comp_to = hp->value;\r
-                                       int pos = 1, cmp = 0;\r
-\r
-                                       while (comp_to && *comp_to) {\r
-                                               if (*comp_to == '+') {\r
-                                                       pos = 1;\r
-                                               } else if (*comp_to == '-') {\r
-                                                       pos = 0;\r
-                                               } else if (*comp_to != ' ') {\r
-                                                       break;\r
-                                               }\r
-                                               comp_to++;\r
-                                       }\r
-\r
-                                       if (send && pos) {\r
-                                               continue;\r
-                                       }\r
-\r
-                                       if (!comp_to) {\r
-                                               continue;\r
-                                       }\r
-\r
-                                       if (*hp->value == '/') {\r
-                                               switch_regex_t *re = NULL;\r
-                                               int ovector[30];\r
-                                               cmp = !!switch_regex_perform(hval, comp_to, &re, ovector, sizeof(ovector) / sizeof(ovector[0]));\r
-                                               switch_regex_safe_free(re);\r
-                                       } else {\r
-                                               cmp = !strcasecmp(hval, comp_to);\r
-                                       }\r
-\r
-                                       if (cmp) {\r
-                                               if (pos) {\r
-                                                       send = 1;\r
-                                               } else {\r
-                                                       send = 0;\r
-                                                       break;\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-\r
+       if (_event_list[SWITCH_EVENT_ALL]) {
+               send = 1;
+       } else if ((_event_list[event->event_id])) {
+               if (event->event_id != SWITCH_EVENT_CUSTOM || !event->subclass_name || (switch_core_hash_find(_event_hash, event->subclass_name))) {
+                       send = 1;
+               }
+       }
+
+       if (send) {
+               if (_filters && _filters->headers) {
+                       switch_event_header_t *hp;
+                       const char *hval;
+
+                       send = 0;
+
+                       for (hp = _filters->headers; hp; hp = hp->next) {
+                               if ((hval = switch_event_get_header(event, hp->name))) {
+                                       const char *comp_to = hp->value;
+                                       int pos = 1, cmp = 0;
+
+                                       while (comp_to && *comp_to) {
+                                               if (*comp_to == '+') {
+                                                       pos = 1;
+                                               } else if (*comp_to == '-') {
+                                                       pos = 0;
+                                               } else if (*comp_to != ' ') {
+                                                       break;
+                                               }
+                                               comp_to++;
+                                       }
+
+                                       if (send && pos) {
+                                               continue;
+                                       }
+
+                                       if (!comp_to) {
+                                               continue;
+                                       }
+
+                                       if (*hp->value == '/') {
+                                               switch_regex_t *re = NULL;
+                                               int ovector[30];
+                                               cmp = !!switch_regex_perform(hval, comp_to, &re, ovector, sizeof(ovector) / sizeof(ovector[0]));
+                                               switch_regex_safe_free(re);
+                                       } else {
+                                               cmp = !strcasecmp(hval, comp_to);
+                                       }
+
+                                       if (cmp) {
+                                               if (pos) {
+                                                       send = 1;
+                                               } else {
+                                                       send = 0;
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+
        switch_mutex_unlock(_mutex);
 
        if (send) {
                if (switch_event_dup(&clone, event) == SWITCH_STATUS_SUCCESS) {
-
-                       if (switch_queue_trypush(_event_queue, clone) == SWITCH_STATUS_SUCCESS) {
-                               // TODO
-                               /*if (l->lost_events) {
-                                       int le = l->lost_events;
-                                       l->lost_events = 0;
-                                       switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(l->session), SWITCH_LOG_CRIT, "Lost %d events!\n", le);
-                               }*/
-                       } else {
-                               /*if (++l->lost_events > MAX_MISSED) {
-                                       kill_listener(l, NULL);
-                               }*/
+                       if (switch_queue_trypush(_event_queue, clone) != SWITCH_STATUS_SUCCESS) {
+                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Lost event to JS EventHandler, you must read the events faster!\n");
                                switch_event_destroy(&clone);
                        }
                } else {
-                       ////switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(l->session), SWITCH_LOG_ERROR, "Memory Error!\n");
+                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Memory Error!\n");
                }
        }
 }
@@ -194,28 +184,28 @@ void FSEventHandler::DoSubscribe(const v8::FunctionCallbackInfo<v8::Value>& info
                String::Utf8Value str(info[i]);
                switch_event_types_t etype;
 
-               if (custom) {\r
-                       switch_mutex_lock(_mutex);\r
-                       switch_core_hash_insert(_event_hash, js_safe_str(*str), MARKER);\r
-                       switch_mutex_unlock(_mutex);\r
-               } else if (switch_name_event(js_safe_str(*str), &etype) == SWITCH_STATUS_SUCCESS) {\r
-                       ret = true;\r
-\r
-                       if (etype == SWITCH_EVENT_ALL) {\r
-                               uint32_t x = 0;\r
-                               for (x = 0; x < SWITCH_EVENT_ALL; x++) {\r
-                                       _event_list[x] = 1;\r
-                               }\r
-                       }\r
-\r
-                       if (etype <= SWITCH_EVENT_ALL) {\r
-                               _event_list[etype] = 1;\r
-                       }\r
-\r
-                       if (etype == SWITCH_EVENT_CUSTOM) {\r
-                               custom++;\r
-                       }\r
-               }\r
+               if (custom) {
+                       switch_mutex_lock(_mutex);
+                       switch_core_hash_insert(_event_hash, js_safe_str(*str), MARKER);
+                       switch_mutex_unlock(_mutex);
+               } else if (switch_name_event(js_safe_str(*str), &etype) == SWITCH_STATUS_SUCCESS) {
+                       ret = true;
+
+                       if (etype == SWITCH_EVENT_ALL) {
+                               uint32_t x = 0;
+                               for (x = 0; x < SWITCH_EVENT_ALL; x++) {
+                                       _event_list[x] = 1;
+                               }
+                       }
+
+                       if (etype <= SWITCH_EVENT_ALL) {
+                               _event_list[etype] = 1;
+                       }
+
+                       if (etype == SWITCH_EVENT_CUSTOM) {
+                               custom++;
+                       }
+               }
        }
        
        info.GetReturnValue().Set(ret);
@@ -242,30 +232,30 @@ JS_EVENTHANDLER_FUNCTION_IMPL(UnSubscribe)
                String::Utf8Value str(info[i]);
                switch_event_types_t etype;
 
-               if (custom) {\r
-                       switch_mutex_lock(_mutex);\r
-                       switch_core_hash_delete(_event_hash, js_safe_str(*str));\r
-                       switch_mutex_unlock(_mutex);\r
-               } else if (switch_name_event(js_safe_str(*str), &etype) == SWITCH_STATUS_SUCCESS) {\r
-                       uint32_t x = 0;\r
-                       ret = true;\r
-\r
-                       if (etype == SWITCH_EVENT_CUSTOM) {\r
-                               custom++;\r
-                       } else if (etype == SWITCH_EVENT_ALL) {\r
-                               for (x = 0; x <= SWITCH_EVENT_ALL; x++) {\r
-                                       _event_list[x] = 0;\r
-                               }\r
-                       } else {\r
-                               if (_event_list[SWITCH_EVENT_ALL]) {\r
-                                       _event_list[SWITCH_EVENT_ALL] = 0;\r
-                                       for (x = 0; x < SWITCH_EVENT_ALL; x++) {\r
-                                               _event_list[x] = 1;\r
-                                       }\r
-                               }\r
-                               _event_list[etype] = 0;\r
-                       }\r
-               }\r
+               if (custom) {
+                       switch_mutex_lock(_mutex);
+                       switch_core_hash_delete(_event_hash, js_safe_str(*str));
+                       switch_mutex_unlock(_mutex);
+               } else if (switch_name_event(js_safe_str(*str), &etype) == SWITCH_STATUS_SUCCESS) {
+                       uint32_t x = 0;
+                       ret = true;
+
+                       if (etype == SWITCH_EVENT_CUSTOM) {
+                               custom++;
+                       } else if (etype == SWITCH_EVENT_ALL) {
+                               for (x = 0; x <= SWITCH_EVENT_ALL; x++) {
+                                       _event_list[x] = 0;
+                               }
+                       } else {
+                               if (_event_list[SWITCH_EVENT_ALL]) {
+                                       _event_list[SWITCH_EVENT_ALL] = 0;
+                                       for (x = 0; x < SWITCH_EVENT_ALL; x++) {
+                                               _event_list[x] = 1;
+                                       }
+                               }
+                               _event_list[etype] = 0;
+                       }
+               }
        }
        
        info.GetReturnValue().Set(ret);
@@ -279,27 +269,27 @@ JS_EVENTHANDLER_FUNCTION_IMPL(DeleteFilter)
                String::Utf8Value str(info[0]);
                const char *headerName = js_safe_str(*str);
 
-               if (zstr(headerName)) {\r
-                       info.GetReturnValue().Set(false);\r
-                       return;\r
-               }\r
+               if (zstr(headerName)) {
+                       info.GetReturnValue().Set(false);
+                       return;
+               }
 
                switch_mutex_lock(_mutex);
 
-               if (!_filters) {\r
-                       switch_event_create_plain(&_filters, SWITCH_EVENT_CLONE);\r
-               }\r
-\r
-               if (!strcasecmp(headerName, "all")) {\r
-                       switch_event_destroy(&_filters);\r
-                       switch_event_create_plain(&_filters, SWITCH_EVENT_CLONE);\r
-               } else {\r
-                       switch_event_del_header(_filters, headerName);\r
-               }\r
-\r
-               info.GetReturnValue().Set(true);\r
-\r
-               switch_mutex_unlock(_mutex);\r
+               if (!_filters) {
+                       switch_event_create_plain(&_filters, SWITCH_EVENT_CLONE);
+               }
+
+               if (!strcasecmp(headerName, "all")) {
+                       switch_event_destroy(&_filters);
+                       switch_event_create_plain(&_filters, SWITCH_EVENT_CLONE);
+               } else {
+                       switch_event_del_header(_filters, headerName);
+               }
+
+               info.GetReturnValue().Set(true);
+
+               switch_mutex_unlock(_mutex);
        }
 }
 
@@ -313,22 +303,22 @@ JS_EVENTHANDLER_FUNCTION_IMPL(AddFilter)
                const char *headerName = js_safe_str(*str1);
                const char *headerVal = js_safe_str(*str2);
 
-               if (zstr(headerName) || zstr(headerVal)) {\r
-                       info.GetReturnValue().Set(false);\r
-                       return;\r
-               }\r
+               if (zstr(headerName) || zstr(headerVal)) {
+                       info.GetReturnValue().Set(false);
+                       return;
+               }
 
                switch_mutex_lock(_mutex);
 
-               if (!_filters) {\r
-                       switch_event_create_plain(&_filters, SWITCH_EVENT_CLONE);\r
-               }\r
-\r
-               switch_event_add_header_string(_filters, SWITCH_STACK_BOTTOM, headerName, headerVal);\r
-\r
-               info.GetReturnValue().Set(true);\r
-\r
-               switch_mutex_unlock(_mutex);\r
+               if (!_filters) {
+                       switch_event_create_plain(&_filters, SWITCH_EVENT_CLONE);
+               }
+
+               switch_event_add_header_string(_filters, SWITCH_STACK_BOTTOM, headerName, headerVal);
+
+               info.GetReturnValue().Set(true);
+
+               switch_mutex_unlock(_mutex);
        }
 }
 
@@ -397,21 +387,19 @@ JS_EVENTHANDLER_FUNCTION_IMPL(SendEvent)
                                        switch_core_session_t *session;
                                        switch_status_t status = SWITCH_STATUS_FALSE;
 
-                                       if ((session = switch_core_session_locate(session_uuid.c_str()))) {\r
-                                               if ((status = switch_core_session_queue_private_event(session, event, SWITCH_FALSE)) == SWITCH_STATUS_SUCCESS) {\r
-                                                       info.GetReturnValue().Set(true);\r
-                                               } else {\r
-                                                       info.GetReturnValue().Set(false);\r
-                                               }\r
-                                               switch_core_session_rwunlock(session);\r
-                                       } else {\r
-                                               info.GetReturnValue().Set(false);\r
-                                               // TODO LOGGING\r
-                                               //switch_snprintf(reply, reply_len, "-ERR invalid session id [%s]", switch_str_nil(uuid));\r
-                                       }\r
+                                       if ((session = switch_core_session_locate(session_uuid.c_str()))) {
+                                               if ((status = switch_core_session_queue_private_event(session, event, SWITCH_FALSE)) == SWITCH_STATUS_SUCCESS) {
+                                                       info.GetReturnValue().Set(true);
+                                               } else {
+                                                       info.GetReturnValue().Set(false);
+                                               }
+                                               switch_core_session_rwunlock(session);
+                                       } else {
+                                               info.GetReturnValue().Set(false);
+                                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid session id [%s]\n", switch_str_nil(session_uuid.c_str()));
+                                       }
                                } else {
                                        /* "Normal" event */
-                                       // TODO LOGGING
                                        switch_event_fire(event);
                                }
                        }
@@ -448,78 +436,78 @@ JS_EVENTHANDLER_FUNCTION_IMPL(ExecuteApi)
        }
 }
 
-static void *SWITCH_THREAD_FUNC api_exec(switch_thread_t *thread, void *obj)\r
-{\r
-       api_command_struct_t *acs = (api_command_struct_t *) obj;\r
-       switch_stream_handle_t stream = { 0 };\r
-       char *reply, *freply = NULL;\r
-       switch_status_t status;\r
-       switch_event_t *event;\r
-\r
-       if (!acs) {\r
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Internal error.\n");\r
-               return NULL;\r
-       }\r
-\r
-       acs->ack = 1;\r
-\r
-       SWITCH_STANDARD_STREAM(stream);\r
-\r
-       status = switch_api_execute(acs->cmd, acs->arg, NULL, &stream);\r
-\r
-       if (status == SWITCH_STATUS_SUCCESS) {\r
-               reply = (char *)stream.data;\r
-       } else {\r
-               freply = switch_mprintf("-ERR %s Command not found!\n", acs->cmd);\r
-               reply = freply;\r
-       }\r
-\r
-       if (!reply) {\r
-               reply = "Command returned no output!";\r
-       }\r
-\r
-       if (switch_event_create(&event, SWITCH_EVENT_BACKGROUND_JOB) == SWITCH_STATUS_SUCCESS) {\r
-               switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-UUID", acs->uuid_str);\r
-               switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Command", acs->cmd);\r
-               if (acs->arg) {\r
-                       switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Command-Arg", acs->arg);\r
-               }\r
-               switch_event_add_body(event, "%s", reply);\r
-               switch_event_fire(&event);\r
-       }\r
-\r
-       switch_safe_free(stream.data);\r
-       switch_safe_free(freply);\r
-\r
-       switch_memory_pool_t *pool = acs->pool;\r
-       if (acs->ack == -1) {\r
-               int sanity = 2000;\r
-               while (acs->ack == -1) {\r
-                       switch_cond_next();\r
-                       if (--sanity <= 0)\r
-                               break;\r
-               }\r
-       }\r
-\r
-       acs = NULL;\r
-       switch_core_destroy_memory_pool(&pool);\r
-       pool = NULL;\r
-\r
-       return NULL;\r
-}\r
+static void *SWITCH_THREAD_FUNC api_exec(switch_thread_t *thread, void *obj)
+{
+       api_command_struct_t *acs = (api_command_struct_t *) obj;
+       switch_stream_handle_t stream = { 0 };
+       char *reply, *freply = NULL;
+       switch_status_t status;
+       switch_event_t *event;
+
+       if (!acs) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Internal error.\n");
+               return NULL;
+       }
+
+       acs->ack = 1;
+
+       SWITCH_STANDARD_STREAM(stream);
+
+       status = switch_api_execute(acs->cmd, acs->arg, NULL, &stream);
+
+       if (status == SWITCH_STATUS_SUCCESS) {
+               reply = (char *)stream.data;
+       } else {
+               freply = switch_mprintf("-ERR %s Command not found!\n", acs->cmd);
+               reply = freply;
+       }
+
+       if (!reply) {
+               reply = "Command returned no output!";
+       }
+
+       if (switch_event_create(&event, SWITCH_EVENT_BACKGROUND_JOB) == SWITCH_STATUS_SUCCESS) {
+               switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-UUID", acs->uuid_str);
+               switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Command", acs->cmd);
+               if (acs->arg) {
+                       switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-Command-Arg", acs->arg);
+               }
+               switch_event_add_body(event, "%s", reply);
+               switch_event_fire(&event);
+       }
+
+       switch_safe_free(stream.data);
+       switch_safe_free(freply);
+
+       switch_memory_pool_t *pool = acs->pool;
+       if (acs->ack == -1) {
+               int sanity = 2000;
+               while (acs->ack == -1) {
+                       switch_cond_next();
+                       if (--sanity <= 0)
+                               break;
+               }
+       }
+
+       acs = NULL;
+       switch_core_destroy_memory_pool(&pool);
+       pool = NULL;
+
+       return NULL;
+}
 
 JS_EVENTHANDLER_FUNCTION_IMPL(ExecuteBgApi)
 {
-       string cmd;\r
-       string arg;\r
-       string jobuuid;\r
-       api_command_struct_t *acs = NULL;\r
-       switch_memory_pool_t *pool;\r
-       switch_thread_t *thread;\r
-       switch_threadattr_t *thd_attr = NULL;\r
-       switch_uuid_t uuid;\r
-       int sanity = 2000;\r
-\r
+       string cmd;
+       string arg;
+       string jobuuid;
+       api_command_struct_t *acs = NULL;
+       switch_memory_pool_t *pool;
+       switch_thread_t *thread;
+       switch_threadattr_t *thd_attr = NULL;
+       switch_uuid_t uuid;
+       int sanity = 2000;
+
        if (info.Length() > 0) {
                String::Utf8Value str(info[0]);
                cmd = js_safe_str(*str);
@@ -542,42 +530,42 @@ JS_EVENTHANDLER_FUNCTION_IMPL(ExecuteBgApi)
                info.GetReturnValue().Set(false);
                return;
        }
-\r
-       switch_core_new_memory_pool(&pool);\r
-       acs = (api_command_struct_t *)switch_core_alloc(pool, sizeof(*acs));\r
-       switch_assert(acs);\r
-       acs->pool = pool;\r
-\r
-       acs->cmd = switch_core_strdup(acs->pool, cmd.c_str());\r
-\r
-       if (arg.c_str()) {\r
-               acs->arg = switch_core_strdup(acs->pool, arg.c_str());\r
-       }\r
-\r
-       switch_threadattr_create(&thd_attr, acs->pool);\r
-       switch_threadattr_detach_set(thd_attr, 1);\r
-       switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);\r
-\r
-       if (jobuuid.length() > 0) {\r
-               switch_copy_string(acs->uuid_str, jobuuid.c_str(), sizeof(acs->uuid_str));\r
-       } else {\r
-               switch_uuid_get(&uuid);\r
-               switch_uuid_format(acs->uuid_str, &uuid);\r
-       }\r
-\r
-       info.GetReturnValue().Set(String::NewFromUtf8(info.GetIsolate(), acs->uuid_str));\r
-\r
-       switch_thread_create(&thread, thd_attr, api_exec, acs, acs->pool);\r
-\r
-       while (!acs->ack) {\r
-               switch_cond_next();\r
-               if (--sanity <= 0)\r
-                       break;\r
-       }\r
-\r
-       if (acs->ack == -1) {\r
-               acs->ack--;\r
-       }\r
+
+       switch_core_new_memory_pool(&pool);
+       acs = (api_command_struct_t *)switch_core_alloc(pool, sizeof(*acs));
+       switch_assert(acs);
+       acs->pool = pool;
+
+       acs->cmd = switch_core_strdup(acs->pool, cmd.c_str());
+
+       if (arg.c_str()) {
+               acs->arg = switch_core_strdup(acs->pool, arg.c_str());
+       }
+
+       switch_threadattr_create(&thd_attr, acs->pool);
+       switch_threadattr_detach_set(thd_attr, 1);
+       switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
+
+       if (jobuuid.length() > 0) {
+               switch_copy_string(acs->uuid_str, jobuuid.c_str(), sizeof(acs->uuid_str));
+       } else {
+               switch_uuid_get(&uuid);
+               switch_uuid_format(acs->uuid_str, &uuid);
+       }
+
+       info.GetReturnValue().Set(String::NewFromUtf8(info.GetIsolate(), acs->uuid_str));
+
+       switch_thread_create(&thread, thd_attr, api_exec, acs, acs->pool);
+
+       while (!acs->ack) {
+               switch_cond_next();
+               if (--sanity <= 0)
+                       break;
+       }
+
+       if (acs->ack == -1) {
+               acs->ack--;
+       }
 }
 
 JS_EVENTHANDLER_FUNCTION_IMPL_STATIC(Destroy)