Skip to content
Permalink
Browse files
Updates documentation based on review comments
  • Loading branch information
pnoltes committed Apr 12, 2022
1 parent 642283e commit 4a37280f9b83d8a4be93fda554739f4fd52e3f55
Showing 10 changed files with 12 additions and 11 deletions.
@@ -29,7 +29,7 @@ It is a framework to develop dynamic modular software applications using compone
Apache Celix core is written in C and has a C++17 header-only API on top of the C API.

Building applications with Apache Celix can be done by creating `bundles` which provide and use `services`;
These `services` can be directly used or in a declarative way using `components`.
These `services` can be used directly or in a declarative way using `components`.
To run a selection of bundles, an Apache Celix `container` executable can be created. An Apache Celix `containter` will
start an Apache Celix framework and install and start the provided bundles.

@@ -48,7 +48,7 @@ By convention a C service in Apache Celix is a pointer to struct of function poi
## Components
Apache Celix also offers a way to create components which interact with dynamic services in declarative way.

This removes some complexity of dynamic services by declaring service dependency and configure the dependency
This removes some complexity of dynamic services by declaring service dependency and configuring the dependency
as required or optional.

Apache Celix components can be created using the built-in C and C++ dependency manager.
@@ -48,12 +48,12 @@ The following packages (libraries + headers) should be installed on your system:
* Development Environment
* build-essentials (gcc/g++ or clang/clang++)
* java or zip (for packaging bundles)
* make (3.14 or higher)
* make (3.14 or higher)
* git
* Apache Celix Dependencies
* libzip
* uuid
* zlib
* libzip
* curl (only initialized in the Celix framework)
* jansson (for serialization in libdfi)
* libffi (for libdfi)
@@ -38,7 +38,7 @@ conan profile new debug --detect
conan profile update settings.build_type=Debug debug
#generate and configure cmake-build-debug directory
conan install . celix/2.3.0@apache/testing -pr:b default -pr:h debug -if cmake-build-debug/ -o celix:enable_testing=True -o celix:enable_address_sanitizer=True -o celix:build_all=True -b missing
conan install . celix/2.3.0 -pr:b default -pr:h debug -if cmake-build-debug/ -o celix:enable_testing=True -o celix:enable_address_sanitizer=True -o celix:build_all=True -b missing
conan build . -bf cmake-build-debug/ --configure
#optional build
@@ -59,6 +59,6 @@ then update the "Google Test" template so that the `active_run.sh` Conan generat
"Environment variables" entry.

If the Apache Celix CMake build directory is `home/joe/workspace/celix/cmake-build-debug` then the value for
"Environment variables" should be: `source /home/joe/workspace/celix/cmake-build-debug/run_activate.sh`
"Environment variables" should be: `source /home/joe/workspace/celix/cmake-build-debug/activate_run.sh`

![Configure CLion](media/clion_run_configuration_template.png)
@@ -64,7 +64,7 @@ An Apache Celix Bundle has its own lifecycle with the following states:
currently means that not all bundle libraries can or have been loaded.
- Resolved - The bundle is installed and its requirements have been met. For Celix this currently means that the
bundle libraries have been loaded.
- Starting - Starting is a temporary state while the bundle activator create and start callbacks are being executed.
- Starting - Starting is a temporary state while the bundle activator's create and start callbacks are being executed.
- Active - The bundle is active.
- Stopping - Stopping is a temporary state while the bundle activator stop and destroy callbacks are being executed.
- Uninstalled - The bundle has been removed from the Celix framework.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -18,7 +18,7 @@ actor ProviderBundle
actor TrackingBundle
control celix_event_thread

ProviderBundle -> celix_bundle_context_t ++: celix_bundleContext_registerService
ProviderBundle -> celix_bundle_context_t ++: celix_bundleContext_registerServiceAsync
celix_bundle_context_t -> celix_framework_t ++: celix_framework_registerServiceAsync
celix_framework_t -> celix_service_registry_t ++: celix_serviceRegistry_nextSvcId
return
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -18,7 +18,7 @@ actor ProviderBundle
actor TrackerBundle
control celix_event_thread

ProviderBundle -> celix_bundle_context_t ++: celix_bundleContext_unregisterService
ProviderBundle -> celix_bundle_context_t ++: celix_bundleContext_unregisterServiceAsync
celix_bundle_context_t -> celix_framework_t ++: celix_framework_unregisterAsync
celix_framework_t -> celix_framework_t
note right: Add new celix_framework_event_t to the event queue
@@ -68,7 +68,8 @@ Use code documentation to clearly specify who is the owner of the output paramet
For versioning, semantic versioning should be used.

A backward incompatible change should lead to a major version increase (e.g. 1.0.0 -> 2.0.0).
For a C Service versioning is used to express binary compatibility (for the same platform / compiler), change that are incompatible are:
For a C Service versioning is used to express binary compatibility (for the same platform / compiler),
changes that are incompatible are:

- Removing a function
- Adding a function to before any other function
@@ -26,7 +26,7 @@ Services can be dynamically registered into and looked up from the Apache Celix
By convention a C service in Apache Celix is a pointer to struct of function pointers and a C++ service is a pointer
(which can be provided as a `std::shared_ptr`) to an object implementing a (pure) abstract class.

A service is always register under a service name and this service name is also used to lookup services.
A service is always registered under a service name and this service name is also used to lookup services.
For C the service name must be provided by the user and for C++ the service name can be provided by the user.
If for C++ no service name is provided the service name will be inferred based on the service template argument using
`celix::typeName<I>`.

0 comments on commit 4a37280

Please sign in to comment.