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 |