Ejemplo n.º 1
0
celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
    celix_status_t status = CELIX_SUCCESS;
    struct activator *activator = userData;

    if (serviceTracker_close(activator->remoteServiceAdminTracker) == CELIX_SUCCESS) {
        serviceTracker_destroy(activator->remoteServiceAdminTracker);
    }

    if (serviceTracker_close(activator->endpointListenerTracker) == CELIX_SUCCESS) {
        serviceTracker_destroy(activator->endpointListenerTracker);
    }

    bundleContext_removeServiceListener(context, activator->serviceListener);
    free(activator->serviceListener);

    serviceRegistration_unregister(activator->hook);
    free(activator->hookService);

    serviceRegistration_unregister(activator->endpointListenerService);
    free(activator->endpointListener);

    serviceRegistration_unregister(activator->scopeReg);

    topologyManager_closeImports(activator->manager);

    return status;
}
Ejemplo n.º 2
0
celix_status_t refining_driver_cleanup_device(refining_driver_device_pt handler) {
	celix_status_t status = CELIX_SUCCESS;;
	refining_driver_device_pt device = handler;
	if (device != NULL) {
		if (device->listener != NULL) {
			bundleContext_removeServiceListener(device->driver->context, device->listener);
		}
	}
	return status;
}
Ejemplo n.º 3
0
celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
    celix_status_t status;
	shell_tui_activator_pt act = (shell_tui_activator_pt) userData;
	status = bundleContext_removeServiceListener(context, act->listener);

	if (status == CELIX_SUCCESS) {
		apr_status_t join;
        free(act->listener);
        act->listener = NULL;
        act->context = NULL;
        act->running = false;
        apr_thread_join(&join, act->runnable);
	}

	return status;
}
Ejemplo n.º 4
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;
}
Ejemplo n.º 5
0
celix_status_t serviceTracker_close(service_tracker_pt tracker) {
	celix_status_t status = CELIX_SUCCESS;

	status = bundleContext_removeServiceListener(tracker->context, tracker->listener);
	if (status == CELIX_SUCCESS) {
		array_list_pt refs = serviceTracker_getServiceReferences(tracker);
		if (refs != NULL) {
			unsigned int i;
			for (i = 0; i < arrayList_size(refs); i++) {
				service_reference_pt ref = (service_reference_pt) arrayList_get(refs, i);
				status = serviceTracker_untrack(tracker, ref, NULL);
			}
		}
		arrayList_destroy(refs);
	}

	framework_logIfError(logger, status, NULL, "Cannot close tracker");

	return status;
}