static void testConfigCouchApiBase(void) { VBUCKET_CONFIG_HANDLE vb = vbucket_config_parse_file(configPath("config-couch-api-base")); assert(vb); assert(strcmp(vbucket_config_get_couch_api_base(vb, 0), "http://192.168.2.123:9500/default") == 0); assert(strcmp(vbucket_config_get_couch_api_base(vb, 1), "http://192.168.2.123:9501/default") == 0); assert(strcmp(vbucket_config_get_couch_api_base(vb, 2), "http://192.168.2.123:9502/default") == 0); assert(strcmp(vbucket_config_get_rest_api_server(vb, 0), "192.168.2.123:9000") == 0); assert(strcmp(vbucket_config_get_rest_api_server(vb, 1), "192.168.2.123:9001") == 0); assert(strcmp(vbucket_config_get_rest_api_server(vb, 2), "192.168.2.123:9002") == 0); assert(strcmp(vbucket_config_get_server(vb, 0), "192.168.2.123:12000") == 0); assert(strcmp(vbucket_config_get_server(vb, 1), "192.168.2.123:12002") == 0); assert(strcmp(vbucket_config_get_server(vb, 2), "192.168.2.123:12004") == 0); }
static void refresh_nodes(clconfig_provider *pb, const hostlist_t newnodes, VBUCKET_CONFIG_HANDLE newconfig) { unsigned int ii; http_provider *http = (http_provider *)pb; hostlist_clear(http->nodes); if (!newconfig) { for (ii = 0; ii < newnodes->nentries; ii++) { hostlist_add_host(http->nodes, newnodes->entries + ii); } goto GT_DONE; } for (ii = 0; (int)ii < vbucket_config_get_num_servers(newconfig); ii++) { lcb_error_t status; const char *ss = vbucket_config_get_rest_api_server(newconfig, ii); lcb_assert(ss != NULL); status = hostlist_add_stringz(http->nodes, ss, LCB_CONFIG_HTTP_PORT); lcb_assert(status == LCB_SUCCESS); } GT_DONE: if (PROVIDER_SETTING(pb, randomize_bootstrap_nodes)) { hostlist_randomize(http->nodes); } }
static void refresh_nodes(clconfig_provider *pb, hostlist_t newnodes, VBUCKET_CONFIG_HANDLE newconfig) { unsigned int ii; http_provider *http = (http_provider *)pb; hostlist_clear(http->nodes); if (!newconfig) { for (ii = 0; ii < newnodes->nentries; ii++) { hostlist_add_host(http->nodes, newnodes->entries + ii); } return; } for (ii = 0; (int)ii < vbucket_config_get_num_servers(newconfig); ii++) { lcb_error_t status; const char *ss = vbucket_config_get_rest_api_server(newconfig, ii); lcb_assert(ss != NULL); status = hostlist_add_stringz(http->nodes, ss, 8091); lcb_assert(status == LCB_SUCCESS); } }
lcb_error_t lcb_server_initialize(lcb_server_t *server, int servernum) { /* Initialize all members */ lcb_error_t err; char *p; const char *n = vbucket_config_get_server(server->instance->vbucket_config, servernum); err = lcb_connection_init(&server->connection, server->instance->settings.io, &server->instance->settings); if (err != LCB_SUCCESS) { return err; } server->connection.data = server; server->index = servernum; server->authority = strdup(n); strcpy(server->curhost.host, n); p = strchr(server->curhost.host, ':'); *p = '\0'; strcpy(server->curhost.port, p + 1); n = vbucket_config_get_couch_api_base(server->instance->vbucket_config, servernum); server->couch_api_base = (n != NULL) ? strdup(n) : NULL; n = vbucket_config_get_rest_api_server(server->instance->vbucket_config, servernum); server->rest_api_server = strdup(n); server->io_timer = lcb_timer_create_simple(server->instance->settings.io, server, MCSERVER_TIMEOUT(server), tmo_thunk); lcb_timer_disarm(server->io_timer); return LCB_SUCCESS; }