gboolean (*dispatch_method)(int fd, gpointer user_data),
gboolean (*dispatch_method)(IPC_Channel *channel, gpointer user_data),
register_with_ha(ll_cluster_t *hb_cluster, const char *client_name,		 gboolean (*dispatch_method)(int fd, gpointer user_data),		 void (*message_callback)(const struct ha_msg* msg,					  void* private_data),		 GDestroyNotify cleanup_method){	int facility;		if(safe_val3(NULL, hb_cluster, llc_ops, errmsg) == NULL) {	  crm_crit("cluster errmsg function unavailable");	}	crm_info("Signing in with Heartbeat");	if (hb_cluster->llc_ops->signon(hb_cluster, client_name)!= HA_OK) {		crm_err("Cannot sign on with heartbeat");		if(safe_val3(NULL, hb_cluster, llc_ops, errmsg) == NULL) {			crm_crit("cluster errmsg function unavailable");		} else {			crm_err("REASON: %s",				hb_cluster->llc_ops->errmsg(hb_cluster));		}		return FALSE;	}	/* change the logging facility to the one used by heartbeat daemon */	crm_info("Switching to Heartbeat logger");	if (( facility =	      hb_cluster->llc_ops->get_logfacility(hb_cluster)) > 0) {		cl_log_set_facility(facility); 	}		crm_verbose("Facility: %d", facility);	  	crm_debug("Be informed of CRM messages");	if (HA_OK != hb_cluster->llc_ops->set_msg_callback(		    hb_cluster, T_CRM, message_callback, hb_cluster)){				crm_err("Cannot set CRM message callback");		if(safe_val3(NULL, hb_cluster, llc_ops, errmsg) == NULL) {			crm_crit("cluster errmsg function unavailable");		} else {			crm_err("REASON: %s",				hb_cluster->llc_ops->errmsg(hb_cluster));		}		return FALSE;	}		G_main_add_fd(G_PRIORITY_HIGH, 		      hb_cluster->llc_ops->inputfd(hb_cluster),		      FALSE,  dispatch_method,  hb_cluster /* userdata  */,  		      cleanup_method);	crm_debug("Finding our node name");	if ((fsa_our_uname =	     hb_cluster->llc_ops->get_mynodeid(hb_cluster)) == NULL) {		crm_err("get_mynodeid() failed");		return FALSE;	}	crm_info("FSA Hostname: %s", fsa_our_uname);	return TRUE;    }