| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | |
| 3 | #ifndef DAEMON_WATCHER_H |
| 4 | #define DAEMON_WATCHER_H |
| 5 | |
| 6 | #include "libnetdata/libnetdata.h" |
| 7 | |
| 8 | typedef enum { |
| 9 | WATCHER_STEP_ID_CLOSE_WEBRTC_CONNECTIONS, |
| 10 | WATCHER_STEP_ID_DISABLE_MAINTENANCE_NEW_QUERIES_NEW_WEB_REQUESTS_NEW_STREAMING_CONNECTIONS, |
| 11 | WATCHER_STEP_ID_STOP_MAINTENANCE_THREAD, |
| 12 | WATCHER_STEP_ID_STOP_EXPORTERS_HEALTH_AND_WEB_SERVERS_THREADS, |
| 13 | WATCHER_STEP_ID_STOP_WEBSOCKET_THREADS, |
| 14 | WATCHER_STEP_ID_STOP_COLLECTORS_AND_STREAMING_THREADS, |
| 15 | WATCHER_STEP_ID_STOP_REPLICATION_THREADS, |
| 16 | WATCHER_STEP_ID_DISABLE_ML_DETEC_AND_TRAIN_THREADS, |
| 17 | WATCHER_STEP_ID_STOP_CONTEXT_THREAD, |
| 18 | WATCHER_STEP_ID_CLEAR_WEB_CLIENT_CACHE, |
| 19 | WATCHER_STEP_ID_STOP_ACLK_SYNC_THREAD, |
| 20 | WATCHER_STEP_ID_STOP_ACLK_MQTT_THREAD, |
| 21 | WATCHER_STEP_ID_STOP_ALL_REMAINING_WORKER_THREADS, |
| 22 | WATCHER_STEP_ID_CANCEL_MAIN_THREADS, |
| 23 | WATCHER_STEP_ID_STOP_COLLECTION_FOR_ALL_HOSTS, |
| 24 | WATCHER_STEP_ID_WAIT_FOR_DBENGINE_COLLECTORS_TO_FINISH, |
| 25 | WATCHER_STEP_ID_STOP_DBENGINE_TIERS, |
| 26 | WATCHER_STEP_ID_STOP_METASYNC_THREADS, |
| 27 | WATCHER_STEP_ID_JOIN_STATIC_THREADS, |
| 28 | WATCHER_STEP_ID_CLOSE_SQL_DATABASES, |
| 29 | WATCHER_STEP_ID_REMOVE_PID_FILE, |
| 30 | WATCHER_STEP_ID_FREE_OPENSSL_STRUCTURES, |
| 31 | |
| 32 | // Always keep this as the last enum value |
| 33 | WATCHER_STEP_ID_MAX |
| 34 | } watcher_step_id_t; |
| 35 | |
| 36 | typedef struct { |
| 37 | const char *msg; |
| 38 | struct completion p; |
| 39 | } watcher_step_t; |
| 40 | |
| 41 | extern watcher_step_t *watcher_steps; |
| 42 | |
| 43 | void watcher_thread_start(void); |
| 44 | void watcher_thread_stop(void); |
| 45 | |
| 46 | void watcher_shutdown_begin(void); |
| 47 | void watcher_shutdown_end(void); |
| 48 | |
| 49 | void watcher_step_complete(watcher_step_id_t step_id); |
| 50 | |
| 51 | #endif /* DAEMON_WATCHER_H */ |