Exemplo n.º 1
0
celix_status_t serviceTracker_destroy(service_tracker_pt tracker) {
	if (tracker->listener != NULL) {
		bundleContext_removeServiceListener(tracker->context, tracker->listener);
	}
	if (tracker->customizer != NULL) {
	    serviceTrackerCustomizer_destroy(tracker->customizer);
	}
	arrayList_destroy(tracker->tracked);

	if (tracker->listener != NULL) {
		free (tracker->listener);
	}

	free(tracker->filter);
	free(tracker);

	return CELIX_SUCCESS;
}
Exemplo n.º 2
0
celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
	celix_status_t status = CELIX_SUCCESS;
	struct activator *activator;

	activator = calloc(1, sizeof(*activator));
	if (!activator) {
		status = CELIX_ENOMEM;
	}
	else{
		*userData = activator;

		status = pubsubAdmin_create(context, &(activator->admin));

		if(status == CELIX_SUCCESS){
			service_tracker_customizer_pt customizer = NULL;
			status = serviceTrackerCustomizer_create(activator->admin,
					NULL,
					pubsubAdmin_serializerAdded,
					NULL,
					pubsubAdmin_serializerRemoved,
					&customizer);
			if(status == CELIX_SUCCESS){
				status = serviceTracker_create(context, PUBSUB_SERIALIZER_SERVICE, customizer, &(activator->serializerTracker));
				if(status != CELIX_SUCCESS){
					serviceTrackerCustomizer_destroy(customizer);
					pubsubAdmin_destroy(activator->admin);
				}
			}
			else{
				pubsubAdmin_destroy(activator->admin);
			}
		}
	}

	return status;
}