Apache Celix
2.4.0
Apache Celix is a framework for C, C++14 and C++17 to develop dynamic modular software applications using component and in-process service-oriented programming.
|
#include <stdbool.h>
#include "celix_types.h"
#include "celix_errno.h"
#include "celix_properties.h"
#include "celix_array_list.h"
#include "celix_dm_info.h"
#include "celix_framework_export.h"
Go to the source code of this file.
Macros | |
#define | CELIX_DM_COMPONENT_UUID "component.uuid" |
#define | CELIX_DM_COMPONENT_MAX_ID_LENGTH 64 |
#define | CELIX_DM_COMPONENT_MAX_NAME_LENGTH 128 |
#define | CELIX_DM_COMPONENT_SET_IMPLEMENTATION_DESTROY_FUNCTION(dmCmp, type, destroy) |
#define | CELIX_DM_COMPONENT_SET_CALLBACKS(dmCmp, type, init, start, stop, deinit) |
#define | CELIX_DMCOMPONENT_SETCALLBACKS(dmCmp, type, init, start, stop, deinit) CELIX_DM_COMPONENT_SET_CALLBACKS(dmCmp, type*, init, start, stop, deinit) |
Typedefs | |
typedef enum celix_dm_component_state_enum | celix_dm_component_state_t |
typedef int(* | celix_dm_cmp_lifecycle_fpt) (void *userData) |
typedef void(* | celix_dm_cmp_impl_destroy_fpt) (void *) |
Functions | |
CELIX_FRAMEWORK_EXPORT celix_dm_component_t * | celix_dmComponent_create (celix_bundle_context_t *context, const char *name) |
CELIX_FRAMEWORK_EXPORT celix_dm_component_t * | celix_dmComponent_createWithUUID (celix_bundle_context_t *context, const char *name, const char *UUID) |
const CELIX_FRAMEWORK_EXPORT char * | celix_dmComponent_getUUID (celix_dm_component_t *cmp) |
CELIX_FRAMEWORK_EXPORT void | celix_dmComponent_destroy (celix_dm_component_t *cmp) |
CELIX_FRAMEWORK_EXPORT void | celix_dmComponent_destroyAsync (celix_dm_component_t *cmp, void *doneData, void(*doneCallback)(void *)) |
CELIX_FRAMEWORK_DEPRECATED_EXPORT celix_status_t | celix_dmComponent_setCLanguageProperty (celix_dm_component_t *component, bool setCLangProp) |
CELIX_FRAMEWORK_EXPORT celix_status_t | celix_dmComponent_addInterface (celix_dm_component_t *component, const char *serviceName, const char *serviceVersion, const void *service, celix_properties_t *properties) |
CELIX_FRAMEWORK_EXPORT celix_status_t | celix_dmComponent_removeInterface (celix_dm_component_t *component, const void *service) |
CELIX_FRAMEWORK_EXPORT celix_status_t | celix_dmComponent_setImplementation (celix_dm_component_t *component, void *implementation) |
CELIX_FRAMEWORK_EXPORT void | celix_dmComponent_setImplementationDestroyFunction (celix_dm_component_t *cmp, celix_dm_cmp_impl_destroy_fpt destroyFn) |
CELIX_FRAMEWORK_EXPORT celix_status_t | celix_dmComponent_getInterfaces (celix_dm_component_t *component, celix_array_list_t **servicesNames) |
CELIX_FRAMEWORK_EXPORT celix_status_t | celix_dmComponent_addServiceDependency (celix_dm_component_t *component, celix_dm_service_dependency_t *dep) |
CELIX_FRAMEWORK_EXPORT celix_status_t | celix_dmComponent_removeServiceDependency (celix_dm_component_t *component, celix_dm_service_dependency_t *dependency) |
CELIX_FRAMEWORK_EXPORT celix_dm_component_state_t | celix_dmComponent_currentState (celix_dm_component_t *cmp) |
CELIX_FRAMEWORK_EXPORT void * | celix_dmComponent_getImplementation (celix_dm_component_t *cmp) |
CELIX_FRAMEWORK_EXPORT celix_dm_cmp_impl_destroy_fpt | celix_dmComponent_getImplementationDestroyFunction (celix_dm_component_t *cmp) |
const CELIX_FRAMEWORK_EXPORT char * | celix_dmComponent_getName (celix_dm_component_t *cmp) |
CELIX_FRAMEWORK_EXPORT celix_bundle_context_t * | celix_dmComponent_getBundleContext (celix_dm_component_t *component) |
CELIX_FRAMEWORK_EXPORT celix_status_t | celix_dmComponent_setCallbacks (celix_dm_component_t *component, celix_dm_cmp_lifecycle_fpt init, celix_dm_cmp_lifecycle_fpt start, celix_dm_cmp_lifecycle_fpt stop, celix_dm_cmp_lifecycle_fpt deinit) |
CELIX_FRAMEWORK_EXPORT bool | celix_dmComponent_isActive (celix_dm_component_t *component) |
const CELIX_FRAMEWORK_EXPORT char * | celix_dmComponent_stateToString (celix_dm_component_state_t state) |
CELIX_FRAMEWORK_EXPORT celix_status_t | celix_dmComponent_getComponentInfo (celix_dm_component_t *component, celix_dm_component_info_t **infoOut) |
CELIX_FRAMEWORK_EXPORT void | celix_dmComponent_printComponentInfo (celix_dm_component_info_t *info, bool printFullInfo, bool useAnsiColors, FILE *stream) |
CELIX_FRAMEWORK_EXPORT void | celix_dmComponent_destroyComponentInfo (dm_component_info_pt info) |
#define CELIX_DM_COMPONENT_MAX_ID_LENGTH 64 |
#define CELIX_DM_COMPONENT_MAX_NAME_LENGTH 128 |
#define CELIX_DM_COMPONENT_SET_CALLBACKS | ( | dmCmp, | |
type, | |||
init, | |||
start, | |||
stop, | |||
deinit | |||
) |
Set the component life cycle callbacks using a MACRO for improving the type safety.
#define CELIX_DM_COMPONENT_SET_IMPLEMENTATION_DESTROY_FUNCTION | ( | dmCmp, | |
type, | |||
destroy | |||
) |
Configures the destroy function for the component implementation using a MACRO for improving the type safety.
#define CELIX_DM_COMPONENT_UUID "component.uuid" |
#define CELIX_DMCOMPONENT_SETCALLBACKS | ( | dmCmp, | |
type, | |||
init, | |||
start, | |||
stop, | |||
deinit | |||
) | CELIX_DM_COMPONENT_SET_CALLBACKS(dmCmp, type*, init, start, stop, deinit) |
Deprecated, use CELIX_DM_COMPONENT_SET_CALLBACKS instead.
typedef void(* celix_dm_cmp_impl_destroy_fpt) (void *) |
typedef int(* celix_dm_cmp_lifecycle_fpt) (void *userData) |
typedef enum celix_dm_component_state_enum celix_dm_component_state_t |
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmComponent_addInterface | ( | celix_dm_component_t * | component, |
const char * | serviceName, | ||
const char * | serviceVersion, | ||
const void * | service, | ||
celix_properties_t * | properties | ||
) |
Adds a C interface to provide as service to the Celix framework.
serviceName | the service name. |
version | The version of the interface (e.g. "1.0.0"), Can be a NULL pointer. |
properties | To (meta) properties to provide with the service. Can be a NULL pointer. |
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmComponent_addServiceDependency | ( | celix_dm_component_t * | component, |
celix_dm_service_dependency_t * | dep | ||
) |
Adds a C service dependency to the component
CELIX_FRAMEWORK_EXPORT celix_dm_component_t* celix_dmComponent_create | ( | celix_bundle_context_t * | context, |
const char * | name | ||
) |
Creates a DM Component with a random generated UUID. Caller has ownership.
CELIX_FRAMEWORK_EXPORT celix_dm_component_t* celix_dmComponent_createWithUUID | ( | celix_bundle_context_t * | context, |
const char * | name, | ||
const char * | UUID | ||
) |
Creates a DM Component with a provided UUID. Caller has ownership.
CELIX_FRAMEWORK_EXPORT celix_dm_component_state_t celix_dmComponent_currentState | ( | celix_dm_component_t * | cmp | ) |
Returns the current state of the component.
CELIX_FRAMEWORK_EXPORT void celix_dmComponent_destroy | ( | celix_dm_component_t * | cmp | ) |
Destroys a DM Component
CELIX_FRAMEWORK_EXPORT void celix_dmComponent_destroyAsync | ( | celix_dm_component_t * | cmp, |
void * | doneData, | ||
void(*)(void *) | doneCallback | ||
) |
Destroys a DM Component on the event thread. Will call doneCallback (if not NULL) when done.
CELIX_FRAMEWORK_EXPORT void celix_dmComponent_destroyComponentInfo | ( | dm_component_info_pt | info | ) |
Destroys a DM Component info struct.
CELIX_FRAMEWORK_EXPORT celix_bundle_context_t* celix_dmComponent_getBundleContext | ( | celix_dm_component_t * | component | ) |
Returns bundle context for the bundle where this DM component is part of.
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmComponent_getComponentInfo | ( | celix_dm_component_t * | component, |
celix_dm_component_info_t ** | infoOut | ||
) |
Create a DM Component info struct. Containing information about the component. Caller has ownership.
CELIX_FRAMEWORK_EXPORT void* celix_dmComponent_getImplementation | ( | celix_dm_component_t * | cmp | ) |
Returns the implementation of the component. e.g. the component handle/self/this pointer.
CELIX_FRAMEWORK_EXPORT celix_dm_cmp_impl_destroy_fpt celix_dmComponent_getImplementationDestroyFunction | ( | celix_dm_component_t * | cmp | ) |
Returns the configured component implementation destroy function.
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmComponent_getInterfaces | ( | celix_dm_component_t * | component, |
celix_array_list_t ** | servicesNames | ||
) |
Returns an arraylist of service names. The caller owns the arraylist and strings (char *)
const CELIX_FRAMEWORK_EXPORT char* celix_dmComponent_getName | ( | celix_dm_component_t * | cmp | ) |
Returns the DM component name. This is used when printing information about the component.
const CELIX_FRAMEWORK_EXPORT char* celix_dmComponent_getUUID | ( | celix_dm_component_t * | cmp | ) |
Get the UUID of the component.
CELIX_FRAMEWORK_EXPORT bool celix_dmComponent_isActive | ( | celix_dm_component_t * | component | ) |
CELIX_FRAMEWORK_EXPORT void celix_dmComponent_printComponentInfo | ( | celix_dm_component_info_t * | info, |
bool | printFullInfo, | ||
bool | useAnsiColors, | ||
FILE * | stream | ||
) |
Print the component info to the provided stream.
info | The component info to print. |
printFullInfo | Whether to print the full info or summary. |
useAnsiColors | Whether to use ansi colors when printing the component info. |
stream | The stream to print to (e..g stdout). |
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmComponent_removeInterface | ( | celix_dm_component_t * | component, |
const void * | service | ||
) |
Removed a C interface from a component the Celix framework.
serviceName | the service name. |
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmComponent_removeServiceDependency | ( | celix_dm_component_t * | component, |
celix_dm_service_dependency_t * | dependency | ||
) |
Removes a C service dependency to the component
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmComponent_setCallbacks | ( | celix_dm_component_t * | component, |
celix_dm_cmp_lifecycle_fpt | init, | ||
celix_dm_cmp_lifecycle_fpt | start, | ||
celix_dm_cmp_lifecycle_fpt | stop, | ||
celix_dm_cmp_lifecycle_fpt | deinit | ||
) |
Set the component life cycle callbacks. The first argument will be the component implementation (
CELIX_FRAMEWORK_DEPRECATED_EXPORT celix_status_t celix_dmComponent_setCLanguageProperty | ( | celix_dm_component_t * | component, |
bool | setCLangProp | ||
) |
Specify if a default 'service.lang=C' should be added to the properties of interfaces if no 'service.lang' has been provided. Default is false. Note that this should be set before using component_addInterface.
CELIX_FRAMEWORK_EXPORT celix_status_t celix_dmComponent_setImplementation | ( | celix_dm_component_t * | component, |
void * | implementation | ||
) |
Sets the implementation of the component. e.g. the component handle/self/this pointer.
CELIX_FRAMEWORK_EXPORT void celix_dmComponent_setImplementationDestroyFunction | ( | celix_dm_component_t * | cmp, |
celix_dm_cmp_impl_destroy_fpt | destroyFn | ||
) |
Configures the destroy function for the component implementation.
If a destroy function for the component implementation is configured, this will be used when the component is removed from the dependency manager and component is successfully de-activated.
The destroy function will not be called if the component implementation is not set. e.g. if the celix_dmComponent_setImplementation is not called with a non NULL value.
const CELIX_FRAMEWORK_EXPORT char* celix_dmComponent_stateToString | ( | celix_dm_component_state_t | state | ) |
Returns the string value of a provided state