]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[core] Add SHUTDOWN_REQUESTED event. Bind to this event to know when ASAP or elegant...
authorChris Rienzo <chris@signalwire.com>
Sun, 15 Dec 2019 00:53:29 +0000 (00:53 +0000)
committerAndrey Volk <andywolk@gmail.com>
Mon, 30 Dec 2019 23:11:12 +0000 (03:11 +0400)
src/include/switch_types.h
src/switch_core.c
src/switch_event.c

index 09fe09defc641774af6886bebf5323dfcee40b51..d1dde740db270ff8fb4df6ff8637809e2ad48771 100644 (file)
@@ -2048,6 +2048,7 @@ typedef uint32_t switch_io_flag_t;
     SWITCH_EVENT_CALL_SETUP_RESULT
     SWITCH_EVENT_CALL_DETAIL
     SWITCH_EVENT_DEVICE_STATE
+    SWITCH_EVENT_SHUTDOWN_REQUESTED            - Shutdown of the system has been requested
     SWITCH_EVENT_ALL                           - All events at once
 </pre>
 
@@ -2143,6 +2144,7 @@ typedef enum {
        SWITCH_EVENT_CALL_DETAIL,
        SWITCH_EVENT_DEVICE_STATE,
        SWITCH_EVENT_TEXT,
+       SWITCH_EVENT_SHUTDOWN_REQUESTED,
        SWITCH_EVENT_ALL
 } switch_event_types_t;
 
index baed1783e62fa16cf9b19c0081e5fb7e85d7cfb0..d3150835c01f82583b7e78fb9f58676d87272e4a 100644 (file)
@@ -2809,7 +2809,11 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, void *
                {
                        int x = 19;
                        uint32_t count;
-
+                       switch_event_t *shutdown_requested_event = NULL;
+                       if (switch_event_create(&shutdown_requested_event, SWITCH_EVENT_SHUTDOWN_REQUESTED) == SWITCH_STATUS_SUCCESS) {
+                               switch_event_add_header(shutdown_requested_event, SWITCH_STACK_BOTTOM, "Event-Info", "%s", cmd == SCSC_SHUTDOWN_ASAP ? "ASAP" : "elegant");
+                               switch_event_fire(&shutdown_requested_event);
+                       }
                        switch_set_flag((&runtime), SCF_SHUTDOWN_REQUESTED);
                        if (cmd == SCSC_SHUTDOWN_ASAP) {
                                switch_set_flag((&runtime), SCF_NO_NEW_SESSIONS);
index aa0ea7ee88d8afef36f1fdfc3b6dabb074ff4f0d..8b8d57250ca7cd054406636c18dff5d61c90fe46 100644 (file)
@@ -223,6 +223,7 @@ static char *EVENT_NAMES[] = {
        "CALL_DETAIL",
        "DEVICE_STATE",
        "TEXT",
+       "SHUTDOWN_REQUESTED",
        "ALL"
 };