This function allows an application to get information about a working cluster.
MCO_RET mco_cluster_discover( /*IN*/ const char * conn_string, /*IN*/ timer_unit timeout, /*OUT*/ mco_cluster_node_info_t *nodes_info, /*IN/OUT*/ uint2 *n_nodes_info)
conn_string | The address of one of the nodes in the cluster (for TCP transport - in the standard form <hostname/IP>:<port>) |
timeout | The timeout to connect to the node and to get information from it |
nodes_info | Array of node's info (address , nodeID and Qrank ). |
n_nodes_info | The size of nodes_info array. On input, it specifies the allocated size of array, on the output - actual number of filled elements |
This function gets information about a working cluster. Note, that it's not necessary to call this function before mco_cluster_db_open()
.This function is similar to
with the difference that mco_cluster_get_active_nodes()
mco_cluster_discover()
can be called on any network node (not necessarily a node that is running cluster at the moment) and returns a list of cluster nodes with their IPs, IDs.
MCO_S_OK | The information was obtained successfully, n_nodes_info contains the actual size of the nodes_info array |
MCO_E_NW_INVADDR | The conn_string doesn't contain valid address |
MCO_E_NW_TIMEOUT | The timeout occurred before information was obtained |
MCO_E_NW_SOCKIOCTL | An error occurred in ioctl() syscall |
MCO_E_NW_SOCKOPT | An error occurred in setsockopt() syscall |
MCO_E_NW_SELECT | An error occurred in select() syscall |
MCO_E_NW_CONNECT | An error occurred in connect() syscall |
MCO_E_NW_SENDERR | An error occurred in send() syscall |
MCO_E_NW_RECVERR | An error occurred in recv() syscall |