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.