int manager_endpoints_init(void) { struct stasis_topic *endpoint_topic; int ret = 0; if (endpoint_router) { /* Already initialized */ return 0; } ast_register_atexit(manager_endpoints_shutdown); endpoint_topic = ast_endpoint_topic_all_cached(); if (!endpoint_topic) { return -1; } endpoint_router = stasis_message_router_create(endpoint_topic); if (!endpoint_router) { return -1; } ret |= stasis_message_router_add(endpoint_router, ast_endpoint_state_type(), endpoint_state_cb, NULL); /* If somehow we failed to add any routes, just shut down the whole * thing and fail it. */ if (ret) { manager_endpoints_shutdown(); return -1; } return 0; }
int ast_pickup_init(void) { STASIS_MESSAGE_TYPE_INIT(ast_call_pickup_type); ast_register_atexit(pickup_shutdown); return 0; }
int ast_timing_init(void) { if (!(timing_interfaces = ast_heap_create(2, timing_holder_cmp, 0))) { return -1; } ast_register_atexit(timing_shutdown); return ast_cli_register_multiple(cli_timing, ARRAY_LEN(cli_timing)); }
int ast_format_cache_init(void) { formats = ao2_container_alloc_options(AO2_ALLOC_OPT_LOCK_RWLOCK, CACHE_BUCKETS, format_hash_cb, format_cmp_cb); if (!formats) { return -1; } ast_register_atexit(format_cache_shutdown); return 0; }
int manager_mwi_init(void) { int ret = 0; struct stasis_topic *manager_topic; struct stasis_topic *mwi_topic; struct stasis_message_router *message_router; manager_topic = ast_manager_get_topic(); if (!manager_topic) { return -1; } message_router = ast_manager_get_message_router(); if (!message_router) { return -1; } mwi_topic = ast_mwi_topic_all(); if (!mwi_topic) { return -1; } topic_forwarder = stasis_forward_all(mwi_topic, manager_topic); if (!topic_forwarder) { return -1; } ast_register_atexit(manager_mwi_shutdown); ret |= stasis_message_router_add(message_router, ast_mwi_state_type(), mwi_update_cb, NULL); ret |= stasis_message_router_add(message_router, ast_mwi_vm_app_type(), mwi_app_event_cb, NULL); /* If somehow we failed to add any routes, just shut down the whole * thing and fail it. */ if (ret) { manager_mwi_shutdown(); return -1; } return 0; }
int astdb_init(void) { if (db_init()) { return -1; } ast_cond_init(&dbcond, NULL); if (ast_pthread_create_background(&syncthread, NULL, db_sync_thread, NULL)) { return -1; } ast_register_atexit(astdb_atexit); ast_cli_register_multiple(cli_database, ARRAY_LEN(cli_database)); ast_manager_register_xml_core("DBGet", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING, manager_dbget); ast_manager_register_xml_core("DBPut", EVENT_FLAG_SYSTEM, manager_dbput); ast_manager_register_xml_core("DBDel", EVENT_FLAG_SYSTEM, manager_dbdel); ast_manager_register_xml_core("DBDelTree", EVENT_FLAG_SYSTEM, manager_dbdeltree); return 0; }
int ast_local_init(void) { if (STASIS_MESSAGE_TYPE_INIT(ast_local_optimization_begin_type)) { return -1; } if (STASIS_MESSAGE_TYPE_INIT(ast_local_optimization_end_type)) { return -1; } if (STASIS_MESSAGE_TYPE_INIT(ast_local_bridge_type)) { return -1; } if (!(local_tech.capabilities = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT))) { return -1; } ast_format_cap_append_by_type(local_tech.capabilities, AST_MEDIA_TYPE_UNKNOWN); locals = ao2_container_alloc_list(AO2_ALLOC_OPT_LOCK_MUTEX, 0, NULL, locals_cmp_cb); if (!locals) { ao2_cleanup(local_tech.capabilities); local_tech.capabilities = NULL; return -1; } /* Make sure we can register our channel type */ if (ast_channel_register(&local_tech)) { ast_log(LOG_ERROR, "Unable to register channel class 'Local'\n"); ao2_ref(locals, -1); ao2_cleanup(local_tech.capabilities); local_tech.capabilities = NULL; return -1; } ast_cli_register_multiple(cli_local, ARRAY_LEN(cli_local)); ast_manager_register_xml_core("LocalOptimizeAway", EVENT_FLAG_SYSTEM|EVENT_FLAG_CALL, manager_optimize_away); ast_register_atexit(local_shutdown); return 0; }
int astdb_init(void) { ast_cond_init(&dbcond, NULL); if (ast_pthread_create_background(&syncthread, NULL, db_sync_thread, NULL)) { return -1; } ast_mutex_lock(&dblock); /* Ignore check_return warning from Coverity for dbinit below */ dbinit(); ast_mutex_unlock(&dblock); ast_cli_register_multiple(cli_database, ARRAY_LEN(cli_database)); ast_manager_register_xml("DBGet", EVENT_FLAG_SYSTEM | EVENT_FLAG_REPORTING, manager_dbget); ast_manager_register_xml("DBPut", EVENT_FLAG_SYSTEM, manager_dbput); ast_manager_register_xml("DBDel", EVENT_FLAG_SYSTEM, manager_dbdel); ast_manager_register_xml("DBDelTree", EVENT_FLAG_SYSTEM, manager_dbdeltree); ast_register_atexit(astdb_shutdown); return 0; }
int ast_cel_engine_init(void) { if (!(appset = ao2_container_alloc(NUM_APP_BUCKETS, app_hash, app_cmp))) { return -1; } if (do_reload()) { ao2_ref(appset, -1); appset = NULL; return -1; } if (ast_cli_register(&cli_status)) { ao2_ref(appset, -1); appset = NULL; return -1; } ast_register_atexit(ast_cel_engine_term); return 0; }
int manager_bridging_init(void) { int ret = 0; struct stasis_topic *manager_topic; struct stasis_topic *bridge_topic; if (bridge_state_router) { /* Already initialized */ return 0; } ast_register_atexit(manager_bridging_shutdown); ast_register_cleanup(manager_bridging_cleanup); manager_topic = ast_manager_get_topic(); if (!manager_topic) { return -1; } bridge_topic = ast_bridge_topic_all_cached(); if (!bridge_topic) { return -1; } topic_forwarder = stasis_forward_all(bridge_topic, manager_topic); if (!topic_forwarder) { return -1; } bridge_state_router = ast_manager_get_message_router(); if (!bridge_state_router) { return -1; } ret |= stasis_message_router_add_cache_update(bridge_state_router, ast_bridge_snapshot_type(), bridge_snapshot_update, NULL); ret |= stasis_message_router_add(bridge_state_router, ast_bridge_merge_message_type(), bridge_merge_cb, NULL); ret |= stasis_message_router_add(bridge_state_router, ast_channel_entered_bridge_type(), channel_enter_cb, NULL); ret |= stasis_message_router_add(bridge_state_router, ast_channel_left_bridge_type(), channel_leave_cb, NULL); ret |= ast_manager_register_xml_core("BridgeList", 0, manager_bridges_list); ret |= ast_manager_register_xml_core("BridgeInfo", 0, manager_bridge_info); ret |= ast_manager_register_xml_core("BridgeDestroy", 0, manager_bridge_destroy); ret |= ast_manager_register_xml_core("BridgeKick", 0, manager_bridge_kick); /* If somehow we failed to add any routes, just shut down the whole * thing and fail it. */ if (ret) { manager_bridging_shutdown(); return -1; } return 0; }