Hi Bjoern, I think you forgot to add a file to the commit. It is not building for me:
remote_services/discovery_etcd/private/src/etcd_watcher.c:237:16: error: conflicting types for ‘etcdWatcher_create’ celix_status_t etcdWatcher_create(discovery_pt discovery, bundle_context_pt context, remote_services/discovery_etcd/private/include/etcd_watcher.h:36:16: note: previous declaration of ‘etcdWatcher_create’ was here celix_status_t etcdWatcher_create(endpoint_discovery_poller_pt poller, bundle_context_pt context, etcd_watcher_pt *watcher); 2014-10-17 3:16 GMT-04:00 <[email protected]>: > Author: bpetri > Date: Fri Oct 17 07:16:29 2014 > New Revision: 1632480 > > URL: http://svn.apache.org/r1632480 > Log: > CELIX-168: Added new property DISCOVERY_ETCD_ROOT_PATH, which allows to > change the etcd root path > > Modified: > celix/trunk/remote_services/discovery_etcd/private/src/discovery_impl.c > celix/trunk/remote_services/discovery_etcd/private/src/etcd_watcher.c > > Modified: > celix/trunk/remote_services/discovery_etcd/private/src/discovery_impl.c > URL: > http://svn.apache.org/viewvc/celix/trunk/remote_services/discovery_etcd/private/src/discovery_impl.c?rev=1632480&r1=1632479&r2=1632480&view=diff > > ============================================================================== > --- > celix/trunk/remote_services/discovery_etcd/private/src/discovery_impl.c > (original) > +++ > celix/trunk/remote_services/discovery_etcd/private/src/discovery_impl.c Fri > Oct 17 07:16:29 2014 > @@ -124,12 +124,12 @@ celix_status_t discovery_start(discovery > return CELIX_BUNDLE_EXCEPTION; > } > > - status = etcdWatcher_create(discovery->poller, discovery->context, > &discovery->watcher); > + status = endpointDiscoveryServer_create(discovery, > discovery->context, &discovery->server); > if (status != CELIX_SUCCESS) { > - return CELIX_BUNDLE_EXCEPTION; > + return CELIX_BUNDLE_EXCEPTION; > } > > - status = endpointDiscoveryServer_create(discovery, > discovery->context, &discovery->server); > + status = etcdWatcher_create(discovery, discovery->context, > &discovery->watcher); > if (status != CELIX_SUCCESS) { > return CELIX_BUNDLE_EXCEPTION; > } > @@ -140,12 +140,12 @@ celix_status_t discovery_start(discovery > celix_status_t discovery_stop(discovery_pt discovery) { > celix_status_t status; > > - status = endpointDiscoveryServer_destroy(discovery->server); > + status = etcdWatcher_destroy(discovery->watcher); > if (status != CELIX_SUCCESS) { > return CELIX_BUNDLE_EXCEPTION; > } > > - status = etcdWatcher_destroy(discovery->watcher); > + status = endpointDiscoveryServer_destroy(discovery->server); > if (status != CELIX_SUCCESS) { > return CELIX_BUNDLE_EXCEPTION; > } > > Modified: > celix/trunk/remote_services/discovery_etcd/private/src/etcd_watcher.c > URL: > http://svn.apache.org/viewvc/celix/trunk/remote_services/discovery_etcd/private/src/etcd_watcher.c?rev=1632480&r1=1632479&r2=1632480&view=diff > > ============================================================================== > --- celix/trunk/remote_services/discovery_etcd/private/src/etcd_watcher.c > (original) > +++ celix/trunk/remote_services/discovery_etcd/private/src/etcd_watcher.c > Fri Oct 17 07:16:29 2014 > @@ -38,8 +38,7 @@ > #include "endpoint_discovery_poller.h" > > struct etcd_watcher { > - endpoint_discovery_poller_pt poller; > - bundle_context_pt context; > + discovery_pt discovery; > > celix_thread_mutex_t watcherLock; > celix_thread_t watcherThread; > @@ -47,6 +46,9 @@ struct etcd_watcher { > volatile bool running; > }; > > +#define CFG_ETCD_ROOT_PATH "DISCOVERY_ETCD_ROOT_PATH" > +#define DEFAULT_ETCD_ROOTPATH "discovery" > + > #define CFG_ETCD_SERVER_IP "DISCOVERY_ETCD_SERVER_IP" > #define DEFAULT_ETCD_SERVER_IP "127.0.0.1" > > @@ -59,10 +61,16 @@ struct etcd_watcher { > > > // note that the rootNode shouldn't have a leading slash > -static celix_status_t etcdWatcher_getRootPath(char* rootNode) { > +static celix_status_t etcdWatcher_getRootPath(bundle_context_pt context, > char* rootNode) { > celix_status_t status = CELIX_SUCCESS; > + char* rootPath = NULL; > > - strcpy(rootNode, "discovery"); > + if (((bundleContext_getProperty(context, CFG_ETCD_ROOT_PATH, > &rootPath)) != CELIX_SUCCESS) || (!rootPath)) { > + strcpy(rootNode, DEFAULT_ETCD_ROOTPATH); > + } > + else { > + strcpy(rootNode, rootPath); > + } > > return status; > } > @@ -73,7 +81,7 @@ static celix_status_t etcdWatcher_getLoc > char rootPath[MAX_ROOTNODE_LENGTH]; > char* uuid = NULL; > > - if (((etcdWatcher_getRootPath(&rootPath[0]) != CELIX_SUCCESS)) || > (!rootPath)) { > + if ((etcdWatcher_getRootPath(context, &rootPath[0]) != > CELIX_SUCCESS)) { > status = CELIX_ILLEGAL_STATE; > } > else if (((bundleContext_getProperty(context, > OSGI_FRAMEWORK_FRAMEWORK_UUID, &uuid)) != CELIX_SUCCESS) || (!uuid)) { > @@ -95,7 +103,7 @@ static celix_status_t etcdWatcher_getLoc > * returns the modifiedIndex of the last modified > * discovery endpoint (see etcd documentation). > */ > -static celix_status_t > etcdWatcher_addAlreadyExistingWatchpoints(endpoint_discovery_poller_pt > poller, int* highestModified) { > +static celix_status_t > etcdWatcher_addAlreadyExistingWatchpoints(discovery_pt discovery, int* > highestModified) { > celix_status_t status = CELIX_SUCCESS; > char** nodeArr = calloc(MAX_NODES, sizeof(*nodeArr)); > char rootPath[MAX_ROOTNODE_LENGTH]; > @@ -108,7 +116,7 @@ static celix_status_t etcdWatcher_addAlr > } > > // we need to go though all nodes and get the highest modifiedIndex > - if (((status = etcdWatcher_getRootPath(&rootPath[0])) == > CELIX_SUCCESS) && > + if (((status = etcdWatcher_getRootPath(discovery->context, > &rootPath[0])) == CELIX_SUCCESS) && > (etcd_getNodes(rootPath, nodeArr, &size) == true)) { > for (i = 0; i < size; i++) { > char* key = nodeArr[i]; > @@ -118,7 +126,7 @@ static celix_status_t etcdWatcher_addAlr > > if (etcd_get(key, &value[0], &action[0], > &modIndex) == true) { > // check that this is not equals to the > local endpoint > - > endpointDiscoveryPoller_addDiscoveryEndpoint(poller, strdup(&value[0])); > + > endpointDiscoveryPoller_addDiscoveryEndpoint(discovery->poller, > strdup(&value[0])); > > if (modIndex > *highestModified) { > *highestModified = modIndex; > @@ -193,8 +201,11 @@ static void* etcdWatcher_run(void* data) > static char rootPath[MAX_ROOTNODE_LENGTH]; > int highestModified = 0; > > - etcdWatcher_addAlreadyExistingWatchpoints(watcher->poller, > &highestModified); > - etcdWatcher_getRootPath(&rootPath[0]); > + bundle_context_pt context = watcher->discovery->context; > + endpoint_discovery_poller_pt poller = watcher->discovery->poller; > + > + etcdWatcher_addAlreadyExistingWatchpoints(watcher->discovery, > &highestModified); > + etcdWatcher_getRootPath(context, &rootPath[0]); > > while (watcher->running) { > char value[MAX_VALUE_LENGTH]; > @@ -204,16 +215,16 @@ static void* etcdWatcher_run(void* data) > if (etcd_watch(rootPath, highestModified + 1, &action[0], > &preValue[0], &value[0]) == true) { > > if (strcmp(action, "set") == 0) { > - > endpointDiscoveryPoller_removeDiscoveryEndpoint(watcher->poller, > &preValue[0]); > - > endpointDiscoveryPoller_addDiscoveryEndpoint(watcher->poller, &value[0]); > + > endpointDiscoveryPoller_removeDiscoveryEndpoint(poller, &preValue[0]); > + > endpointDiscoveryPoller_addDiscoveryEndpoint(poller, &value[0]); > } else if (strcmp(action, "delete") == 0) { > - > endpointDiscoveryPoller_removeDiscoveryEndpoint(watcher->poller, > &preValue[0]); > + > endpointDiscoveryPoller_removeDiscoveryEndpoint(poller, &preValue[0]); > } else { > fw_log(logger, OSGI_FRAMEWORK_LOG_INFO, > "Unexpected action: %s", action); > } > } > // update own framework uuid in any case; > - etcdWatcher_addOwnFramework(watcher->context); > + etcdWatcher_addOwnFramework(context); > } > > return NULL; > @@ -223,7 +234,7 @@ static void* etcdWatcher_run(void* data) > * the ectdWatcher needs to have access to the endpoint_discovery_poller > and therefore is only > * allowed to be created after the endpoint_discovery_poller > */ > -celix_status_t etcdWatcher_create(endpoint_discovery_poller_pt poller, > bundle_context_pt context, > +celix_status_t etcdWatcher_create(discovery_pt discovery, > bundle_context_pt context, > etcd_watcher_pt *watcher) > { > celix_status_t status = CELIX_SUCCESS; > @@ -232,7 +243,7 @@ celix_status_t etcdWatcher_create(endpoi > char* etcd_port_string = NULL; > int etcd_port = 0; > > - if (poller == NULL) { > + if (discovery == NULL) { > return CELIX_BUNDLE_EXCEPTION; > } > > @@ -242,8 +253,7 @@ celix_status_t etcdWatcher_create(endpoi > } > else > { > - (*watcher)->poller = poller; > - (*watcher)->context = context; > + (*watcher)->discovery = discovery; > } > > if ((bundleContext_getProperty(context, CFG_ETCD_SERVER_IP, > &etcd_server) != CELIX_SUCCESS) || !etcd_server) { > @@ -263,8 +273,6 @@ celix_status_t etcdWatcher_create(endpoi > } > } > > - > - > if (etcd_init(etcd_server, etcd_port) == false) > { > return CELIX_BUNDLE_EXCEPTION; > @@ -302,7 +310,8 @@ celix_status_t etcdWatcher_destroy(etcd_ > celixThread_join(watcher->watcherThread, NULL); > > // register own framework > - if ((status = etcdWatcher_getLocalNodePath(watcher->context, > &localNodePath[0])) != CELIX_SUCCESS) { > + if ((status = etcdWatcher_getLocalNodePath( > + watcher->discovery->context, &localNodePath[0])) > != CELIX_SUCCESS) { > return status; > } > > > > -- Met vriendelijke groet, Alexander Broekhuis
