The main way to use Celix is through the bundle context of a bundle. When a bundle is started the bundle context will be injected in the bundle activator.
Apache Celix is a C framework with a C and C++ (C++11) API.
#include <celix_api.h>
typedef struct activator_data {
/*intentional empty*/
} activator_data_t;
static celix_status_t activator_start(activator_data_t *data, celix_bundle_context_t *ctx) {
//use the bundle context ctx to activate the bundle
return CELIX_SUCCESS;
}
static celix_status_t activator_stop(activator_data_t *data, celix_bundle_context_t *ctx) {
//use the bundle context ctx to cleanup
return CELIX_SUCCESS;
}
CELIX_GEN_BUNDLE_ACTIVATOR(activator_data_t, activator_start, activator_stop)
#include <celix/BundleActivator.h>
class MyBundleActivator {
public:
explicit MyBundleActivator(const std::shared_ptr<celix::BundleContext>& ctx) {
//use the bundle context ctx to activate the bundle
}
};
CELIX_GEN_CXX_BUNDLE_ACTIVATOR(MyBundleActivator)
See include/celix_bundle_context.h as a starting point for the C API.
See celix::BundleContext as a starting point for the C++ API.