Fork me on GitHub
<< back to documentation

Intro

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.

C Bundle Activator

#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)

C++ Bundle Activator

#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)

C API

See include/celix_bundle_context.h as a starting point for the C API.

C++ API

See celix::BundleContext as a starting point for the C++ API.