celix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From abroekh...@apache.org
Subject svn commit: r1613384 - in /celix/trunk/remote_services: ./ calculator_endpoint/private/include/ calculator_endpoint/private/src/ calculator_proxy/private/src/ discovery_bonjour/private/src/ remote_service_admin/private/include/ remote_service_admin/pub...
Date Fri, 25 Jul 2014 11:04:20 GMT
Author: abroekhuis
Date: Fri Jul 25 11:04:19 2014
New Revision: 1613384

URL: http://svn.apache.org/r1613384
Log:
CELIX-129, CELIX-130: Update HTTP RSAAdmin and added initial directory for Configured discovery.

Modified:
    celix/trunk/remote_services/CMakeLists.txt
    celix/trunk/remote_services/calculator_endpoint/private/include/calculator_endpoint_impl.h
    celix/trunk/remote_services/calculator_endpoint/private/src/calculator_endpoint_impl.c
    celix/trunk/remote_services/calculator_proxy/private/src/calculator_proxy_impl.c
    celix/trunk/remote_services/discovery_bonjour/private/src/discovery.c
    celix/trunk/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h
    celix/trunk/remote_services/remote_service_admin/public/include/remote_endpoint.h
    celix/trunk/remote_services/remote_service_admin/public/include/remote_proxy.h
    celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c

Modified: celix/trunk/remote_services/CMakeLists.txt
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/CMakeLists.txt?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/CMakeLists.txt (original)
+++ celix/trunk/remote_services/CMakeLists.txt Fri Jul 25 11:04:19 2014
@@ -35,6 +35,7 @@ if (REMOTE_SERVICE_ADMIN)
     add_subdirectory(remote_service_admin_shm)   
     add_subdirectory(discovery_slp)
     add_subdirectory(discovery_bonjour)
+    add_subdirectory(discovery_configured)
     add_subdirectory(discovery_shm)
     
     add_subdirectory(calculator_service)

Modified: celix/trunk/remote_services/calculator_endpoint/private/include/calculator_endpoint_impl.h
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/calculator_endpoint/private/include/calculator_endpoint_impl.h?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/calculator_endpoint/private/include/calculator_endpoint_impl.h
(original)
+++ celix/trunk/remote_services/calculator_endpoint/private/include/calculator_endpoint_impl.h
Fri Jul 25 11:04:19 2014
@@ -36,7 +36,7 @@ celix_status_t calculatorEndpoint_create
 
 celix_status_t calculatorEndpoint_setService(remote_endpoint_pt endpoint, void *service);
 
-celix_status_t calculatorEndpoint_handleRequest(remote_endpoint_pt endpoint, char *request,
char *data, char **reply);
+celix_status_t calculatorEndpoint_handleRequest(remote_endpoint_pt endpoint, char *data,
char **reply);
 
 celix_status_t calculatorEndpoint_add(remote_endpoint_pt endpoint, char *data, char **reply);
 celix_status_t calculatorEndpoint_sub(remote_endpoint_pt endpoint, char *data, char **reply);

Modified: celix/trunk/remote_services/calculator_endpoint/private/src/calculator_endpoint_impl.c
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/calculator_endpoint/private/src/calculator_endpoint_impl.c?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/calculator_endpoint/private/src/calculator_endpoint_impl.c
(original)
+++ celix/trunk/remote_services/calculator_endpoint/private/src/calculator_endpoint_impl.c
Fri Jul 25 11:04:19 2014
@@ -51,17 +51,21 @@ celix_status_t calculatorEndpoint_setSer
 }
 
 /**
- * Request: http://host:port/services/{service}/{request}
+ * Request: http://host:port/services/{service}
  */
-celix_status_t calculatorEndpoint_handleRequest(remote_endpoint_pt endpoint, char *request,
char *data, char **reply) {
+celix_status_t calculatorEndpoint_handleRequest(remote_endpoint_pt endpoint, char *data,
char **reply) {
 	celix_status_t status = CELIX_SUCCESS;
+	json_error_t jsonError;
+    json_t *root = json_loads(data, 0, &jsonError);
+    const char *sig;
+    json_unpack(root, "{s:s}", "m", &sig);
 
-	printf("CALCULATOR_ENDPOINT: Handle request \"%s\" with data \"%s\"\n", request, data);
-	if (strcmp(request, "add") == 0) {
+	printf("CALCULATOR_ENDPOINT: Handle request \"%s\" with data \"%s\"\n", sig, data);
+	if (strcmp(sig, "add(DD)D") == 0) {
 		calculatorEndpoint_add(endpoint, data, reply);
-	} else if (strcmp(request, "sub") == 0) {
+	} else if (strcmp(sig, "sub(DD)D") == 0) {
 		calculatorEndpoint_sub(endpoint, data, reply);
-	} else if (strcmp(request, "sqrt") == 0) {
+	} else if (strcmp(sig, "sqrt(D)D") == 0) {
 		calculatorEndpoint_sqrt(endpoint, data, reply);
 	} else {
 		status = CELIX_ILLEGAL_ARGUMENT;
@@ -70,10 +74,6 @@ celix_status_t calculatorEndpoint_handle
 	return status;
 }
 
-/**
- * data = { "a" : 1.1, "b" : 2.4 }
- * reply = 3.5
- */
 celix_status_t calculatorEndpoint_add(remote_endpoint_pt endpoint, char *data, char **reply)
{
 	celix_status_t status = CELIX_SUCCESS;
 	json_error_t jsonError;
@@ -85,7 +85,7 @@ celix_status_t calculatorEndpoint_add(re
 	} else {
 		double a;
 		double b;
-		json_unpack(root, "{s:f, s:f}", "arg0", &a, "arg1", &b);
+		json_unpack(root, "{s:[ff]}", "a", &a, &b);
 
 		if (endpoint->service != NULL) {
 			double result;
@@ -116,7 +116,7 @@ celix_status_t calculatorEndpoint_sub(re
 	} else {
 		double a;
 		double b;
-		json_unpack(root, "{s:f, s:f}", "arg0", &a, "arg1", &b);
+		json_unpack(root, "{s:[ff]}", "a", &a, &b);
 
 		if (endpoint->service != NULL) {
 			double result;
@@ -146,7 +146,7 @@ celix_status_t calculatorEndpoint_sqrt(r
 		status = CELIX_ILLEGAL_ARGUMENT;
 	} else {
 		double a;
-		json_unpack(root, "{s:f}", "arg0", &a);
+		json_unpack(root, "{s:[f]}", "a", &a);
 
 		if (endpoint->service != NULL) {
 			double result;

Modified: celix/trunk/remote_services/calculator_proxy/private/src/calculator_proxy_impl.c
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/calculator_proxy/private/src/calculator_proxy_impl.c?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/calculator_proxy/private/src/calculator_proxy_impl.c (original)
+++ celix/trunk/remote_services/calculator_proxy/private/src/calculator_proxy_impl.c Fri Jul
25 11:04:19 2014
@@ -56,18 +56,21 @@ celix_status_t calculatorProxy_create(ap
 	return status;
 }
 
+// { "m": "" "a":["arg1", "arg2"] }
 celix_status_t calculatorProxy_add(calculator_pt calculator, double a, double b, double *result)
{
 	celix_status_t status = CELIX_SUCCESS;
 
 	if (calculator->endpoint != NULL) {
 		json_t *root;
-		root = json_pack("{s:f, s:f}", "arg0", a, "arg1", b);
+		root = json_pack("{s:s, s:[ff]}", "m", "add(DD)D", "a", a, b);
 
 		char *data = json_dumps(root, 0);
 		char *reply = calloc(128, sizeof(char));
 		int replyStatus = 0;
 
-		calculator->sendToCallback(calculator->sendToHandler, calculator->endpoint, "add",
data, &reply, &replyStatus);
+		printf("Send: %s\n", data);
+
+		calculator->sendToCallback(calculator->sendToHandler, calculator->endpoint, data,
&reply, &replyStatus);
 
 		if (status == CELIX_SUCCESS) {
 			json_error_t jsonError;
@@ -86,13 +89,13 @@ celix_status_t calculatorProxy_sub(calcu
 	celix_status_t status = CELIX_SUCCESS;
 	if (calculator->endpoint != NULL) {
 		json_t *root;
-		root = json_pack("{s:f, s:f}", "arg0", a, "arg1", b);
+		root = json_pack("{s:s, s:[ff]}", "m", "sub(DD)D", "a", a, b);
 
 		char *data = json_dumps(root, 0);
 		char *reply = calloc(128, sizeof(char));
 		int replyStatus = 0;
 
-		calculator->sendToCallback(calculator->sendToHandler, calculator->endpoint, "sub",
data, &reply, &replyStatus);
+		calculator->sendToCallback(calculator->sendToHandler, calculator->endpoint, data,
&reply, &replyStatus);
 
 		if (status == CELIX_SUCCESS) {
 			json_error_t jsonError;
@@ -110,13 +113,13 @@ celix_status_t calculatorProxy_sqrt(calc
 	celix_status_t status = CELIX_SUCCESS;
 	if (calculator->endpoint != NULL) {
 		json_t *root;
-		root = json_pack("{s:f}", "arg0", a);
+		root = json_pack("{s:s, s:[f]}", "m", "sqrt(D)D", "a", a);
 
 		char *data = json_dumps(root, 0);
 		char *reply = calloc(128, sizeof(char));
 		int replyStatus;
 
-		calculator->sendToCallback(calculator->sendToHandler, calculator->endpoint, "sqrt",
data, &reply, &replyStatus);
+		calculator->sendToCallback(calculator->sendToHandler, calculator->endpoint, data,
&reply, &replyStatus);
 
 		if (status == CELIX_SUCCESS) {
 			json_error_t jsonError;

Modified: celix/trunk/remote_services/discovery_bonjour/private/src/discovery.c
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/discovery_bonjour/private/src/discovery.c?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/discovery_bonjour/private/src/discovery.c (original)
+++ celix/trunk/remote_services/discovery_bonjour/private/src/discovery.c Fri Jul 25 11:04:19
2014
@@ -479,6 +479,7 @@ static void discovery_resolveAddCallback
 		endpoint->serviceId = serviceId == NULL? 0 : atol(serviceId);
 		endpoint->service = properties_get(props, "objectClass");
 		endpoint->properties = props;
+		endpoint->frameworkUUID = endpointFrameworkUuid;
 
 		entry->pool = childPool;
 		entry->endpointDescription = endpoint;

Modified: celix/trunk/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h
(original)
+++ celix/trunk/remote_services/remote_service_admin/private/include/remote_service_admin_impl.h
Fri Jul 25 11:04:19 2014
@@ -45,7 +45,7 @@ struct import_reference {
 celix_status_t remoteServiceAdmin_create(apr_pool_t *pool, bundle_context_pt context, remote_service_admin_pt
*admin);
 celix_status_t remoteServiceAdmin_destroy(remote_service_admin_pt admin);
 
-celix_status_t remoteServiceAdmin_send(remote_service_admin_pt rsa, endpoint_description_pt
endpointDescription, char *methodSignature, char *request, char **reply, int* replyStatus);
+celix_status_t remoteServiceAdmin_send(remote_service_admin_pt rsa, endpoint_description_pt
endpointDescription, char *methodSignature, char **reply, int* replyStatus);
 
 celix_status_t remoteServiceAdmin_exportService(remote_service_admin_pt admin, char *serviceId,
properties_pt properties, array_list_pt *registrations);
 celix_status_t remoteServiceAdmin_removeExportedService(export_registration_pt registration);

Modified: celix/trunk/remote_services/remote_service_admin/public/include/remote_endpoint.h
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/remote_service_admin/public/include/remote_endpoint.h?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/remote_service_admin/public/include/remote_endpoint.h (original)
+++ celix/trunk/remote_services/remote_service_admin/public/include/remote_endpoint.h Fri
Jul 25 11:04:19 2014
@@ -34,7 +34,7 @@ typedef struct remote_endpoint *remote_e
 struct remote_endpoint_service {
 	remote_endpoint_pt endpoint;
 	celix_status_t (*setService)(remote_endpoint_pt endpoint, void *service);
-	celix_status_t (*handleRequest)(remote_endpoint_pt endpoint, char *request, char *data,
char **reply);
+	celix_status_t (*handleRequest)(remote_endpoint_pt endpoint, char *data, char **reply);
 };
 
 typedef struct remote_endpoint_service *remote_endpoint_service_pt;

Modified: celix/trunk/remote_services/remote_service_admin/public/include/remote_proxy.h
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/remote_service_admin/public/include/remote_proxy.h?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/remote_service_admin/public/include/remote_proxy.h (original)
+++ celix/trunk/remote_services/remote_service_admin/public/include/remote_proxy.h Fri Jul
25 11:04:19 2014
@@ -32,7 +32,7 @@
 
 #define OSGI_RSA_REMOTE_PROXY_FACTORY 	"remote_proxy_factory"
 
-typedef celix_status_t (*sendToHandle)(void *handler, endpoint_description_pt endpointDescription,
char *methodSignature, char *request, char **reply, int* replyStatus);
+typedef celix_status_t (*sendToHandle)(void *handler, endpoint_description_pt endpointDescription,
char *request, char **reply, int* replyStatus);
 
 typedef struct remote_proxy_service *remote_proxy_service_pt;
 

Modified: celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c
URL: http://svn.apache.org/viewvc/celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c?rev=1613384&r1=1613383&r2=1613384&view=diff
==============================================================================
--- celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c
(original)
+++ celix/trunk/remote_services/remote_service_admin_http/private/src/remote_service_admin_impl.c
Fri Jul 25 11:04:19 2014
@@ -28,6 +28,7 @@
 
 #include <apr_strings.h>
 #include <apr_uuid.h>
+#include <uuid/uuid.h>
 #include <apr_network_io.h>
 
 #include <curl/curl.h>
@@ -166,9 +167,9 @@ static int remoteServiceAdmin_callback(s
 			strncpy(service, rest, pos);
 			service[pos] = '\0';
 
-//			printf("Got service %s, interfaceStart is %s and callStart is %s\n", service, interfaceStart,
callStart);
+			printf("Got service %s, interfaceStart is %s and callStart is %s\n", service, interfaceStart,
callStart);
 
-			char *request = callStart+1;
+//			char *request = callStart+1;
 
 			const char *lengthStr = mg_get_header(conn, (const char *) "Content-Length");
 			int datalength = apr_atoi64(lengthStr);
@@ -176,6 +177,8 @@ static int remoteServiceAdmin_callback(s
 			mg_read(conn, data, datalength);
 			data[datalength] = '\0';
 
+			printf("%s\n", data);
+
 			hash_map_iterator_pt iter = hashMapIterator_create(rsa->exportedServices);
 			while (hashMapIterator_hasNext(iter)) {
 				hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
@@ -186,7 +189,7 @@ static int remoteServiceAdmin_callback(s
 					long serviceId = atol(service);
 					if (serviceId == export->endpointDescription->serviceId) {
 						char *reply = NULL;
-						export->endpoint->handleRequest(export->endpoint->endpoint, request, data,
&reply);
+						export->endpoint->handleRequest(export->endpoint->endpoint, data, &reply);
 						if (reply != NULL) {
 							mg_printf(conn, "%s", ajax_reply_start);
 							mg_printf(conn, "%s", reply);
@@ -201,7 +204,7 @@ static int remoteServiceAdmin_callback(s
 	return 1;
 }
 
-celix_status_t remoteServiceAdmin_handleRequest(remote_service_admin_pt rsa, char *service,
char *request, char *data, char **reply) {
+celix_status_t remoteServiceAdmin_handleRequest(remote_service_admin_pt rsa, char *service,
char *data, char **reply) {
 	hash_map_iterator_pt iter = hashMapIterator_create(rsa->exportedServices);
 	while (hashMapIterator_hasNext(iter)) {
 		hash_map_entry_pt entry = hashMapIterator_nextEntry(iter);
@@ -210,7 +213,7 @@ celix_status_t remoteServiceAdmin_handle
 		for (expIt = 0; expIt < arrayList_size(exports); expIt++) {
 			export_registration_pt export = arrayList_get(exports, expIt);
 			if (strcmp(service, export->endpointDescription->service) == 0) {
-				export->endpoint->handleRequest(export->endpoint->endpoint, request, data,
reply);
+				export->endpoint->handleRequest(export->endpoint->endpoint, data, reply);
 			}
 		}
 	}
@@ -403,20 +406,23 @@ celix_status_t remoteServiceAdmin_create
 	apr_pool_create(&childPool, admin->pool); //TODO pool should be destroyed after when
endpoint is removed
 
 	*description = apr_palloc(childPool, sizeof(*description));
-//	*description = malloc(sizeof(*description));
 	if (!*description) {
 		status = CELIX_ENOMEM;
 	} else {
 		char *uuid = NULL;
 		status = bundleContext_getProperty(admin->context, (char *)OSGI_FRAMEWORK_FRAMEWORK_UUID,
&uuid);
 		if (status == CELIX_SUCCESS) {
+//		    char uuid[37];
+//		    uuid_t uid;
+//            uuid_generate(uid);
+//            uuid_unparse(uid, uuid);
+//
+//            printf("%s\n", uuid);
+
 			(*description)->properties = endpointProperties;
 			(*description)->frameworkUUID = uuid;
 			(*description)->serviceId = apr_atoi64(properties_get(serviceProperties, (char *) OSGI_FRAMEWORK_SERVICE_ID));
-			(*description)->id = apr_pstrdup(childPool, "TODO"); // does not work, txt record to
big ?? --> apr_pstrcat(childPool, uuid, "-", (*description)->serviceId, NULL);
-//			char *id = apr_pstrcat(childPool, uuid, "-", properties_get(serviceProperties, (char
*) OSGI_FRAMEWORK_SERVICE_ID), NULL);
-//			printf("ID %s\n", id);
-//            (*description)->id = id;
+			(*description)->id = apr_pstrdup(childPool, properties_get(serviceProperties, (char
*) OSGI_FRAMEWORK_SERVICE_ID)); // Should be uuid
 			(*description)->service = interface;
 		}
 	}
@@ -502,7 +508,7 @@ celix_status_t remoteServiceAdmin_remove
 
 
 
-celix_status_t remoteServiceAdmin_send(remote_service_admin_pt rsa, endpoint_description_pt
endpointDescription, char *methodSignature, char *request, char **reply, int* replyStatus)
{
+celix_status_t remoteServiceAdmin_send(remote_service_admin_pt rsa, endpoint_description_pt
endpointDescription, char *request, char **reply, int* replyStatus) {
 
     struct post post;
     post.readptr = request;
@@ -514,7 +520,7 @@ celix_status_t remoteServiceAdmin_send(r
 
     char *serviceUrl = properties_get(endpointDescription->properties, ".ars.alias");
     printf("CALCULATOR_PROXY: URL: %s\n", serviceUrl);
-    char *url = apr_pstrcat(rsa->pool, serviceUrl, "/", methodSignature, NULL);
+    char *url = apr_pstrcat(rsa->pool, serviceUrl, NULL);
 
     celix_status_t status = CELIX_SUCCESS;
     CURL *curl;



Mime
View raw message