DSME_HANDLER(DSM_MSGTYPE_STATE_CHANGE_IND, server, msg) { if (state_replies) { // there are yet unsent replies to state queries; sent the first one GSList* first_node = state_replies; DsmeDbusMessage* first_reply = (DsmeDbusMessage*)(first_node->data); dsme_dbus_message_append_string(first_reply, state_name(msg->state)); dsme_dbus_signal_emit(first_reply); // deletes the reply first_node->data = 0; state_replies = g_slist_delete_link(state_replies, first_node); } else { // this is a broadcast state change if (msg->state == DSME_STATE_SHUTDOWN || msg->state == DSME_STATE_ACTDEAD || msg->state == DSME_STATE_REBOOT) { emit_dsme_dbus_signal(dsme_shutdown_ind); } DsmeDbusMessage* sig = dsme_dbus_signal_new(sig_path, sig_interface, dsme_state_change_ind); dsme_dbus_message_append_string(sig, state_name(msg->state)); dsme_dbus_signal_emit(sig); } }
DSME_HANDLER(DSM_MSGTYPE_STATE_CHANGE_IND, server, msg) { if (msg->state == DSME_STATE_SHUTDOWN || msg->state == DSME_STATE_ACTDEAD || msg->state == DSME_STATE_REBOOT) { DsmeDbusMessage* sig = dsme_dbus_signal_new(sig_path, sig_interface, dsme_shutdown_ind); dsme_dbus_message_append_string(sig, shutdown_action_name(msg->state)); dsme_dbus_signal_emit(sig); } }
DSME_HANDLER(DSM_MSGTYPE_STATE_REQ_DENIED_IND, server, msg) { const char* denied_request = shutdown_action_name(msg->state); dsme_log(LOG_CRIT, "proxying %s request denial due to %s to D-Bus", denied_request, (const char*)DSMEMSG_EXTRA(msg)); DsmeDbusMessage* sig = dsme_dbus_signal_new(sig_path, sig_interface, dsme_state_req_denied_ind); dsme_dbus_message_append_string(sig, denied_request); dsme_dbus_message_append_string(sig, DSMEMSG_EXTRA(msg)); dsme_dbus_signal_emit(sig); }
static void emit_dsme_dbus_signal(const char* name) { DsmeDbusMessage* sig = dsme_dbus_signal_new(sig_path, sig_interface, name); dsme_dbus_signal_emit(sig); }