You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by ab...@apache.org on 2013/06/24 15:01:50 UTC
svn commit: r1496013 - in /incubator/celix/trunk: examples/
examples/embedding/ examples/embedding/private/
examples/embedding/private/src/ framework/private/include/
framework/private/src/ framework/public/include/ launcher/
launcher/private/src/ shel...
Author: abroekhuis
Date: Mon Jun 24 13:01:49 2013
New Revision: 1496013
URL: http://svn.apache.org/r1496013
Log:
CELIX-60: Added initial support for embedding
Added:
incubator/celix/trunk/examples/embedding/
incubator/celix/trunk/examples/embedding/CMakeLists.txt
- copied, changed from r1496012, incubator/celix/trunk/launcher/CMakeLists.txt
incubator/celix/trunk/examples/embedding/private/
incubator/celix/trunk/examples/embedding/private/src/
incubator/celix/trunk/examples/embedding/private/src/main.c
incubator/celix/trunk/framework/private/include/framework_private.h
Modified:
incubator/celix/trunk/examples/CMakeLists.txt
incubator/celix/trunk/framework/private/src/bundle.c
incubator/celix/trunk/framework/private/src/bundle_context.c
incubator/celix/trunk/framework/private/src/framework.c
incubator/celix/trunk/framework/private/src/service_registry.c
incubator/celix/trunk/framework/public/include/bundle.h
incubator/celix/trunk/framework/public/include/framework.h
incubator/celix/trunk/launcher/CMakeLists.txt
incubator/celix/trunk/launcher/private/src/launcher.c
incubator/celix/trunk/shell/private/src/start_command.c
incubator/celix/trunk/shell/private/src/stop_command.c
Modified: incubator/celix/trunk/examples/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/CMakeLists.txt?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/examples/CMakeLists.txt (original)
+++ incubator/celix/trunk/examples/CMakeLists.txt Mon Jun 24 13:01:49 2013
@@ -26,4 +26,6 @@ if (EXAMPLES)
add_subdirectory(osgi-in-action/chapter04-correct-listener)
add_subdirectory(osgi-in-action/chapter01-greeting-example)
add_subdirectory(osgi-in-action/chapter04-paint-example)
+
+ add_subdirectory(embedding)
endif(EXAMPLES)
Copied: incubator/celix/trunk/examples/embedding/CMakeLists.txt (from r1496012, incubator/celix/trunk/launcher/CMakeLists.txt)
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/embedding/CMakeLists.txt?p2=incubator/celix/trunk/examples/embedding/CMakeLists.txt&p1=incubator/celix/trunk/launcher/CMakeLists.txt&r1=1496012&r2=1496013&rev=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/launcher/CMakeLists.txt (original)
+++ incubator/celix/trunk/examples/embedding/CMakeLists.txt Mon Jun 24 13:01:49 2013
@@ -14,13 +14,11 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-celix_subproject(LAUNCHER "Option to build the launcher" "ON" DEPS UTILS FRAMEWORK)
-if (LAUNCHER)
- add_executable(celix private/src/launcher)
-
- target_link_libraries(celix celix_framework)
- include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
- include_directories("${PROJECT_SOURCE_DIR}/framework/private/include")
-
- install(TARGETS celix RUNTIME DESTINATION bin COMPONENT framework)
-endif (LAUNCHER)
\ No newline at end of file
+
+#SET_HEADER(BUNDLE_SYMBOLICNAME "apache_celix_examples_embedding")
+#SET_HEADERS("Bundle-Name: Apache Celix Shell TUI")
+
+#bundle(hello_world SOURCES private/src/activator)
+add_executable(embedding private/src/main)
+include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
+target_link_libraries(embedding celix_framework)
\ No newline at end of file
Added: incubator/celix/trunk/examples/embedding/private/src/main.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/embedding/private/src/main.c?rev=1496013&view=auto
==============================================================================
--- incubator/celix/trunk/examples/embedding/private/src/main.c (added)
+++ incubator/celix/trunk/examples/embedding/private/src/main.c Mon Jun 24 13:01:49 2013
@@ -0,0 +1,91 @@
+/**
+ *Licensed to the Apache Software Foundation (ASF) under one
+ *or more contributor license agreements. See the NOTICE file
+ *distributed with this work for additional information
+ *regarding copyright ownership. The ASF licenses this file
+ *to you under the Apache License, Version 2.0 (the
+ *"License"); you may not use this file except in compliance
+ *with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *Unless required by applicable law or agreed to in writing,
+ *software distributed under the License is distributed on an
+ *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ *specific language governing permissions and limitations
+ *under the License.
+ */
+/*
+ * main.c
+ *
+ * \date May 22, 2013
+ * \author <a href="mailto:celix-dev@incubator.apache.org">Apache Celix Project Team</a>
+ * \copyright Apache License, Version 2.0
+ */
+#include <stdlib.h>
+
+#include <apr_general.h>
+
+#include "celix_errno.h"
+#include "framework.h"
+#include "bundle_context.h"
+
+struct foo {
+
+};
+
+struct fooSrv {
+ struct foo *handle;
+ celix_status_t (*foo)(struct foo *handle);
+};
+
+celix_status_t embedded_foo();
+
+int main(void) {
+ apr_status_t status = APR_SUCCESS;
+ apr_pool_t *memoryPool = NULL;
+
+ status = apr_initialize();
+ if (status != APR_SUCCESS) {
+ return CELIX_START_ERROR;
+ }
+
+ status = apr_pool_create(&memoryPool, NULL);
+ if (status != APR_SUCCESS) {
+ return CELIX_START_ERROR;
+ }
+
+ framework_t framework = NULL;
+ framework_create(&framework, memoryPool, NULL);
+ fw_init(framework);
+
+ bundle_t fwBundle = NULL;
+ framework_getFrameworkBundle(framework, &fwBundle);
+ bundle_start(fwBundle);
+
+ bundle_context_t context = NULL;
+ bundle_getContext(fwBundle, &context);
+
+ struct foo *f = apr_palloc(memoryPool, sizeof(*f));
+ struct fooSrv *fs = apr_palloc(memoryPool, sizeof(*fs));
+ fs->handle = f;
+ fs->foo = embedded_foo;
+
+ service_registration_t reg = NULL;
+ bundleContext_registerService(context, "foo", fs, NULL, ®);
+
+ service_reference_t ref = NULL;
+ bundleContext_getServiceReference(context, "foo", &ref);
+
+ void *fs2 = NULL;
+ bundleContext_getService(context, ref, &fs2);
+
+ ((struct fooSrv*)fs2)->foo(((struct fooSrv*)fs2)->handle);
+}
+
+celix_status_t embedded_foo() {
+ printf("foo\n");
+ return CELIX_SUCCESS;
+}
+
Added: incubator/celix/trunk/framework/private/include/framework_private.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/include/framework_private.h?rev=1496013&view=auto
==============================================================================
--- incubator/celix/trunk/framework/private/include/framework_private.h (added)
+++ incubator/celix/trunk/framework/private/include/framework_private.h Mon Jun 24 13:01:49 2013
@@ -0,0 +1,93 @@
+/**
+ *Licensed to the Apache Software Foundation (ASF) under one
+ *or more contributor license agreements. See the NOTICE file
+ *distributed with this work for additional information
+ *regarding copyright ownership. The ASF licenses this file
+ *to you under the Apache License, Version 2.0 (the
+ *"License"); you may not use this file except in compliance
+ *with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *Unless required by applicable law or agreed to in writing,
+ *software distributed under the License is distributed on an
+ *"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ *specific language governing permissions and limitations
+ *under the License.
+ */
+/*
+ * framework_private.h
+ *
+ * \date May 22, 2013
+ * \author <a href="mailto:celix-dev@incubator.apache.org">Apache Celix Project Team</a>
+ * \copyright Apache License, Version 2.0
+ */
+
+
+#ifndef FRAMEWORK_PRIVATE_H_
+#define FRAMEWORK_PRIVATE_H_
+
+#include "framework.h"
+
+#include "manifest.h"
+#include "wire.h"
+#include "hash_map.h"
+#include "array_list.h"
+#include "celix_errno.h"
+#include "service_factory.h"
+#include "bundle_archive.h"
+#include "service_listener.h"
+#include "bundle_listener.h"
+#include "service_registration.h"
+#include "bundle_context.h"
+
+celix_status_t framework_start(framework_t framework);
+void framework_stop(framework_t framework);
+
+FRAMEWORK_EXPORT celix_status_t fw_getProperty(framework_t framework, const char *name, char **value);
+
+FRAMEWORK_EXPORT celix_status_t fw_installBundle(framework_t framework, bundle_t * bundle, char * location, char *inputFile);
+FRAMEWORK_EXPORT celix_status_t fw_uninstallBundle(framework_t framework, bundle_t bundle);
+
+FRAMEWORK_EXPORT celix_status_t framework_getBundleEntry(framework_t framework, bundle_t bundle, char *name, apr_pool_t *pool, char **entry);
+
+FRAMEWORK_EXPORT celix_status_t fw_startBundle(framework_t framework, bundle_t bundle, int options);
+FRAMEWORK_EXPORT celix_status_t framework_updateBundle(framework_t framework, bundle_t bundle, char *inputFile);
+FRAMEWORK_EXPORT celix_status_t fw_stopBundle(framework_t framework, bundle_t bundle, bool record);
+
+FRAMEWORK_EXPORT celix_status_t fw_registerService(framework_t framework, service_registration_t * registration, bundle_t bundle, char * serviceName, void * svcObj, properties_t properties);
+FRAMEWORK_EXPORT celix_status_t fw_registerServiceFactory(framework_t framework, service_registration_t * registration, bundle_t bundle, char * serviceName, service_factory_t factory, properties_t properties);
+FRAMEWORK_EXPORT void fw_unregisterService(service_registration_t registration);
+
+FRAMEWORK_EXPORT celix_status_t fw_getServiceReferences(framework_t framework, array_list_t *references, bundle_t bundle, const char * serviceName, char * filter);
+FRAMEWORK_EXPORT void * fw_getService(framework_t framework, bundle_t bundle, service_reference_t reference);
+FRAMEWORK_EXPORT bool framework_ungetService(framework_t framework, bundle_t bundle, service_reference_t reference);
+FRAMEWORK_EXPORT celix_status_t fw_getBundleRegisteredServices(framework_t framework, apr_pool_t *pool, bundle_t bundle, array_list_t *services);
+FRAMEWORK_EXPORT celix_status_t fw_getBundleServicesInUse(framework_t framework, bundle_t bundle, array_list_t *services);
+
+FRAMEWORK_EXPORT void fw_addServiceListener(framework_t framework, bundle_t bundle, service_listener_t listener, char * filter);
+FRAMEWORK_EXPORT void fw_removeServiceListener(framework_t framework, bundle_t bundle, service_listener_t listener);
+
+FRAMEWORK_EXPORT celix_status_t fw_addBundleListener(framework_t framework, bundle_t bundle, bundle_listener_t listener);
+FRAMEWORK_EXPORT celix_status_t fw_removeBundleListener(framework_t framework, bundle_t bundle, bundle_listener_t listener);
+
+FRAMEWORK_EXPORT void fw_serviceChanged(framework_t framework, service_event_type_e eventType, service_registration_t registration, properties_t oldprops);
+
+FRAMEWORK_EXPORT celix_status_t fw_isServiceAssignable(framework_t fw, bundle_t requester, service_reference_t reference, bool *assignable);
+
+//bundle_archive_t fw_createArchive(long id, char * location);
+//void revise(bundle_archive_t archive, char * location);
+FRAMEWORK_EXPORT celix_status_t getManifest(bundle_archive_t archive, apr_pool_t *pool, MANIFEST *manifest);
+
+FRAMEWORK_EXPORT bundle_t findBundle(bundle_context_t context);
+FRAMEWORK_EXPORT service_registration_t findRegistration(service_reference_t reference);
+
+FRAMEWORK_EXPORT service_reference_t listToArray(array_list_t list);
+FRAMEWORK_EXPORT celix_status_t framework_markResolvedModules(framework_t framework, hash_map_t wires);
+
+FRAMEWORK_EXPORT array_list_t framework_getBundles(framework_t framework);
+FRAMEWORK_EXPORT bundle_t framework_getBundle(framework_t framework, char * location);
+FRAMEWORK_EXPORT bundle_t framework_getBundleById(framework_t framework, long id);
+
+#endif /* FRAMEWORK_PRIVATE_H_ */
Modified: incubator/celix/trunk/framework/private/src/bundle.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle.c?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle.c Mon Jun 24 13:01:49 2013
@@ -30,7 +30,7 @@
#include <apr_thread_proc.h>
#include "bundle.h"
-#include "framework.h"
+#include "framework_private.h"
#include "manifest.h"
#include "module.h"
#include "version.h"
@@ -293,24 +293,77 @@ celix_status_t bundle_createModule(bundl
return status;
}
-celix_status_t bundle_start(bundle_pt bundle, int options) {
+celix_status_t bundle_start(bundle_pt bundle) {
+ return bundle_startWithOptions(bundle, 0);
+}
+
+celix_status_t bundle_startWithOptions(bundle_pt bundle, int options) {
celix_status_t status = CELIX_SUCCESS;
if (bundle != NULL) {
- status = fw_startBundle(bundle->framework, bundle, options);
+ bool systemBundle = false;
+ status = bundle_isSystemBundle(bundle, &systemBundle);
+ if (status == CELIX_SUCCESS) {
+ if (systemBundle) {
+ framework_start(bundle->framework);
+ } else {
+ status = fw_startBundle(bundle->framework, bundle, options);
+ }
+ }
}
return status;
}
celix_status_t bundle_update(bundle_pt bundle, char *inputFile) {
- return framework_updateBundle(bundle->framework, bundle, inputFile);
+ celix_status_t status = CELIX_SUCCESS;
+ if (bundle != NULL) {
+ bool systemBundle = false;
+ status = bundle_isSystemBundle(bundle, &systemBundle);
+ if (status == CELIX_SUCCESS) {
+ if (systemBundle) {
+ // #TODO: Support framework update
+ status = CELIX_BUNDLE_EXCEPTION;
+ } else {
+ status = framework_updateBundle(bundle->framework, bundle, inputFile);
+ }
+ }
+ }
+ return status;
}
-celix_status_t bundle_stop(bundle_pt bundle, int options) {
- return fw_stopBundle(bundle->framework, bundle, ((options & 1) == 0));
+celix_status_t bundle_stop(bundle_pt bundle) {
+ return bundle_stopWithOptions(bundle, 0);
+}
+
+celix_status_t bundle_stopWithOptions(bundle_pt bundle, int options) {
+ celix_status_t status = CELIX_SUCCESS;
+ if (bundle != NULL) {
+ bool systemBundle = false;
+ status = bundle_isSystemBundle(bundle, &systemBundle);
+ if (status == CELIX_SUCCESS) {
+ if (systemBundle) {
+ framework_stop(bundle->framework);
+ } else {
+ status = fw_stopBundle(bundle->framework, bundle, options);
+ }
+ }
+ }
+ return status;
}
celix_status_t bundle_uninstall(bundle_pt bundle) {
- return fw_uninstallBundle(bundle->framework, bundle);
+ celix_status_t status = CELIX_SUCCESS;
+ if (bundle != NULL) {
+ bool systemBundle = false;
+ status = bundle_isSystemBundle(bundle, &systemBundle);
+ if (status == CELIX_SUCCESS) {
+ if (systemBundle) {
+ status = CELIX_BUNDLE_EXCEPTION;
+ } else {
+ status = fw_uninstallBundle(bundle->framework, bundle);
+ }
+ }
+ }
+ return status;
}
celix_status_t bundle_setPersistentStateInactive(bundle_pt bundle) {
Modified: incubator/celix/trunk/framework/private/src/bundle_context.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/bundle_context.c?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/bundle_context.c (original)
+++ incubator/celix/trunk/framework/private/src/bundle_context.c Mon Jun 24 13:01:49 2013
@@ -28,7 +28,7 @@
#include <string.h>
#include "bundle_context.h"
-#include "framework.h"
+#include "framework_private.h"
#include "bundle.h"
struct bundleContext {
Modified: incubator/celix/trunk/framework/private/src/framework.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/framework.c?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/framework.c (original)
+++ incubator/celix/trunk/framework/private/src/framework.c Mon Jun 24 13:01:49 2013
@@ -44,7 +44,7 @@
#endif
-#include "framework.h"
+#include "framework_private.h"
#include "filter.h"
#include "constants.h"
#include "archive.h"
@@ -189,11 +189,11 @@ celix_status_t framework_create(framewor
} else {
bundle_pt bundle = NULL;
apr_pool_t *bundlePool;
- apr_status_t apr_status = apr_pool_create(&bundlePool, (*framework)->mp);
- if (apr_status != APR_SUCCESS) {
- status = CELIX_FRAMEWORK_EXCEPTION;
- } else {
- apr_status_t apr_status = bundle_create(&bundle, bundlePool);
+// apr_status_t apr_status = apr_pool_create(&bundlePool, (*framework)->mp);
+// if (apr_status != APR_SUCCESS) {
+// status = CELIX_FRAMEWORK_EXCEPTION;
+// } else {
+ apr_status_t apr_status = bundle_create(&bundle, (*framework)->mp);
if (apr_status != CELIX_SUCCESS) {
status = CELIX_FRAMEWORK_EXCEPTION;
} else {
@@ -248,7 +248,7 @@ celix_status_t framework_create(framewor
}
}
}
- }
+// }
}
}
}
@@ -1906,18 +1906,6 @@ static void *APR_THREAD_FUNC framework_s
return NULL;
}
-celix_status_t framework_getMemoryPool(framework_pt framework, apr_pool_t **pool) {
- celix_status_t status = CELIX_SUCCESS;
-
- if (framework != NULL && *pool == NULL) {
- *pool = framework->mp;
- } else {
- status = CELIX_ILLEGAL_ARGUMENT;
- }
-
- return status;
-}
-
celix_status_t framework_getFrameworkBundle(framework_pt framework, bundle_pt *bundle) {
celix_status_t status = CELIX_SUCCESS;
Modified: incubator/celix/trunk/framework/private/src/service_registry.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/service_registry.c?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/framework/private/src/service_registry.c (original)
+++ incubator/celix/trunk/framework/private/src/service_registry.c Mon Jun 24 13:01:49 2013
@@ -33,7 +33,7 @@
#include "listener_hook_service.h"
#include "constants.h"
#include "service_reference.h"
-#include "framework.h"
+#include "framework_private.h"
struct serviceRegistry {
framework_pt framework;
@@ -114,11 +114,14 @@ void serviceRegistry_flushUsageCount(ser
}
}
-service_registry_pt serviceRegistry_create(framework_pt framework, void (*serviceChanged)(framework_pt, service_event_type_e, service_registration_pt, properties_pt)) {
+// #TODO: Add pool as argument
+service_registry_pt serviceRegistry_create(framework_pt framework, void (*serviceChanged)(framework_t, service_event_type_e, service_registration_t, properties_t)) {
service_registry_pt registry;
+ bundle_pt fwBundle = NULL;
apr_pool_t *pool = NULL;
- framework_getMemoryPool(framework, &pool);
+ framework_getFrameworkBundle(framework, &fwBundle);
+ bundle_getMemoryPool(fwBundle, &pool);
registry = (service_registry_pt) apr_palloc(pool, (sizeof(*registry)));
if (registry == NULL) {
// no memory
@@ -246,11 +249,15 @@ void serviceRegistry_unregisterService(s
serviceRegistration_getServiceReferences(registration, &references);
for (i = 0; i < arrayList_size(references); i++) {
service_reference_pt reference = (service_reference_pt) arrayList_get(references, i);
+ bundle_pt fwBundle = NULL;
apr_pool_t *pool = NULL;
array_list_pt clients = NULL;
unsigned int j;
- framework_getMemoryPool(registry->framework, &pool);
+ framework_getFrameworkBundle(registry->framework, &fwBundle);
+ // #TODO: Replace with subpool, destroy pool after usage
+ bundle_getMemoryPool(fwBundle, &pool);
+
clients = serviceRegistry_getUsingBundles(registry, pool, reference);
for (j = 0; (clients != NULL) && (j < arrayList_size(clients)); j++) {
bundle_pt client = (bundle_pt) arrayList_get(clients, j);
Modified: incubator/celix/trunk/framework/public/include/bundle.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/public/include/bundle.h?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/framework/public/include/bundle.h (original)
+++ incubator/celix/trunk/framework/public/include/bundle.h Mon Jun 24 13:01:49 2013
@@ -36,6 +36,8 @@ typedef struct bundle * bundle_pt;
#include "bundle_state.h"
#include "bundle_archive.h"
#include "framework.h"
+#include "wire.h"
+#include "module.h"
#include "service_reference.h"
#include "bundle_context.h"
@@ -57,9 +59,11 @@ FRAMEWORK_EXPORT celix_status_t bundle_g
FRAMEWORK_EXPORT celix_status_t bundle_setContext(bundle_pt bundle, bundle_context_pt context);
FRAMEWORK_EXPORT celix_status_t bundle_getEntry(bundle_pt bundle, char * name, apr_pool_t *pool, char **entry);
-FRAMEWORK_EXPORT celix_status_t bundle_start(bundle_pt bundle, int options);
+FRAMEWORK_EXPORT celix_status_t bundle_start(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_startWithOptions(bundle_pt bundle, int options);
FRAMEWORK_EXPORT celix_status_t bundle_update(bundle_pt bundle, char *inputFile);
-FRAMEWORK_EXPORT celix_status_t bundle_stop(bundle_pt bundle, int options);
+FRAMEWORK_EXPORT celix_status_t bundle_stop(bundle_pt bundle);
+FRAMEWORK_EXPORT celix_status_t bundle_stopWithOptions(bundle_pt bundle, int options);
FRAMEWORK_EXPORT celix_status_t bundle_uninstall(bundle_pt bundle);
FRAMEWORK_EXPORT celix_status_t bundle_setState(bundle_pt bundle, bundle_state_e state);
Modified: incubator/celix/trunk/framework/public/include/framework.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/public/include/framework.h?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/framework/public/include/framework.h (original)
+++ incubator/celix/trunk/framework/public/include/framework.h Mon Jun 24 13:01:49 2013
@@ -30,74 +30,19 @@
typedef struct activator * activator_pt;
typedef struct framework * framework_pt;
-#include "manifest.h"
-#include "wire.h"
-#include "hash_map.h"
-#include "array_list.h"
#include "celix_errno.h"
-#include "service_factory.h"
-#include "bundle_archive.h"
-#include "service_listener.h"
-#include "bundle_listener.h"
-#include "service_registration.h"
-#include "bundle_context.h"
#include "framework_exports.h"
+#include "bundle.h"
+#include "properties.h"
+// #TODO: Move to FrameworkFactory according the OSGi Spec
FRAMEWORK_EXPORT celix_status_t framework_create(framework_pt *framework, apr_pool_t *memoryPool, properties_pt config);
+// #TODO: Replace with a pool hook when this is possible
FRAMEWORK_EXPORT celix_status_t framework_destroy(framework_pt framework);
FRAMEWORK_EXPORT celix_status_t fw_init(framework_pt framework);
-FRAMEWORK_EXPORT celix_status_t framework_start(framework_pt framework);
-FRAMEWORK_EXPORT void framework_stop(framework_pt framework);
-
-FRAMEWORK_EXPORT celix_status_t fw_getProperty(framework_pt framework, const char *name, char **value);
-
-FRAMEWORK_EXPORT celix_status_t fw_installBundle(framework_pt framework, bundle_pt * bundle, char * location, char *inputFile);
-FRAMEWORK_EXPORT celix_status_t fw_uninstallBundle(framework_pt framework, bundle_pt bundle);
-
-FRAMEWORK_EXPORT celix_status_t framework_getBundleEntry(framework_pt framework, bundle_pt bundle, char *name, apr_pool_t *pool, char **entry);
-
-FRAMEWORK_EXPORT celix_status_t fw_startBundle(framework_pt framework, bundle_pt bundle, int options);
-FRAMEWORK_EXPORT celix_status_t framework_updateBundle(framework_pt framework, bundle_pt bundle, char *inputFile);
-FRAMEWORK_EXPORT celix_status_t fw_stopBundle(framework_pt framework, bundle_pt bundle, bool record);
-
-FRAMEWORK_EXPORT celix_status_t fw_registerService(framework_pt framework, service_registration_pt * registration, bundle_pt bundle, char * serviceName, void * svcObj, properties_pt properties);
-FRAMEWORK_EXPORT celix_status_t fw_registerServiceFactory(framework_pt framework, service_registration_pt * registration, bundle_pt bundle, char * serviceName, service_factory_pt factory, properties_pt properties);
-FRAMEWORK_EXPORT void fw_unregisterService(service_registration_pt registration);
-
-FRAMEWORK_EXPORT celix_status_t fw_getServiceReferences(framework_pt framework, array_list_pt *references, bundle_pt bundle, const char * serviceName, char * filter);
-FRAMEWORK_EXPORT void * fw_getService(framework_pt framework, bundle_pt bundle, service_reference_pt reference);
-FRAMEWORK_EXPORT bool framework_ungetService(framework_pt framework, bundle_pt bundle, service_reference_pt reference);
-FRAMEWORK_EXPORT celix_status_t fw_getBundleRegisteredServices(framework_pt framework, apr_pool_t *pool, bundle_pt bundle, array_list_pt *services);
-FRAMEWORK_EXPORT celix_status_t fw_getBundleServicesInUse(framework_pt framework, bundle_pt bundle, array_list_pt *services);
-
-FRAMEWORK_EXPORT void fw_addServiceListener(framework_pt framework, bundle_pt bundle, service_listener_pt listener, char * filter);
-FRAMEWORK_EXPORT void fw_removeServiceListener(framework_pt framework, bundle_pt bundle, service_listener_pt listener);
-
-FRAMEWORK_EXPORT celix_status_t fw_addBundleListener(framework_pt framework, bundle_pt bundle, bundle_listener_pt listener);
-FRAMEWORK_EXPORT celix_status_t fw_removeBundleListener(framework_pt framework, bundle_pt bundle, bundle_listener_pt listener);
-
-FRAMEWORK_EXPORT void fw_serviceChanged(framework_pt framework, service_event_type_e eventType, service_registration_pt registration, properties_pt oldprops);
-
-FRAMEWORK_EXPORT celix_status_t fw_isServiceAssignable(framework_pt fw, bundle_pt requester, service_reference_pt reference, bool *assignable);
-
-//bundle_archive_pt fw_createArchive(long id, char * location);
-//void revise(bundle_archive_pt archive, char * location);
-FRAMEWORK_EXPORT celix_status_t getManifest(bundle_archive_pt archive, apr_pool_t *pool, manifest_pt *manifest);
-
-FRAMEWORK_EXPORT bundle_pt findBundle(bundle_context_pt context);
-FRAMEWORK_EXPORT service_registration_pt findRegistration(service_reference_pt reference);
-
-FRAMEWORK_EXPORT service_reference_pt listToArray(array_list_pt list);
-FRAMEWORK_EXPORT celix_status_t framework_markResolvedModules(framework_pt framework, hash_map_pt wires);
-
FRAMEWORK_EXPORT celix_status_t framework_waitForStop(framework_pt framework);
-FRAMEWORK_EXPORT array_list_pt framework_getBundles(framework_pt framework);
-FRAMEWORK_EXPORT bundle_pt framework_getBundle(framework_pt framework, char * location);
-FRAMEWORK_EXPORT bundle_pt framework_getBundleById(framework_pt framework, long id);
-
-FRAMEWORK_EXPORT celix_status_t framework_getMemoryPool(framework_pt framework, apr_pool_t **pool);
FRAMEWORK_EXPORT celix_status_t framework_getFrameworkBundle(framework_pt framework, bundle_pt *bundle);
#endif /* FRAMEWORK_H_ */
Modified: incubator/celix/trunk/launcher/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/launcher/CMakeLists.txt?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/launcher/CMakeLists.txt (original)
+++ incubator/celix/trunk/launcher/CMakeLists.txt Mon Jun 24 13:01:49 2013
@@ -20,7 +20,7 @@ if (LAUNCHER)
target_link_libraries(celix celix_framework)
include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
- include_directories("${PROJECT_SOURCE_DIR}/framework/private/include")
+ include_directories("${PROJECT_SOURCE_DIR}/framework/public/include")
install(TARGETS celix RUNTIME DESTINATION bin COMPONENT framework)
endif (LAUNCHER)
\ No newline at end of file
Modified: incubator/celix/trunk/launcher/private/src/launcher.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/launcher/private/src/launcher.c?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/launcher/private/src/launcher.c (original)
+++ incubator/celix/trunk/launcher/private/src/launcher.c Mon Jun 24 13:01:49 2013
@@ -50,9 +50,8 @@ int main(void) {
apr_status_t s = APR_SUCCESS;
properties_pt config = NULL;
char *autoStart = NULL;
-
-
apr_pool_t *pool = NULL;
+ bundle_pt fwBundle = NULL;
(void) signal(SIGINT, launcher_shutdown);
@@ -73,7 +72,8 @@ int main(void) {
fw_init(framework);
// Start the system bundle
- framework_start(framework);
+ framework_getFrameworkBundle(framework, &fwBundle);
+ bundle_start(fwBundle);
if (apr_pool_create(&pool, memoryPool) == APR_SUCCESS) {
char delims[] = " ";
@@ -115,7 +115,7 @@ int main(void) {
for (i = 0; i < arrayList_size(installed); i++) {
bundle_pt bundle = (bundle_pt) arrayList_get(installed, i);
- bundle_start(bundle, 0);
+ bundle_startWithOptions(bundle, 0);
}
arrayList_destroy(installed);
@@ -134,7 +134,9 @@ int main(void) {
}
void launcher_shutdown(int signal) {
- framework_stop(framework);
+ bundle_pt fwBundle = NULL;
+ framework_getFrameworkBundle(framework, &fwBundle);
+ bundle_stop(fwBundle);
// if (framework_waitForStop(framework) != CELIX_SUCCESS) {
// celix_log("Error waiting for stop.");
// }
Modified: incubator/celix/trunk/shell/private/src/start_command.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/shell/private/src/start_command.c?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/shell/private/src/start_command.c (original)
+++ incubator/celix/trunk/shell/private/src/start_command.c Mon Jun 24 13:01:49 2013
@@ -58,7 +58,7 @@ void startCommand_execute(command_pt com
bundle_pt bundle = NULL;
bundleContext_getBundleById(command->bundleContext, id, &bundle);
if (bundle != NULL) {
- bundle_start(bundle, 0);
+ bundle_startWithOptions(bundle, 0);
} else {
err("Bundle id is invalid.");
}
Modified: incubator/celix/trunk/shell/private/src/stop_command.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/shell/private/src/stop_command.c?rev=1496013&r1=1496012&r2=1496013&view=diff
==============================================================================
--- incubator/celix/trunk/shell/private/src/stop_command.c (original)
+++ incubator/celix/trunk/shell/private/src/stop_command.c Mon Jun 24 13:01:49 2013
@@ -61,7 +61,7 @@ void stopCommand_execute(command_pt comm
bundle_pt bundle = NULL;
bundleContext_getBundleById(command->bundleContext, id, &bundle);
if (bundle != NULL) {
- bundle_stop(bundle, 0);
+ bundle_stopWithOptions(bundle, 0);
} else {
err("Bundle id is invalid.");
}