feat(component-failover-adoption): add candidate-list-to-client-config helper
xce_cluster_config_to_client_config() converts a validated candidate list into a fully-populated xce_client_config_t, copying candidates in order with no special-casing for a single candidate. The truncate-with-warning safety net stays in place as a defensive guard now that N_MAX_MASTERS and MAX_HA_CANDIDATES match. Also removes a WARN check in xce_cluster_config_validate() that became unreachable dead code once task 1.1 reconciled the two candidate-count constants (both checks tested the same field against the same constant with no mutation between them). Task 1.2 of component-failover-adoption (Requirement 1 AC1-AC7).
This commit is contained in:
parent
fe8b4b86bf
commit
210faa2b7a
4 changed files with 190 additions and 5 deletions
|
|
@ -7,6 +7,7 @@
|
|||
#define XCE_CLUSTER_H
|
||||
|
||||
#include <stddef.h>
|
||||
#include "client.h" /* xce_client_config_t, N_MAX_MASTERS */
|
||||
#include "config.h" /* MAX_HA_CANDIDATES, XCE_MAXHOSTNAME_LEN */
|
||||
|
||||
/**
|
||||
|
|
@ -28,7 +29,6 @@ typedef struct {
|
|||
* (encryption without client-side peer certificate verification).
|
||||
*
|
||||
* candidates_count must be in [1, MAX_HA_CANDIDATES].
|
||||
* A WARN is logged at startup if candidates_count > 3.
|
||||
*/
|
||||
typedef struct {
|
||||
xce_candidate_t candidates[MAX_HA_CANDIDATES];
|
||||
|
|
@ -79,6 +79,24 @@ typedef struct {
|
|||
*/
|
||||
int xce_cluster_config_validate(const xce_cluster_config_t* cfg);
|
||||
|
||||
/**
|
||||
* xce_cluster_config_to_client_config() — convert a validated candidate list
|
||||
* into an xce_client_config_t's master fields (nmasters/masters/master_ports).
|
||||
*
|
||||
* Copies up to N_MAX_MASTERS candidates from cfg->candidates[] in order.
|
||||
* If cfg->candidates_count > N_MAX_MASTERS, copies the first N_MAX_MASTERS and
|
||||
* logs a WARN identifying the truncated count (mirrors xce_test's existing
|
||||
* clamp behavior).
|
||||
*
|
||||
* Does NOT set out->from / out->key — caller sets those separately.
|
||||
* Does NOT validate cfg — caller must have already called
|
||||
* xce_cluster_config_validate() successfully.
|
||||
*
|
||||
* Returns 0 on success, -EINVAL if cfg or out is NULL or cfg->candidates_count < 1.
|
||||
*/
|
||||
int xce_cluster_config_to_client_config(const xce_cluster_config_t* cfg,
|
||||
xce_client_config_t* out);
|
||||
|
||||
/**
|
||||
* xce_connect_cluster() — connect to the cluster via candidate list.
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue