MCPcopy Create free account
hub / github.com/ClusterLabs/pacemaker / cib_native_callback

Function cib_native_callback

lib/cib/cib_utils.c:619–673  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

617}
618
619void
620cib_native_callback(cib_t * cib, xmlNode * msg, int call_id, int rc)
621{
622 xmlNode *output = NULL;
623 cib_callback_client_t *blob = NULL;
624 cib_callback_client_t local_blob;
625
626 local_blob.id = NULL;
627 local_blob.callback = NULL;
628 local_blob.user_data = NULL;
629 local_blob.only_success = FALSE;
630
631 if (msg != NULL) {
632 crm_element_value_int(msg, F_CIB_RC, &rc);
633 crm_element_value_int(msg, F_CIB_CALLID, &call_id);
634 output = get_message_xml(msg, F_CIB_CALLDATA);
635 }
636
637 blob = g_hash_table_lookup(cib_op_callback_table, GINT_TO_POINTER(call_id));
638
639 if (blob != NULL) {
640 local_blob = *blob;
641 blob = NULL;
642
643 remove_cib_op_callback(call_id, FALSE);
644
645 } else {
646 crm_trace("No callback found for call %d", call_id);
647 local_blob.callback = NULL;
648 }
649
650 if (cib == NULL) {
651 crm_debug("No cib object supplied");
652 }
653
654 if (rc == -pcmk_err_diff_resync) {
655 /* This is an internal value that clients do not and should not care about */
656 rc = pcmk_ok;
657 }
658
659 if (local_blob.callback != NULL && (rc == pcmk_ok || local_blob.only_success == FALSE)) {
660 crm_trace("Invoking callback %s for call %d", crm_str(local_blob.id), call_id);
661 local_blob.callback(msg, call_id, rc, output, local_blob.user_data);
662
663 } else if (cib && cib->op_callback == NULL && rc != pcmk_ok) {
664 crm_warn("CIB command failed: %s", pcmk_strerror(rc));
665 crm_log_xml_debug(msg, "Failed CIB Update");
666 }
667
668 if (cib && cib->op_callback != NULL) {
669 crm_trace("Invoking global callback for call %d", call_id);
670 cib->op_callback(msg, call_id, rc, output);
671 }
672 crm_trace("OP callback activated.");
673}
674
675void
676cib_native_notify(gpointer data, gpointer user_data)

Callers 3

cib_remote_dispatchFunction · 0.85

Calls 4

crm_element_value_intFunction · 0.85
get_message_xmlFunction · 0.85
remove_cib_op_callbackFunction · 0.85
pcmk_strerrorFunction · 0.85

Tested by

no test coverage detected