You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by bp...@apache.org on 2014/07/26 02:19:32 UTC
svn commit: r1613541 - in /celix/trunk/remote_services:
discovery_shm/private/src/discovery.c
remote_service_admin_shm/private/src/remote_service_admin_impl.c
remote_service_admin_shm/public/include/remote_service_admin_shm.h
Author: bpetri
Date: Sat Jul 26 00:19:31 2014
New Revision: 1613541
URL: http://svn.apache.org/r1613541
Log:
CELIX-129, CELIX-130
Adapt remote_service_admin_shm, discovery_shm. See CELIX-129, CELIX-130 for details.
Modified:
celix/trunk/remote_services/discovery_shm/private/src/discovery.c
celix/trunk/remote_services/remote_service_admin_shm/private/src/remote_service_admin_impl.c
celix/trunk/remote_services/remote_service_admin_shm/public/include/remote_service_admin_shm.h
Modified: celix/trunk/remote_services/discovery_shm/private/src/discovery.c
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/discovery_shm/private/src/discovery.c?rev=1613541&r1=1613540&r2=1613541&view=diff
==============================================================================
--- celix/trunk/remote_services/discovery_shm/private/src/discovery.c (original)
+++ celix/trunk/remote_services/discovery_shm/private/src/discovery.c Sat Jul 26 00:19:31 2014
@@ -370,7 +370,6 @@ celix_status_t discovery_decShmMapDiscov
}
hashMapIterator_destroy(shmItr);
-
hashMap_put(outRegServices, DISCOVERY_SHM_FW_SERVICES, fwServices);
}
}
@@ -488,13 +487,43 @@ celix_status_t discovery_encShmMap(disco
hashMapIterator_destroy(regDiscoveryInstancesItr);
if ((status == CELIX_SUCCESS) && ((status = netstring_encodeFromHashMap(discovery->pool, inRegDiscInstances, outEncMap)) != CELIX_SUCCESS))
- {
+ {
printf("DISCOVERY: discovery_encShmMapDiscoveryInstance : encode shm map failed\n");
}
return status;
}
+
+celix_status_t discovery_freeShmMap(discovery_pt discovery, hash_map_pt inSrcMap)
+{
+ hash_map_iterator_pt regDiscoveryInstancesItr = hashMapIterator_create(inSrcMap);
+
+ while (hashMapIterator_hasNext(regDiscoveryInstancesItr) == true)
+ {
+ hash_map_pt regDiscoveryInstance = hashMapIterator_nextValue(regDiscoveryInstancesItr);
+
+ if (regDiscoveryInstance != NULL)
+ {
+ hash_map_iterator_pt regDiscoveryServiceItr = hashMapIterator_create(regDiscoveryInstance);
+
+ while (hashMapIterator_hasNext(regDiscoveryServiceItr) == true)
+ {
+ hash_map_pt regDiscoveryService = hashMapIterator_nextValue(regDiscoveryServiceItr);
+ hashMap_destroy(regDiscoveryService, false, false);
+ }
+
+ hashMapIterator_destroy(regDiscoveryServiceItr);
+
+ }
+ hashMap_destroy(regDiscoveryInstance, false, false);
+ }
+
+ hashMapIterator_destroy(regDiscoveryInstancesItr);
+
+ return CELIX_SUCCESS;
+}
+
celix_status_t discovery_updateSHMServices(discovery_pt discovery, endpoint_description_pt endpoint, bool addService)
{
celix_status_t status = CELIX_SUCCESS;
@@ -977,6 +1006,7 @@ celix_status_t discovery_updateLocalSHMS
hashMapIterator_destroy(lclFwItr);
+ discovery_freeShmMap(discovery, regDiscoveryInstances);
}
hashMap_destroy(regDiscoveryInstances, false, false);
discovery_unlock(shmData->semId, 0);
Modified: celix/trunk/remote_services/remote_service_admin_shm/private/src/remote_service_admin_impl.c
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/remote_service_admin_shm/private/src/remote_service_admin_impl.c?rev=1613541&r1=1613540&r2=1613541&view=diff
==============================================================================
--- celix/trunk/remote_services/remote_service_admin_shm/private/src/remote_service_admin_impl.c (original)
+++ celix/trunk/remote_services/remote_service_admin_shm/private/src/remote_service_admin_impl.c Sat Jul 26 00:19:31 2014
@@ -270,7 +270,7 @@ celix_status_t remoteServiceAdmin_wait(i
}
-celix_status_t remoteServiceAdmin_send(remote_service_admin_pt admin, endpoint_description_pt recpEndpoint, char *method, char *data, char **reply, int *replyStatus)
+celix_status_t remoteServiceAdmin_send(remote_service_admin_pt admin, endpoint_description_pt recpEndpoint, char *data, char **reply, int *replyStatus)
{
celix_status_t status = CELIX_SUCCESS;
@@ -283,7 +283,6 @@ celix_status_t remoteServiceAdmin_send(r
int semid = ipc->semId;
/* write method and data */
- hashMap_put(fncCallProps, RSA_FUNCTIONCALL_METHOD_PROPERTYNAME, method);
hashMap_put(fncCallProps, RSA_FUNCTIONCALL_DATA_PROPERTYNAME, data);
if ((status = netstring_encodeFromHashMap(admin->pool, fncCallProps, &encFncCallProps)) == CELIX_SUCCESS)
@@ -358,67 +357,60 @@ static void *APR_THREAD_FUNC remoteServi
}
else
{
- char *method = hashMap_get(receivedMethodCall, RSA_FUNCTIONCALL_METHOD_PROPERTYNAME);
char *data = hashMap_get(receivedMethodCall, RSA_FUNCTIONCALL_DATA_PROPERTYNAME);
- if (method == NULL)
- {
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "RSA : receiveFromSharedMemory : no method found.");
- }
- else
- {
- hash_map_iterator_pt iter = hashMapIterator_create(admin->exportedServices);
+ hash_map_iterator_pt iter = hashMapIterator_create(admin->exportedServices);
+
+ while (hashMapIterator_hasNext(iter))
+ {
+ hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
+ array_list_pt exports = hashMapEntry_getValue(entry);
+ int expIt = 0;
+
+ for (expIt = 0; expIt < arrayList_size(exports); expIt++)
+ {
+ export_registration_pt export = arrayList_get(exports, expIt);
+
+ if ( (strcmp(exportedEndpointDesc->service, export->endpointDescription->service) == 0) && (export->endpoint != NULL))
+ {
+ char *reply = NULL;
+ char *encReply = NULL;
+
+ celix_status_t replyStatus = export->endpoint->handleRequest(export->endpoint->endpoint, data, &reply);
+ hashMap_put(receivedMethodCall, RSA_FUNCTIONCALL_RETURNSTATUS_PROPERTYNAME, apr_itoa(admin->pool, replyStatus));
+
+ if (reply != NULL)
+ {
+ hashMap_put(receivedMethodCall, RSA_FUNCTIONCALL_RETURN_PROPERTYNAME, reply);
+
+ // write back
+ if ((status = netstring_encodeFromHashMap(admin->pool, receivedMethodCall, &encReply)) == CELIX_SUCCESS)
+ {
+
+ if ((strlen(encReply) * sizeof(char)) >= RSA_SHM_MEMSIZE)
+ {
+ fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "RSA : receiveFromSharedMemory : size of message bigger than shared memory message. NOT SENDING.");
+ }
+ else
+ {
+ strcpy(ipc->shmBaseAdress, encReply);
+ }
+ }
+ else
+ {
+ fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "RSA : receiveFromSharedMemory : encoding of reply failed");
+ }
+ }
+ }
+ else
+ {
+ printf("RSA : receiveFromSharedMemory : No endpoint set for %s\n", export->endpointDescription->service );
+ }
+ }
+ }
+ hashMapIterator_destroy(iter);
- while (hashMapIterator_hasNext(iter))
- {
- hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
- array_list_pt exports = hashMapEntry_getValue(entry);
- int expIt = 0;
-
- for (expIt = 0; expIt < arrayList_size(exports); expIt++)
- {
- export_registration_pt export = arrayList_get(exports, expIt);
-
- if ( (strcmp(exportedEndpointDesc->service, export->endpointDescription->service) == 0) && (export->endpoint != NULL))
- {
- char *reply = NULL;
- char *encReply = NULL;
-
- celix_status_t replyStatus = export->endpoint->handleRequest(export->endpoint->endpoint, method, data, &reply);
- hashMap_put(receivedMethodCall, RSA_FUNCTIONCALL_RETURNSTATUS_PROPERTYNAME, apr_itoa(admin->pool, replyStatus));
-
- if (reply != NULL)
- {
- hashMap_put(receivedMethodCall, RSA_FUNCTIONCALL_RETURN_PROPERTYNAME, reply);
-
- // write back
- if ((status = netstring_encodeFromHashMap(admin->pool, receivedMethodCall, &encReply)) == CELIX_SUCCESS)
- {
-
- if ((strlen(encReply) * sizeof(char)) >= RSA_SHM_MEMSIZE)
- {
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "RSA : receiveFromSharedMemory : size of message bigger than shared memory message. NOT SENDING.");
- }
- else
- {
- strcpy(ipc->shmBaseAdress, encReply);
- }
- }
- else
- {
- fw_log(logger, OSGI_FRAMEWORK_LOG_ERROR, "RSA : receiveFromSharedMemory : encoding of reply failed");
- }
- }
- }
- else
- {
- printf("RSA : receiveFromSharedMemory : No endpoint set for %s\n", export->endpointDescription->service );
- }
- }
- }
- hashMapIterator_destroy(iter);
- }
}
hashMap_destroy(receivedMethodCall, false, false);
remoteServiceAdmin_unlock(ipc->semId, 2);
Modified: celix/trunk/remote_services/remote_service_admin_shm/public/include/remote_service_admin_shm.h
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/remote_service_admin_shm/public/include/remote_service_admin_shm.h?rev=1613541&r1=1613540&r2=1613541&view=diff
==============================================================================
--- celix/trunk/remote_services/remote_service_admin_shm/public/include/remote_service_admin_shm.h (original)
+++ celix/trunk/remote_services/remote_service_admin_shm/public/include/remote_service_admin_shm.h Sat Jul 26 00:19:31 2014
@@ -27,7 +27,6 @@
#ifndef REMOTE_SERVICE_ADMIN_SHM_H_
#define REMOTE_SERVICE_ADMIN_SHM_H_
-#define RSA_FUNCTIONCALL_METHOD_PROPERTYNAME "method"
#define RSA_FUNCTIONCALL_DATA_PROPERTYNAME "data"
#define RSA_FUNCTIONCALL_RETURN_PROPERTYNAME "reply"
#define RSA_FUNCTIONCALL_RETURNSTATUS_PROPERTYNAME "replyStatus"