You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pn...@apache.org on 2015/09/16 13:03:31 UTC
[2/2] celix git commit: CELIX-237: Forwarded and implemented remove
export service to export_registration_dfi
CELIX-237: Forwarded and implemented remove export service to export_registration_dfi
Project: http://git-wip-us.apache.org/repos/asf/celix/repo
Commit: http://git-wip-us.apache.org/repos/asf/celix/commit/e4d3ea6e
Tree: http://git-wip-us.apache.org/repos/asf/celix/tree/e4d3ea6e
Diff: http://git-wip-us.apache.org/repos/asf/celix/diff/e4d3ea6e
Branch: refs/heads/feature/CELIX-237_rsa-ffi
Commit: e4d3ea6e81e5b6d700cff0a6752f0b83dfbc0892
Parents: a477ab9
Author: Pepijn Noltes <pe...@gmail.com>
Authored: Wed Sep 16 13:02:38 2015 +0200
Committer: Pepijn Noltes <pe...@gmail.com>
Committed: Wed Sep 16 13:02:38 2015 +0200
----------------------------------------------------------------------
.../private/include/export_registration_dfi.h | 2 +-
.../rsa/private/src/export_registration_dfi.c | 7 +----
.../rsa/private/src/remote_service_admin_dfi.c | 33 ++++++++++++++------
3 files changed, 26 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/celix/blob/e4d3ea6e/remote_services/remote_service_admin_dfi/rsa/private/include/export_registration_dfi.h
----------------------------------------------------------------------
diff --git a/remote_services/remote_service_admin_dfi/rsa/private/include/export_registration_dfi.h b/remote_services/remote_service_admin_dfi/rsa/private/include/export_registration_dfi.h
index 100294c..4356646 100644
--- a/remote_services/remote_service_admin_dfi/rsa/private/include/export_registration_dfi.h
+++ b/remote_services/remote_service_admin_dfi/rsa/private/include/export_registration_dfi.h
@@ -9,7 +9,7 @@
#include "log_helper.h"
#include "endpoint_description.h"
-celix_status_t exportRegistration_create(log_helper_pt helper, void (*closedCallback)(void *handle, export_registration_pt reg), void *handle, service_reference_pt reference, endpoint_description_pt endpoint, bundle_context_pt context, export_registration_pt *registration);
+celix_status_t exportRegistration_create(log_helper_pt helper, service_reference_pt reference, endpoint_description_pt endpoint, bundle_context_pt context, export_registration_pt *registration);
void exportRegistration_destroy(export_registration_pt registration);
celix_status_t exportRegistration_start(export_registration_pt registration);
http://git-wip-us.apache.org/repos/asf/celix/blob/e4d3ea6e/remote_services/remote_service_admin_dfi/rsa/private/src/export_registration_dfi.c
----------------------------------------------------------------------
diff --git a/remote_services/remote_service_admin_dfi/rsa/private/src/export_registration_dfi.c b/remote_services/remote_service_admin_dfi/rsa/private/src/export_registration_dfi.c
index 9bc5b08..edc085e 100644
--- a/remote_services/remote_service_admin_dfi/rsa/private/src/export_registration_dfi.c
+++ b/remote_services/remote_service_admin_dfi/rsa/private/src/export_registration_dfi.c
@@ -18,8 +18,6 @@ struct export_reference {
struct export_registration {
bundle_context_pt context;
- void (*rsaCloseExportCallback)(void *handle, export_registration_pt reg);
- void *handle;
struct export_reference exportReference;
char *servId;
dyn_interface_type *intf; //owner
@@ -35,7 +33,7 @@ struct export_registration {
static void exportRegistration_addServ(export_registration_pt reg, service_reference_pt ref, void *service);
static void exportRegistration_removeServ(export_registration_pt reg, service_reference_pt ref, void *service);
-celix_status_t exportRegistration_create(log_helper_pt helper, void (*closedCallback)(void *handle, export_registration_pt reg), void *handle, service_reference_pt reference, endpoint_description_pt endpoint, bundle_context_pt context, export_registration_pt *out) {
+celix_status_t exportRegistration_create(log_helper_pt helper, service_reference_pt reference, endpoint_description_pt endpoint, bundle_context_pt context, export_registration_pt *out) {
celix_status_t status = CELIX_SUCCESS;
char *servId = NULL;
@@ -55,8 +53,6 @@ celix_status_t exportRegistration_create(log_helper_pt helper, void (*closedCall
if (status == CELIX_SUCCESS) {
reg->context = context;
- reg->rsaCloseExportCallback = closedCallback;
- reg->handle = handle;
reg->exportReference.endpoint = endpoint;
reg->exportReference.reference = reference;
reg->closed = false;
@@ -183,7 +179,6 @@ celix_status_t exportRegistration_stop(export_registration_pt reg) {
celix_status_t exportRegistration_close(export_registration_pt reg) {
celix_status_t status = CELIX_SUCCESS;
exportRegistration_stop(reg);
- reg->rsaCloseExportCallback(reg->handle, reg);
return status;
}
http://git-wip-us.apache.org/repos/asf/celix/blob/e4d3ea6e/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c
----------------------------------------------------------------------
diff --git a/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c b/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c
index c12d0aa..54d08d3 100644
--- a/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c
+++ b/remote_services/remote_service_admin_dfi/rsa/private/src/remote_service_admin_dfi.c
@@ -49,6 +49,16 @@
// defines how often the webserver is restarted (with an increased port number)
#define MAX_NUMBER_OF_RESTARTS 5
+
+#define LOG_ERROR(admin, msg, ...) \
+ logHelper_log((admin)->loghelper, OSGI_LOGSERVICE_ERROR, (msg), ##__VA_ARGS__)
+
+#define LOG_WARNING(admin, msg, ...) \
+ logHelper_log((admin)->loghelper, OSGI_LOGSERVICE_ERROR, (msg), ##__VA_ARGS__)
+
+#define LOG_DEBUG(admin, msg, ...) \
+ logHelper_log((admin)->loghelper, OSGI_LOGSERVICE_ERROR, (msg), ##__VA_ARGS__)
+
struct remote_service_admin {
bundle_context_pt context;
log_helper_pt loghelper;
@@ -413,7 +423,7 @@ celix_status_t remoteServiceAdmin_exportService(remote_service_admin_pt admin, c
remoteServiceAdmin_createEndpointDescription(admin, reference, interface, &endpoint);
printf("RSA: Creating export registration with endpoint pointer %p\n", endpoint);
//TOOD precheck if descriptor exists
- status = exportRegistration_create(admin->loghelper, remoteServiceAdmin_removeExportedService, admin, reference, endpoint, admin->context, ®istration);
+ status = exportRegistration_create(admin->loghelper, reference, endpoint, admin->context, ®istration);
if (status == CELIX_SUCCESS) {
status = exportRegistration_start(registration);
if (status == CELIX_SUCCESS) {
@@ -434,17 +444,22 @@ celix_status_t remoteServiceAdmin_exportService(remote_service_admin_pt admin, c
celix_status_t remoteServiceAdmin_removeExportedService(remote_service_admin_pt admin, export_registration_pt registration) {
celix_status_t status = CELIX_SUCCESS;
- //TODO
- /*
- remote_service_admin_pt admin = registration->rsa;
- celixThreadMutex_lock(&admin->exportedServicesLock);
+ service_reference_pt ref = NULL;
+ status = exportRegistration_getExportReference(registration, &ref);
+
+ if (status == CELIX_SUCCESS) {
+ celixThreadMutex_lock(&admin->exportedServicesLock);
+ exportRegistration_close(registration);
+ //exportRegistration_destroy(registration); TODO test
+ hashMap_remove(admin->exportedServices, ref);
+ celixThreadMutex_unlock(&admin->exportedServicesLock);
+ } else {
+ LOG_ERROR(admin, "Cannot find reference for registration");
+ }
+
- hashMap_remove(admin->exportedServices, registration->reference);
- //TODO stop ?
- celixThreadMutex_unlock(&admin->exportedServicesLock);
- */
return status;
}