int on_switch(char * v, void *d) { __bool ok = __false; CArgs args; PCRTK_PACKET p = (PCRTK_PACKET)d; parse_arg_ex(v, &args, " "); if(args.argc >= 2){ if(!strcmpi(args.argv[1], "primary")){ ok = switch_to_primary(); }else if(!strcmpi(args.argv[1], "backup")){ ok = switch_to_backup(); } } send_rtk_data_with_guid( vbus_system, &p->src, &p->guid, ok ? PT_System : PT_System | PF_Failed | PF_ACK, 0, 0 ); return 0; }
bool CRtkService::_uninit() { bool is_server; is_server = get_power_state()==PWR_RUNNING? true : false; utils_trace("Please stand-by ...\n"); switch_to_backup(); uninit_ioss(); utils_trace("IO subsystem stopped.\n"); destroy_rtdb(); utils_trace("Realtime Database Subsystem closed.\n"); #ifdef _WIN32 uninit_spac(); #endif utils_trace("IO Subsystem closed.\n"); if(is_server){ if(!bring_up_backups()){ offline_broadcast(); } } unregister_power_callback(power_state_changed, 0); uninit_network(); utils_trace("Networking subsystem closed.\n"); utils_trace("%s stopped.\n", versionString.c_str()); uninit_config(); uninit_server_shell(); return true; }