From commits-return-4567-archive-asf-public=cust-asf.ponee.io@celix.apache.org Tue Jan 30 20:29:53 2018 Return-Path: X-Original-To: archive-asf-public@eu.ponee.io Delivered-To: archive-asf-public@eu.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by mx-eu-01.ponee.io (Postfix) with ESMTP id 9C9591807A5 for ; Tue, 30 Jan 2018 20:29:51 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 8C35B160C54; Tue, 30 Jan 2018 19:29:51 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id C3ECD160C65 for ; Tue, 30 Jan 2018 20:29:47 +0100 (CET) Received: (qmail 61785 invoked by uid 500); 30 Jan 2018 19:29:46 -0000 Mailing-List: contact commits-help@celix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@celix.apache.org Delivered-To: mailing list commits@celix.apache.org Received: (qmail 61105 invoked by uid 99); 30 Jan 2018 19:29:46 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Jan 2018 19:29:46 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 2D4C8F3527; Tue, 30 Jan 2018 19:29:46 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: pnoltes@apache.org To: commits@celix.apache.org Date: Tue, 30 Jan 2018 19:30:06 -0000 Message-Id: In-Reply-To: <738f396660a54807b3c4b2699574eae1@git.apache.org> References: <738f396660a54807b3c4b2699574eae1@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [22/54] [abbrv] celix git commit: CELIX-417: Refactors CMake usage for the RSA bundles http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_common/src/discovery.c ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/src/discovery.c b/remote_services/discovery_common/src/discovery.c index d124c15..d016c09 100644 --- a/remote_services/discovery_common/src/discovery.c +++ b/remote_services/discovery_common/src/discovery.c @@ -33,7 +33,6 @@ #include "log_helper.h" #include "discovery.h" #include "endpoint_discovery_server.h" -#include "discovery_impl.h" //TODO rename impl celix_status_t discovery_endpointAdded(void *handle, endpoint_description_pt endpoint, char *matchedFilter) { http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_common/src/endpoint_discovery_poller.c ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/src/endpoint_discovery_poller.c b/remote_services/discovery_common/src/endpoint_discovery_poller.c index 73fb7ba..e3f9cd4 100644 --- a/remote_services/discovery_common/src/endpoint_discovery_poller.c +++ b/remote_services/discovery_common/src/endpoint_discovery_poller.c @@ -35,9 +35,8 @@ #include "log_helper.h" #include "utils.h" -#include "discovery_impl.h" - #include "endpoint_descriptor_reader.h" +#include "discovery.h" #define DISCOVERY_POLL_INTERVAL "DISCOVERY_CFG_POLL_INTERVAL" @@ -52,7 +51,7 @@ static celix_status_t endpointDiscoveryPoller_endpointDescriptionEquals(const vo /** * Allocates memory and initializes a new endpoint_discovery_poller instance. */ -celix_status_t endpointDiscoveryPoller_create(discovery_pt discovery, bundle_context_pt context, endpoint_discovery_poller_pt *poller) { +celix_status_t endpointDiscoveryPoller_create(discovery_pt discovery, bundle_context_pt context, const char* defaultPollEndpoints, endpoint_discovery_poller_pt *poller) { celix_status_t status; *poller = malloc(sizeof(struct endpoint_discovery_poller)); @@ -76,7 +75,7 @@ celix_status_t endpointDiscoveryPoller_create(discovery_pt discovery, bundle_con const char* endpointsProp = NULL; status = bundleContext_getProperty(context, DISCOVERY_POLL_ENDPOINTS, &endpointsProp); if (!endpointsProp) { - endpointsProp = DEFAULT_POLL_ENDPOINTS; + endpointsProp = defaultPollEndpoints; } // we're going to mutate the string with strtok, so create a copy... char* endpoints = strdup(endpointsProp); http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_common/src/endpoint_discovery_server.c ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/src/endpoint_discovery_server.c b/remote_services/discovery_common/src/endpoint_discovery_server.c index f5f82af..7620bbf 100644 --- a/remote_services/discovery_common/src/endpoint_discovery_server.c +++ b/remote_services/discovery_common/src/endpoint_discovery_server.c @@ -35,8 +35,6 @@ #include "utils.h" #include "log_helper.h" #include "discovery.h" -#include "discovery_impl.h" - #include "endpoint_descriptor_writer.h" // defines how often the webserver is restarted (with an increased port number) @@ -72,7 +70,13 @@ static char* format_path(const char* path); static celix_status_t endpointDiscoveryServer_getIpAdress(char* interface, char** ip); #endif -celix_status_t endpointDiscoveryServer_create(discovery_pt discovery, bundle_context_pt context, endpoint_discovery_server_pt *server) { +celix_status_t endpointDiscoveryServer_create( + discovery_pt discovery, + bundle_context_pt context, + const char* defaultServerPath, + const char* defaultServerPort, + const char* defaultServerIp, + endpoint_discovery_server_pt *server) { celix_status_t status; const char *port = NULL; @@ -122,8 +126,8 @@ celix_status_t endpointDiscoveryServer_create(discovery_pt discovery, bundle_con (*server)->ip = strdup(ip); } else { - logHelper_log(*(*server)->loghelper, OSGI_LOGSERVICE_WARNING, "No IP address for service annunciation set. Using %s", DEFAULT_SERVER_IP); - (*server)->ip = strdup((char*) DEFAULT_SERVER_IP); + logHelper_log(*(*server)->loghelper, OSGI_LOGSERVICE_WARNING, "No IP address for service annunciation set. Using %s", defaultServerIp); + (*server)->ip = strdup((char*) defaultServerIp); } if (detectedIp != NULL) { @@ -132,12 +136,12 @@ celix_status_t endpointDiscoveryServer_create(discovery_pt discovery, bundle_con bundleContext_getProperty(context, DISCOVERY_SERVER_PORT, &port); if (port == NULL) { - port = DEFAULT_SERVER_PORT; + port = defaultServerPort; } bundleContext_getProperty(context, DISCOVERY_SERVER_PATH, &path); if (path == NULL) { - path = DEFAULT_SERVER_PATH; + path = defaultServerPath; } bundleContext_getProperty(context, DISCOVERY_SERVER_MAX_EP, &retries); @@ -177,7 +181,7 @@ celix_status_t endpointDiscoveryServer_create(discovery_pt discovery, bundle_con long currentPort = strtol(port, &endptr, 10); if (*endptr || errno != 0) { - currentPort = strtol(DEFAULT_SERVER_PORT, NULL, 10); + currentPort = strtol(defaultServerPort, NULL, 10); } port_counter++; http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_common/src/md5.inl ---------------------------------------------------------------------- diff --git a/remote_services/discovery_common/src/md5.inl b/remote_services/discovery_common/src/md5.inl deleted file mode 100644 index 4da933d..0000000 --- a/remote_services/discovery_common/src/md5.inl +++ /dev/null @@ -1,461 +0,0 @@ -/* - * This an amalgamation of md5.c and md5.h into a single file - * with all static declaration to reduce linker conflicts - * in Civetweb. - * - * The MD5_STATIC declaration was added to facilitate static - * inclusion. - * No Face Press, LLC - */ - -/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */ -/* - Independent implementation of MD5 (RFC 1321). - - This code implements the MD5 Algorithm defined in RFC 1321, whose - text is available at - http://www.ietf.org/rfc/rfc1321.txt - The code is derived from the text of the RFC, including the test suite - (section A.5) but excluding the rest of Appendix A. It does not include - any code or documentation that is identified in the RFC as being - copyrighted. - - The original and principal author of md5.h is L. Peter Deutsch - . Other authors are noted in the change history - that follows (in reverse chronological order): - - 2002-04-13 lpd Removed support for non-ANSI compilers; removed - references to Ghostscript; clarified derivation from RFC 1321; - now handles byte order either statically or dynamically. - 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. - 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); - added conditionalization for C++ compilation from Martin - Purschke . - 1999-05-03 lpd Original version. - */ - -#ifndef md5_INCLUDED -# define md5_INCLUDED - -/* - * This package supports both compile-time and run-time determination of CPU - * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be - * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is - * defined as non-zero, the code will be compiled to run only on big-endian - * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to - * run on either big- or little-endian CPUs, but will run slightly less - * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. - */ - -typedef unsigned char md5_byte_t; /* 8-bit byte */ -typedef unsigned int md5_word_t; /* 32-bit word */ - -/* Define the state of the MD5 Algorithm. */ -typedef struct md5_state_s { - md5_word_t count[2]; /* message length in bits, lsw first */ - md5_word_t abcd[4]; /* digest buffer */ - md5_byte_t buf[64]; /* accumulate block */ -} md5_state_t; - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* Initialize the algorithm. */ -MD5_STATIC void md5_init(md5_state_t *pms); - -/* Append a string to the message. */ -MD5_STATIC void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); - -/* Finish the message and return the digest. */ -MD5_STATIC void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); - -#ifdef __cplusplus -} /* end extern "C" */ -#endif - -#endif /* md5_INCLUDED */ - -/* - Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - L. Peter Deutsch - ghost@aladdin.com - - */ -/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */ -/* - Independent implementation of MD5 (RFC 1321). - - This code implements the MD5 Algorithm defined in RFC 1321, whose - text is available at - http://www.ietf.org/rfc/rfc1321.txt - The code is derived from the text of the RFC, including the test suite - (section A.5) but excluding the rest of Appendix A. It does not include - any code or documentation that is identified in the RFC as being - copyrighted. - - The original and principal author of md5.c is L. Peter Deutsch - . Other authors are noted in the change history - that follows (in reverse chronological order): - - 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order - either statically or dynamically; added missing #include - in library. - 2002-03-11 lpd Corrected argument list for main(), and added int return - type, in test program and T value program. - 2002-02-21 lpd Added missing #include in test program. - 2000-07-03 lpd Patched to eliminate warnings about "constant is - unsigned in ANSI C, signed in traditional"; made test program - self-checking. - 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. - 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). - 1999-05-03 lpd Original version. - */ - -#ifndef MD5_STATIC -#include -#endif - -#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ -#ifdef ARCH_IS_BIG_ENDIAN -# define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1) -#else -# define BYTE_ORDER 0 -#endif - -#define T_MASK ((md5_word_t)~0) -#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) -#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) -#define T3 0x242070db -#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111) -#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050) -#define T6 0x4787c62a -#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec) -#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe) -#define T9 0x698098d8 -#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850) -#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e) -#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841) -#define T13 0x6b901122 -#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c) -#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71) -#define T16 0x49b40821 -#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d) -#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf) -#define T19 0x265e5a51 -#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855) -#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2) -#define T22 0x02441453 -#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e) -#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437) -#define T25 0x21e1cde6 -#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829) -#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278) -#define T28 0x455a14ed -#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa) -#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07) -#define T31 0x676f02d9 -#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375) -#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd) -#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e) -#define T35 0x6d9d6122 -#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3) -#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb) -#define T38 0x4bdecfa9 -#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f) -#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f) -#define T41 0x289b7ec6 -#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805) -#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a) -#define T44 0x04881d05 -#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6) -#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a) -#define T47 0x1fa27cf8 -#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a) -#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb) -#define T50 0x432aff97 -#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58) -#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6) -#define T53 0x655b59c3 -#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d) -#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82) -#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e) -#define T57 0x6fa87e4f -#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f) -#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb) -#define T60 0x4e0811a1 -#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d) -#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca) -#define T63 0x2ad7d2bb -#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e) - - -static void -md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) -{ - md5_word_t - a = pms->abcd[0], b = pms->abcd[1], - c = pms->abcd[2], d = pms->abcd[3]; - md5_word_t t; -#if BYTE_ORDER > 0 - /* Define storage only for big-endian CPUs. */ - md5_word_t X[16]; -#else - /* Define storage for little-endian or both types of CPUs. */ - md5_word_t xbuf[16]; - const md5_word_t *X; -#endif - - { -#if BYTE_ORDER == 0 - /* - * Determine dynamically whether this is a big-endian or - * little-endian machine, since we can use a more efficient - * algorithm on the latter. - */ - static const int w = 1; - - if (*((const md5_byte_t *)&w)) /* dynamic little-endian */ -#endif -#if BYTE_ORDER <= 0 /* little-endian */ - { - /* - * On little-endian machines, we can process properly aligned - * data without copying it. - */ - if (!((data - (const md5_byte_t *)0) & 3)) { - /* data are properly aligned */ - X = (const md5_word_t *)data; - } else { - /* not aligned */ - memcpy(xbuf, data, 64); - X = xbuf; - } - } -#endif -#if BYTE_ORDER == 0 - else /* dynamic big-endian */ -#endif -#if BYTE_ORDER >= 0 /* big-endian */ - { - /* - * On big-endian machines, we must arrange the bytes in the - * right order. - */ - const md5_byte_t *xp = data; - int i; - -# if BYTE_ORDER == 0 - X = xbuf; /* (dynamic only) */ -# else -# define xbuf X /* (static only) */ -# endif - for (i = 0; i < 16; ++i, xp += 4) - xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); - } -#endif - } - -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) - - /* Round 1. */ - /* Let [abcd k s i] denote the operation - a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ -#define F(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + F(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 0, 7, T1); - SET(d, a, b, c, 1, 12, T2); - SET(c, d, a, b, 2, 17, T3); - SET(b, c, d, a, 3, 22, T4); - SET(a, b, c, d, 4, 7, T5); - SET(d, a, b, c, 5, 12, T6); - SET(c, d, a, b, 6, 17, T7); - SET(b, c, d, a, 7, 22, T8); - SET(a, b, c, d, 8, 7, T9); - SET(d, a, b, c, 9, 12, T10); - SET(c, d, a, b, 10, 17, T11); - SET(b, c, d, a, 11, 22, T12); - SET(a, b, c, d, 12, 7, T13); - SET(d, a, b, c, 13, 12, T14); - SET(c, d, a, b, 14, 17, T15); - SET(b, c, d, a, 15, 22, T16); -#undef SET - - /* Round 2. */ - /* Let [abcd k s i] denote the operation - a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ -#define G(x, y, z) (((x) & (z)) | ((y) & ~(z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + G(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 1, 5, T17); - SET(d, a, b, c, 6, 9, T18); - SET(c, d, a, b, 11, 14, T19); - SET(b, c, d, a, 0, 20, T20); - SET(a, b, c, d, 5, 5, T21); - SET(d, a, b, c, 10, 9, T22); - SET(c, d, a, b, 15, 14, T23); - SET(b, c, d, a, 4, 20, T24); - SET(a, b, c, d, 9, 5, T25); - SET(d, a, b, c, 14, 9, T26); - SET(c, d, a, b, 3, 14, T27); - SET(b, c, d, a, 8, 20, T28); - SET(a, b, c, d, 13, 5, T29); - SET(d, a, b, c, 2, 9, T30); - SET(c, d, a, b, 7, 14, T31); - SET(b, c, d, a, 12, 20, T32); -#undef SET - - /* Round 3. */ - /* Let [abcd k s t] denote the operation - a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + H(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 5, 4, T33); - SET(d, a, b, c, 8, 11, T34); - SET(c, d, a, b, 11, 16, T35); - SET(b, c, d, a, 14, 23, T36); - SET(a, b, c, d, 1, 4, T37); - SET(d, a, b, c, 4, 11, T38); - SET(c, d, a, b, 7, 16, T39); - SET(b, c, d, a, 10, 23, T40); - SET(a, b, c, d, 13, 4, T41); - SET(d, a, b, c, 0, 11, T42); - SET(c, d, a, b, 3, 16, T43); - SET(b, c, d, a, 6, 23, T44); - SET(a, b, c, d, 9, 4, T45); - SET(d, a, b, c, 12, 11, T46); - SET(c, d, a, b, 15, 16, T47); - SET(b, c, d, a, 2, 23, T48); -#undef SET - - /* Round 4. */ - /* Let [abcd k s t] denote the operation - a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ -#define I(x, y, z) ((y) ^ ((x) | ~(z))) -#define SET(a, b, c, d, k, s, Ti)\ - t = a + I(b,c,d) + X[k] + Ti;\ - a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ - SET(a, b, c, d, 0, 6, T49); - SET(d, a, b, c, 7, 10, T50); - SET(c, d, a, b, 14, 15, T51); - SET(b, c, d, a, 5, 21, T52); - SET(a, b, c, d, 12, 6, T53); - SET(d, a, b, c, 3, 10, T54); - SET(c, d, a, b, 10, 15, T55); - SET(b, c, d, a, 1, 21, T56); - SET(a, b, c, d, 8, 6, T57); - SET(d, a, b, c, 15, 10, T58); - SET(c, d, a, b, 6, 15, T59); - SET(b, c, d, a, 13, 21, T60); - SET(a, b, c, d, 4, 6, T61); - SET(d, a, b, c, 11, 10, T62); - SET(c, d, a, b, 2, 15, T63); - SET(b, c, d, a, 9, 21, T64); -#undef SET - - /* Then perform the following additions. (That is increment each - of the four registers by the value it had before this block - was started.) */ - pms->abcd[0] += a; - pms->abcd[1] += b; - pms->abcd[2] += c; - pms->abcd[3] += d; -} - -MD5_STATIC void -md5_init(md5_state_t *pms) -{ - pms->count[0] = pms->count[1] = 0; - pms->abcd[0] = 0x67452301; - pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; - pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; - pms->abcd[3] = 0x10325476; -} - -MD5_STATIC void -md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes) -{ - const md5_byte_t *p = data; - int left = nbytes; - int offset = (pms->count[0] >> 3) & 63; - md5_word_t nbits = (md5_word_t)(nbytes << 3); - - if (nbytes <= 0) - return; - - /* Update the message length. */ - pms->count[1] += nbytes >> 29; - pms->count[0] += nbits; - if (pms->count[0] < nbits) - pms->count[1]++; - - /* Process an initial partial block. */ - if (offset) { - int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); - - memcpy(pms->buf + offset, p, copy); - if (offset + copy < 64) - return; - p += copy; - left -= copy; - md5_process(pms, pms->buf); - } - - /* Process full blocks. */ - for (; left >= 64; p += 64, left -= 64) - md5_process(pms, p); - - /* Process a final partial block. */ - if (left) - memcpy(pms->buf, p, left); -} - -MD5_STATIC void -md5_finish(md5_state_t *pms, md5_byte_t digest[16]) -{ - static const md5_byte_t pad[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; - md5_byte_t data[8]; - int i; - - /* Save the length before padding. */ - for (i = 0; i < 8; ++i) - data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3)); - /* Pad to 56 bytes mod 64. */ - md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1); - /* Append the length. */ - md5_append(pms, data, 8); - for (i = 0; i < 16; ++i) - digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3)); -} http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_configured/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/discovery_configured/CMakeLists.txt b/remote_services/discovery_configured/CMakeLists.txt index e0f3e9b..f7d104b 100644 --- a/remote_services/discovery_configured/CMakeLists.txt +++ b/remote_services/discovery_configured/CMakeLists.txt @@ -25,9 +25,15 @@ if (RSA_DISCOVERY_CONFIGURED) NAME "Apache Celix RSA Configured Discovery" SOURCES src/discovery_impl.c + $ + $ ) - target_include_directories(discovery_configured PRIVATE src) - target_link_libraries(discovery_configured PRIVATE ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES} Celix::log_helper discovery_common) + target_include_directories(discovery_configured PRIVATE + src + $ + $ + ) + target_link_libraries(discovery_configured PRIVATE ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES} Celix::log_helper) install_bundle(discovery_configured) http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_configured/src/discovery_impl.c ---------------------------------------------------------------------- diff --git a/remote_services/discovery_configured/src/discovery_impl.c b/remote_services/discovery_configured/src/discovery_impl.c index 35a0c71..89c777e 100644 --- a/remote_services/discovery_configured/src/discovery_impl.c +++ b/remote_services/discovery_configured/src/discovery_impl.c @@ -66,12 +66,12 @@ celix_status_t discovery_start(discovery_pt discovery) { logHelper_start(discovery->loghelper); - status = endpointDiscoveryPoller_create(discovery, discovery->context, &discovery->poller); + status = endpointDiscoveryPoller_create(discovery, discovery->context, DEFAULT_POLL_ENDPOINTS, &discovery->poller); if (status != CELIX_SUCCESS) { return CELIX_BUNDLE_EXCEPTION; } - status = endpointDiscoveryServer_create(discovery, discovery->context, &discovery->server); + status = endpointDiscoveryServer_create(discovery, discovery->context, DEFAULT_SERVER_PATH, DEFAULT_SERVER_PORT, DEFAULT_SERVER_IP, &discovery->server); if (status != CELIX_SUCCESS) { return CELIX_BUNDLE_EXCEPTION; } http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_configured/src/discovery_impl.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_configured/src/discovery_impl.h b/remote_services/discovery_configured/src/discovery_impl.h index 0414eac..a9d56c1 100644 --- a/remote_services/discovery_configured/src/discovery_impl.h +++ b/remote_services/discovery_configured/src/discovery_impl.h @@ -44,19 +44,19 @@ #define DEFAULT_POLL_ENDPOINTS "http://localhost:9999/org.apache.celix.discovery.configured" -struct discovery { - bundle_context_pt context; - - celix_thread_mutex_t listenerReferencesMutex; - celix_thread_mutex_t discoveredServicesMutex; - - hash_map_pt listenerReferences; //key=serviceReference, value=nop - hash_map_pt discoveredServices; //key=endpointId (string), value=endpoint_description_pt - - endpoint_discovery_poller_pt poller; - endpoint_discovery_server_pt server; - - log_helper_pt loghelper; -}; +//struct discovery_impl { +// bundle_context_pt context; +// +// celix_thread_mutex_t listenerReferencesMutex; +// celix_thread_mutex_t discoveredServicesMutex; +// +// hash_map_pt listenerReferences; //key=serviceReference, value=nop +// hash_map_pt discoveredServices; //key=endpointId (string), value=endpoint_description_pt +// +// endpoint_discovery_poller_pt poller; +// endpoint_discovery_server_pt server; +// +// log_helper_pt loghelper; +//}; #endif /* DISCOVERY_IMPL_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_etcd/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/discovery_etcd/CMakeLists.txt b/remote_services/discovery_etcd/CMakeLists.txt index 4168281..9c8edc8 100644 --- a/remote_services/discovery_etcd/CMakeLists.txt +++ b/remote_services/discovery_etcd/CMakeLists.txt @@ -28,11 +28,19 @@ if (RSA_DISCOVERY_ETCD) SOURCES src/discovery_impl.c src/etcd_watcher.c + $ + $ ) - target_link_libraries(discovery_etcd PRIVATE Celix::log_helper) - target_include_directories(discovery_etcd PRIVATE src ) - target_include_directories(discovery_etcd PRIVATE ${CURL_INCLUDE_DIR} ${JANSSON_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR}) - target_link_libraries(discovery_etcd PRIVATE ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES} ${JANSSON_LIBRARIES} discovery_common) + target_link_libraries(discovery_etcd PRIVATE Celix::log_helper Celix::etcdlib_static) + target_include_directories(discovery_etcd PRIVATE src) + target_include_directories(discovery_etcd PRIVATE + $ + $ + ${CURL_INCLUDE_DIR} + ${JANSSON_INCLUDE_DIR} + ${LIBXML2_INCLUDE_DIR} + ) + target_link_libraries(discovery_etcd PRIVATE ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES} ${JANSSON_LIBRARIES}) install_bundle(discovery_etcd) endif (RSA_DISCOVERY_ETCD) http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_etcd/src/discovery_impl.c ---------------------------------------------------------------------- diff --git a/remote_services/discovery_etcd/src/discovery_impl.c b/remote_services/discovery_etcd/src/discovery_impl.c index 8087d95..500399e 100644 --- a/remote_services/discovery_etcd/src/discovery_impl.c +++ b/remote_services/discovery_etcd/src/discovery_impl.c @@ -50,25 +50,35 @@ -celix_status_t discovery_create(bundle_context_pt context, discovery_pt *discovery) { +celix_status_t discovery_create(bundle_context_pt context, discovery_t** out) { celix_status_t status = CELIX_SUCCESS; - *discovery = malloc(sizeof(struct discovery)); - if (!*discovery) { - return CELIX_ENOMEM; - } + discovery_t* discovery = calloc(1, sizeof(*discovery)); + discovery_impl_t* pImpl = calloc(1, sizeof(*pImpl)); + + if (discovery != NULL && pImpl != NULL) { + discovery->pImpl = pImpl; + discovery->context = context; + discovery->poller = NULL; + discovery->server = NULL; - (*discovery)->context = context; - (*discovery)->poller = NULL; - (*discovery)->server = NULL; + discovery->listenerReferences = hashMap_create(serviceReference_hashCode, NULL, serviceReference_equals2, + NULL); + discovery->discoveredServices = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL); - (*discovery)->listenerReferences = hashMap_create(serviceReference_hashCode, NULL, serviceReference_equals2, NULL); - (*discovery)->discoveredServices = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL); + status = celixThreadMutex_create(&discovery->listenerReferencesMutex, NULL); + status = celixThreadMutex_create(&discovery->discoveredServicesMutex, NULL); - status = celixThreadMutex_create(&(*discovery)->listenerReferencesMutex, NULL); - status = celixThreadMutex_create(&(*discovery)->discoveredServicesMutex, NULL); + logHelper_create(context, &discovery->loghelper); + } else { + status = CELIX_ENOMEM; + free(discovery); + free(pImpl); + } - logHelper_create(context, &(*discovery)->loghelper); + if (status == CELIX_SUCCESS) { + *out = discovery; + } return status; } @@ -124,17 +134,17 @@ celix_status_t discovery_start(discovery_pt discovery) { path = DEFAULT_SERVER_PATH; } - status = endpointDiscoveryPoller_create(discovery, discovery->context, &discovery->poller); + status = endpointDiscoveryPoller_create(discovery, discovery->context, DEFAULT_POLL_ENDPOINTS, &discovery->poller); if (status != CELIX_SUCCESS) { return CELIX_BUNDLE_EXCEPTION; } - status = endpointDiscoveryServer_create(discovery, discovery->context, &discovery->server); + status = endpointDiscoveryServer_create(discovery, discovery->context, DEFAULT_SERVER_PATH, DEFAULT_SERVER_PORT, DEFAULT_SERVER_IP, &discovery->server); if (status != CELIX_SUCCESS) { return CELIX_BUNDLE_EXCEPTION; } - status = etcdWatcher_create(discovery, discovery->context, &discovery->watcher); + status = etcdWatcher_create(discovery, discovery->context, &discovery->pImpl->watcher); if (status != CELIX_SUCCESS) { return CELIX_BUNDLE_EXCEPTION; } @@ -144,7 +154,7 @@ celix_status_t discovery_start(discovery_pt discovery) { celix_status_t discovery_stop(discovery_pt discovery) { celix_status_t status; - status = etcdWatcher_destroy(discovery->watcher); + status = etcdWatcher_destroy(discovery->pImpl->watcher); if (status != CELIX_SUCCESS) { return CELIX_BUNDLE_EXCEPTION; } http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_etcd/src/discovery_impl.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_etcd/src/discovery_impl.h b/remote_services/discovery_etcd/src/discovery_impl.h index a19b145..f28017b 100644 --- a/remote_services/discovery_etcd/src/discovery_impl.h +++ b/remote_services/discovery_etcd/src/discovery_impl.h @@ -47,20 +47,8 @@ #define FREE_MEM(ptr) if(ptr) {free(ptr); ptr = NULL;} -struct discovery { - bundle_context_pt context; - - celix_thread_mutex_t listenerReferencesMutex; - celix_thread_mutex_t discoveredServicesMutex; - - hash_map_pt listenerReferences; //key=serviceReference, value=nop - hash_map_pt discoveredServices; //key=endpointId (string), value=endpoint_description_pt - - etcd_watcher_pt watcher; - endpoint_discovery_poller_pt poller; - endpoint_discovery_server_pt server; - - log_helper_pt loghelper; +struct discovery_impl { + etcd_watcher_t* watcher; }; #endif /* DISCOVERY_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_etcd/src/etcd_watcher.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_etcd/src/etcd_watcher.h b/remote_services/discovery_etcd/src/etcd_watcher.h index b4dbf40..56bae92 100644 --- a/remote_services/discovery_etcd/src/etcd_watcher.h +++ b/remote_services/discovery_etcd/src/etcd_watcher.h @@ -31,6 +31,7 @@ #include "discovery.h" #include "endpoint_discovery_poller.h" +typedef struct etcd_watcher etcd_watcher_t; typedef struct etcd_watcher *etcd_watcher_pt; celix_status_t etcdWatcher_create(discovery_pt discovery, bundle_context_pt context, etcd_watcher_pt *watcher); http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_shm/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/discovery_shm/CMakeLists.txt b/remote_services/discovery_shm/CMakeLists.txt index dff403d..61e54f7 100644 --- a/remote_services/discovery_shm/CMakeLists.txt +++ b/remote_services/discovery_shm/CMakeLists.txt @@ -28,13 +28,17 @@ find_package(CURL REQUIRED) src/discovery_shm.c src/discovery_shmWatcher.c src/discovery_impl.c + $ + $ ) target_include_directories(discovery_shm PRIVATE src ${LIBXML2_INCLUDE_DIR} ${CURL_INCLUDE_DIR} + $ + $ ) - target_link_libraries(discovery_shm PRIVATE Celix::framework ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES} discovery_common) + target_link_libraries(discovery_shm PRIVATE Celix::framework ${CURL_LIBRARIES} ${LIBXML2_LIBRARIES}) install_bundle(discovery_shm) http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_shm/src/discovery_impl.c ---------------------------------------------------------------------- diff --git a/remote_services/discovery_shm/src/discovery_impl.c b/remote_services/discovery_shm/src/discovery_impl.c index 2604595..fadff8c 100644 --- a/remote_services/discovery_shm/src/discovery_impl.c +++ b/remote_services/discovery_shm/src/discovery_impl.c @@ -48,28 +48,34 @@ #include "endpoint_discovery_poller.h" #include "endpoint_discovery_server.h" - - -celix_status_t discovery_create(bundle_context_pt context, discovery_pt *discovery) { +celix_status_t discovery_create(bundle_context_pt context, discovery_t** out) { celix_status_t status = CELIX_SUCCESS; - *discovery = calloc(1, sizeof(struct discovery)); - if (!*discovery) { - status = CELIX_ENOMEM; - } else { - (*discovery)->context = context; - (*discovery)->poller = NULL; - (*discovery)->server = NULL; + discovery_t* discovery = calloc(1, sizeof(*discovery)); + discovery_impl_t* pImpl = calloc(1, sizeof(*pImpl)); + if (discovery != NULL && pImpl != NULL) { + discovery->pImpl = pImpl; + discovery->context = context; + discovery->poller = NULL; + discovery->server = NULL; - (*discovery)->listenerReferences = hashMap_create(serviceReference_hashCode, NULL, serviceReference_equals2, NULL); - (*discovery)->discoveredServices = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL); + discovery->listenerReferences = hashMap_create(serviceReference_hashCode, NULL, serviceReference_equals2, NULL); + discovery->discoveredServices = hashMap_create(utils_stringHash, NULL, utils_stringEquals, NULL); - celixThreadMutex_create(&(*discovery)->listenerReferencesMutex, NULL); - celixThreadMutex_create(&(*discovery)->discoveredServicesMutex, NULL); + celixThreadMutex_create(&discovery->listenerReferencesMutex, NULL); + celixThreadMutex_create(&discovery->discoveredServicesMutex, NULL); - if (logHelper_create(context, &(*discovery)->loghelper) == CELIX_SUCCESS) { - logHelper_start((*discovery)->loghelper); + if (logHelper_create(context, &discovery->loghelper) == CELIX_SUCCESS) { + logHelper_start(discovery->loghelper); } + } else { + status = CELIX_ENOMEM; + free(discovery); + free(pImpl); + } + + if (status == CELIX_SUCCESS) { + *out = discovery; } return status; @@ -113,9 +119,9 @@ celix_status_t discovery_destroy(discovery_pt discovery) { celix_status_t discovery_start(discovery_pt discovery) { celix_status_t status; - status = endpointDiscoveryPoller_create(discovery, discovery->context, &discovery->poller); + status = endpointDiscoveryPoller_create(discovery, discovery->context, DEFAULT_POLL_ENDPOINTS, &discovery->poller); if (status == CELIX_SUCCESS) { - status = endpointDiscoveryServer_create(discovery, discovery->context, &discovery->server); + status = endpointDiscoveryServer_create(discovery, discovery->context, DEFAULT_SERVER_PATH, DEFAULT_SERVER_PORT, DEFAULT_SERVER_IP, &discovery->server); } if (status == CELIX_SUCCESS) { http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_shm/src/discovery_impl.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_shm/src/discovery_impl.h b/remote_services/discovery_shm/src/discovery_impl.h index c7206bd..e994b1f 100644 --- a/remote_services/discovery_shm/src/discovery_impl.h +++ b/remote_services/discovery_shm/src/discovery_impl.h @@ -37,30 +37,17 @@ #include "endpoint_discovery_server.h" #include "discovery_shmWatcher.h" - #define DEFAULT_SERVER_IP "127.0.0.1" #define DEFAULT_SERVER_PORT "9999" #define DEFAULT_SERVER_PATH "/org.apache.celix.discovery.shm" #define DEFAULT_POLL_ENDPOINTS "http://localhost:9999/org.apache.celix.discovery.shm" -#define MAX_ROOTNODE_LENGTH 64 -#define MAX_LOCALNODE_LENGTH 256 - - -struct discovery { - bundle_context_pt context; - - celix_thread_mutex_t listenerReferencesMutex; - celix_thread_mutex_t discoveredServicesMutex; - - hash_map_pt listenerReferences; //key=serviceReference, value=nop - hash_map_pt discoveredServices; //key=endpointId (string), value=endpoint_description_pt +#define MAX_ROOTNODE_LENGTH 64 +#define MAX_LOCALNODE_LENGTH 256 - shm_watcher_pt watcher; - endpoint_discovery_poller_pt poller; - endpoint_discovery_server_pt server; - log_helper_pt loghelper; +struct discovery_impl { + shm_watcher_t* watcher; }; #endif /* DISCOVERY_H_ */ http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_shm/src/discovery_shmWatcher.c ---------------------------------------------------------------------- diff --git a/remote_services/discovery_shm/src/discovery_shmWatcher.c b/remote_services/discovery_shm/src/discovery_shmWatcher.c index 6460de8..ef7df71 100644 --- a/remote_services/discovery_shm/src/discovery_shmWatcher.c +++ b/remote_services/discovery_shm/src/discovery_shmWatcher.c @@ -40,6 +40,15 @@ #include "endpoint_discovery_poller.h" +#define DEFAULT_SERVER_IP "127.0.0.1" +#define DEFAULT_SERVER_PORT "9999" +#define DEFAULT_SERVER_PATH "/org.apache.celix.discovery.shm" +#define DEFAULT_POLL_ENDPOINTS "http://localhost:9999/org.apache.celix.discovery.shm" + +#define MAX_ROOTNODE_LENGTH 64 +#define MAX_LOCALNODE_LENGTH 256 + + struct shm_watcher { shmData_pt shmData; celix_thread_t watcherThread; @@ -82,7 +91,7 @@ static celix_status_t discoveryShmWatcher_getLocalNodePath(bundle_context_pt con /* retrieves all endpoints from shm and syncs them with the ones already available */ static celix_status_t discoveryShmWatcher_syncEndpoints(discovery_pt discovery) { celix_status_t status = CELIX_SUCCESS; - shm_watcher_pt watcher = discovery->watcher; + shm_watcher_pt watcher = discovery->pImpl->watcher; char** shmKeyArr = calloc(SHM_DATA_MAX_ENTRIES, sizeof(*shmKeyArr)); array_list_pt registeredKeyArr = NULL; @@ -147,7 +156,7 @@ static celix_status_t discoveryShmWatcher_syncEndpoints(discovery_pt discovery) static void* discoveryShmWatcher_run(void* data) { discovery_pt discovery = (discovery_pt) data; - shm_watcher_pt watcher = discovery->watcher; + shm_watcher_pt watcher = discovery->pImpl->watcher; char localNodePath[MAX_LOCALNODE_LENGTH]; char url[MAX_LOCALNODE_LENGTH]; @@ -194,10 +203,10 @@ celix_status_t discoveryShmWatcher_create(discovery_pt discovery) { } if (status == CELIX_SUCCESS) { - discovery->watcher = watcher; + discovery->pImpl->watcher = watcher; } else{ - discovery->watcher = NULL; + discovery->pImpl->watcher = NULL; free(watcher); } @@ -216,7 +225,7 @@ celix_status_t discoveryShmWatcher_create(discovery_pt discovery) { celix_status_t discoveryShmWatcher_destroy(discovery_pt discovery) { celix_status_t status; - shm_watcher_pt watcher = discovery->watcher; + shm_watcher_pt watcher = discovery->pImpl->watcher; char localNodePath[MAX_LOCALNODE_LENGTH]; celixThreadMutex_lock(&watcher->watcherLock); http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/discovery_shm/src/discovery_shmWatcher.h ---------------------------------------------------------------------- diff --git a/remote_services/discovery_shm/src/discovery_shmWatcher.h b/remote_services/discovery_shm/src/discovery_shmWatcher.h index ff70f72..4e7e1d5 100644 --- a/remote_services/discovery_shm/src/discovery_shmWatcher.h +++ b/remote_services/discovery_shm/src/discovery_shmWatcher.h @@ -31,6 +31,7 @@ #include "discovery.h" #include "endpoint_discovery_poller.h" +typedef struct shm_watcher shm_watcher_t; typedef struct shm_watcher *shm_watcher_pt; celix_status_t discoveryShmWatcher_create(discovery_pt discovery); http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_common/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_common/CMakeLists.txt b/remote_services/remote_service_admin_common/CMakeLists.txt index 1813211..a421cda 100644 --- a/remote_services/remote_service_admin_common/CMakeLists.txt +++ b/remote_services/remote_service_admin_common/CMakeLists.txt @@ -21,4 +21,6 @@ add_library(remote_service_admin_common STATIC src/import_registration_impl.c ) target_include_directories(remote_service_admin_common PRIVATE src) -target_link_libraries(remote_service_admin_common PUBLIC Celix::framework Celix::remote_service_admin_api Celix::log_helper) \ No newline at end of file +target_link_libraries(remote_service_admin_common PUBLIC Celix::framework Celix::remote_service_admin_api Celix::log_helper) + +add_library(Celix::remote_service_admin_common ALIAS remote_service_admin_common) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/CMakeLists.txt b/remote_services/remote_service_admin_dfi/CMakeLists.txt index 4b28231..206c6dc 100644 --- a/remote_services/remote_service_admin_dfi/CMakeLists.txt +++ b/remote_services/remote_service_admin_dfi/CMakeLists.txt @@ -23,21 +23,31 @@ if (RSA_REMOTE_SERVICE_ADMIN_DFI) find_package(CURL REQUIRED) find_package(Jansson REQUIRED) - include_directories( - ${CURL_INCLUDE_DIRS} - ${JANSSON_INCLUDE_DIRS} + add_bundle(remote_service_admin_dfi + VERSION 0.9.0 + SYMBOLIC_NAME "apache_celix_remote_service_admin_dfi" + NAME "Apache Celix Remote Service Admin Dynamic Function Interface (DFI)" + SOURCES + src/remote_service_admin_dfi.c + src/remote_service_admin_activator.c + src/export_registration_dfi.c + src/import_registration_dfi.c + src/dfi_utils.c + $ ) + target_include_directories(remote_service_admin_dfi PRIVATE src $) + target_link_libraries(remote_service_admin_dfi PRIVATE + Celix::dfi_static + Celix::log_helper + Celix::remote_service_admin_common + ${CURL_LIBRARIES} ${JANSSON_LIBRARIES}) - if (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") - include_directories(dynamic_function_interface/memstream) - endif() - - add_subdirectory(rsa) + install_bundle(remote_service_admin_dfi) if (ENABLE_TESTING) - find_package(CppUTest REQUIRED) - include_directories(${CPPUTEST_INCLUDE_DIR}) - add_subdirectory(rsa_tst) + add_subdirectory(test) endif() + #Setup target aliases to match external usage + add_library(Celix::remote_service_admin_dfi ALIAS remote_service_admin_dfi) endif() http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/rsa/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/CMakeLists.txt b/remote_services/remote_service_admin_dfi/rsa/CMakeLists.txt deleted file mode 100644 index 3efabf8..0000000 --- a/remote_services/remote_service_admin_dfi/rsa/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -# 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. - -add_bundle(remote_service_admin_dfi - VERSION 0.9.0 - SYMBOLIC_NAME "apache_celix_remote_service_admin_dfi" - NAME "Apache Celix Remote Service Admin Dynamic Function Interface (DFI)" - SOURCES - src/remote_service_admin_dfi.c - src/remote_service_admin_activator.c - src/export_registration_dfi.c - src/import_registration_dfi.c - src/dfi_utils.c -) -target_include_directories(remote_service_admin_dfi PRIVATE src) -target_link_libraries(remote_service_admin_dfi PRIVATE - Celix::dfi Celix::log_helper remote_service_admin_common - ${CURL_LIBRARIES} ${JANSSON_LIBRARIES}) - -install_bundle(remote_service_admin_dfi) http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/rsa/src/dfi_utils.c ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/src/dfi_utils.c b/remote_services/remote_service_admin_dfi/rsa/src/dfi_utils.c deleted file mode 100644 index 1b1eb36..0000000 --- a/remote_services/remote_service_admin_dfi/rsa/src/dfi_utils.c +++ /dev/null @@ -1,98 +0,0 @@ -/** - *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. - */ - -#include "dfi_utils.h" -#include -#include - -static celix_status_t dfi_findFileForFramework(bundle_context_pt context, const char *fileName, FILE **out) { - celix_status_t status; - - char pwd[1024]; - char path[1024]; - const char *extPath = NULL; - - status = bundleContext_getProperty(context, "CELIX_FRAMEWORK_EXTENDER_PATH", &extPath); - if (status != CELIX_SUCCESS || extPath == NULL) { - getcwd(pwd, sizeof(pwd)); - extPath = pwd; - } - - snprintf(path, sizeof(path), "%s/%s", extPath, fileName); - - if (status == CELIX_SUCCESS) { - FILE *df = fopen(path, "r"); - if (df == NULL) { - status = CELIX_FILE_IO_EXCEPTION; - } else { - *out = df; - } - } - - return status; -} - -static celix_status_t dfi_findFileForBundle(bundle_pt bundle, const char *fileName, FILE **out) { - celix_status_t status; - - char *path = NULL; - char metaInfFileName[512]; - snprintf(metaInfFileName, sizeof(metaInfFileName), "META-INF/descriptors/%s", fileName); - - status = bundle_getEntry(bundle, fileName, &path); - - if (status != CELIX_SUCCESS || path == NULL) { - status = bundle_getEntry(bundle, metaInfFileName, &path); - } - - if (status == CELIX_SUCCESS && path != NULL) { - FILE *df = fopen(path, "r"); - if (df == NULL) { - status = CELIX_FILE_IO_EXCEPTION; - } else { - *out = df; - } - - } - - free(path); - return status; -} - -celix_status_t dfi_findDescriptor(bundle_context_pt context, bundle_pt bundle, const char *name, FILE **out) { - celix_status_t status; - char fileName[128]; - - snprintf(fileName, 128, "%s.descriptor", name); - - long id; - status = bundle_getBundleId(bundle, &id); - - if (status == CELIX_SUCCESS) { - if (id == 0) { - //framework bundle - status = dfi_findFileForFramework(context, fileName, out); - } else { - //normal bundle - status = dfi_findFileForBundle(bundle, fileName, out); - } - } - - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/rsa/src/dfi_utils.h ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/src/dfi_utils.h b/remote_services/remote_service_admin_dfi/rsa/src/dfi_utils.h deleted file mode 100644 index cec8aa1..0000000 --- a/remote_services/remote_service_admin_dfi/rsa/src/dfi_utils.h +++ /dev/null @@ -1,30 +0,0 @@ -/** - *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. - */ -#ifndef DFI_UTILS_H_ -#define DFI_UTILS_H_ - -#include "bundle.h" -#include "bundle_context.h" -#include -#include "celix_errno.h" - - -celix_status_t dfi_findDescriptor(bundle_context_pt context, bundle_pt bundle, const char *name, FILE **out); - -#endif http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/rsa/src/export_registration_dfi.c ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/src/export_registration_dfi.c b/remote_services/remote_service_admin_dfi/rsa/src/export_registration_dfi.c deleted file mode 100644 index b83b5a8..0000000 --- a/remote_services/remote_service_admin_dfi/rsa/src/export_registration_dfi.c +++ /dev/null @@ -1,251 +0,0 @@ -/** - *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. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include "constants.h" -#include "export_registration_dfi.h" -#include "dfi_utils.h" - -struct export_reference { - endpoint_description_pt endpoint; //owner - service_reference_pt reference; -}; - -struct export_registration { - bundle_context_pt context; - struct export_reference exportReference; - char *servId; - dyn_interface_type *intf; //owner - service_tracker_pt tracker; - - celix_thread_mutex_t mutex; - void *service; //protected by mutex - - //TODO add tracker and lock - bool closed; -}; - -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, service_reference_pt reference, endpoint_description_pt endpoint, bundle_context_pt context, export_registration_pt *out) { - celix_status_t status = CELIX_SUCCESS; - - const char *servId = NULL; - status = serviceReference_getProperty(reference, "service.id", &servId); - if (status != CELIX_SUCCESS) { - logHelper_log(helper, OSGI_LOGSERVICE_WARNING, "Cannot find service.id for ref"); - } - - export_registration_pt reg = NULL; - if (status == CELIX_SUCCESS) { - reg = calloc(1, sizeof(*reg)); - if (reg == NULL) { - status = CELIX_ENOMEM; - } - } - - - if (status == CELIX_SUCCESS) { - reg->context = context; - reg->exportReference.endpoint = endpoint; - reg->exportReference.reference = reference; - reg->closed = false; - - celixThreadMutex_create(®->mutex, NULL); - } - - const char *exports = NULL; - CELIX_DO_IF(status, serviceReference_getProperty(reference, (char *) OSGI_RSA_SERVICE_EXPORTED_INTERFACES, &exports)); - - bundle_pt bundle = NULL; - CELIX_DO_IF(status, serviceReference_getBundle(reference, &bundle)); - - FILE *descriptor = NULL; - if (status == CELIX_SUCCESS) { - status = dfi_findDescriptor(context, bundle, exports, &descriptor); - } - - if (status != CELIX_SUCCESS || descriptor == NULL) { - status = CELIX_BUNDLE_EXCEPTION; - logHelper_log(helper, OSGI_LOGSERVICE_ERROR, "Cannot find/open descriptor for '%s'", exports); - } - - if (status == CELIX_SUCCESS) { - int rc = dynInterface_parse(descriptor, ®->intf); - fclose(descriptor); - if (rc != 0) { - status = CELIX_BUNDLE_EXCEPTION; - logHelper_log(helper, OSGI_LOGSERVICE_WARNING, "RSA: Error parsing service descriptor."); - } - else{ - /* Add the interface version as a property in the properties_map */ - char* intfVersion = NULL; - dynInterface_getVersionString(reg->intf, &intfVersion); - const char *serviceVersion = properties_get(endpoint->properties,(char*) CELIX_FRAMEWORK_SERVICE_VERSION); - if(serviceVersion!=NULL){ - if(strcmp(serviceVersion,intfVersion)!=0){ - logHelper_log(helper, OSGI_LOGSERVICE_WARNING, "Service version (%s) and interface version from the descriptor (%s) are not the same!",serviceVersion,intfVersion); - } - } - else{ - properties_set(endpoint->properties, (char*) CELIX_FRAMEWORK_SERVICE_VERSION, intfVersion); - } - } - } - - if (status == CELIX_SUCCESS) { - service_tracker_customizer_pt cust = NULL; - status = serviceTrackerCustomizer_create(reg, NULL, (void *) exportRegistration_addServ, NULL, - (void *) exportRegistration_removeServ, &cust); - if (status == CELIX_SUCCESS) { - char filter[32]; - snprintf(filter, 32, "(service.id=%s)", servId); - status = serviceTracker_createWithFilter(reg->context, filter, cust, ®->tracker); - } - } - - if (status == CELIX_SUCCESS) { - *out = reg; - } else { - logHelper_log(helper, OSGI_LOGSERVICE_ERROR, "Error creating export registration"); - exportRegistration_destroy(reg); - } - - return status; -} - -celix_status_t exportRegistration_call(export_registration_pt export, char *data, int datalength, char **responseOut, int *responseLength) { - int status = CELIX_SUCCESS; - - //printf("calling for '%s'\n"); - - *responseLength = -1; - celixThreadMutex_lock(&export->mutex); - status = jsonRpc_call(export->intf, export->service, data, responseOut); - celixThreadMutex_unlock(&export->mutex); - - return status; -} - -void exportRegistration_destroy(export_registration_pt reg) { - if (reg != NULL) { - if (reg->intf != NULL) { - dyn_interface_type *intf = reg->intf; - reg->intf = NULL; - dynInterface_destroy(intf); - } - - if (reg->exportReference.endpoint != NULL) { - endpoint_description_pt ep = reg->exportReference.endpoint; - reg->exportReference.endpoint = NULL; - endpointDescription_destroy(ep); - } - if (reg->tracker != NULL) { - serviceTracker_destroy(reg->tracker); - } - celixThreadMutex_destroy(®->mutex); - - free(reg); - } -} - -celix_status_t exportRegistration_start(export_registration_pt reg) { - celix_status_t status = CELIX_SUCCESS; - - serviceTracker_open(reg->tracker); - return status; -} - - -celix_status_t exportRegistration_stop(export_registration_pt reg) { - celix_status_t status = CELIX_SUCCESS; - if (status == CELIX_SUCCESS) { - status = bundleContext_ungetServiceReference(reg->context, reg->exportReference.reference); - serviceTracker_close(reg->tracker); - } - return status; -} - -static void exportRegistration_addServ(export_registration_pt reg, service_reference_pt ref, void *service) { - celixThreadMutex_lock(®->mutex); - reg->service = service; - celixThreadMutex_unlock(®->mutex); -} - -static void exportRegistration_removeServ(export_registration_pt reg, service_reference_pt ref, void *service) { - celixThreadMutex_lock(®->mutex); - if (reg->service == service) { - reg->service = NULL; - } - celixThreadMutex_unlock(®->mutex); -} - - -celix_status_t exportRegistration_close(export_registration_pt reg) { - celix_status_t status = CELIX_SUCCESS; - exportRegistration_stop(reg); - return status; -} - - -celix_status_t exportRegistration_getException(export_registration_pt registration) { - celix_status_t status = CELIX_SUCCESS; - //TODO - return status; -} - -celix_status_t exportRegistration_getExportReference(export_registration_pt registration, export_reference_pt *out) { - celix_status_t status = CELIX_SUCCESS; - export_reference_pt ref = calloc(1, sizeof(*ref)); - if (ref != NULL) { - ref->endpoint = registration->exportReference.endpoint; - ref->reference = registration->exportReference.reference; - } else { - status = CELIX_ENOMEM; - } - - if (status == CELIX_SUCCESS) { - *out = ref; - } - - return status; -} - -celix_status_t exportReference_getExportedEndpoint(export_reference_pt reference, endpoint_description_pt *endpoint) { - celix_status_t status = CELIX_SUCCESS; - *endpoint = reference->endpoint; - return status; -} - -celix_status_t exportReference_getExportedService(export_reference_pt reference, service_reference_pt *ref) { - celix_status_t status = CELIX_SUCCESS; - *ref = reference->reference; - return status; -} - - - http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/rsa/src/export_registration_dfi.h ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/src/export_registration_dfi.h b/remote_services/remote_service_admin_dfi/rsa/src/export_registration_dfi.h deleted file mode 100644 index 93f37ba..0000000 --- a/remote_services/remote_service_admin_dfi/rsa/src/export_registration_dfi.h +++ /dev/null @@ -1,38 +0,0 @@ -/** - *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. - */ - -#ifndef CELIX_EXPORT_REGISTRATION_DFI_H -#define CELIX_EXPORT_REGISTRATION_DFI_H - - -#include "export_registration.h" -#include "log_helper.h" -#include "endpoint_description.h" - -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); -celix_status_t exportRegistration_close(export_registration_pt registration); -void exportRegistration_destroy(export_registration_pt registration); - -celix_status_t exportRegistration_start(export_registration_pt registration); -celix_status_t exportRegistration_stop(export_registration_pt registration); - -celix_status_t exportRegistration_call(export_registration_pt export, char *data, int datalength, char **response, int *responseLength); - - -#endif //CELIX_EXPORT_REGISTRATION_DFI_H http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/rsa/src/import_registration_dfi.c ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/src/import_registration_dfi.c b/remote_services/remote_service_admin_dfi/rsa/src/import_registration_dfi.c deleted file mode 100644 index 0b8dcf7..0000000 --- a/remote_services/remote_service_admin_dfi/rsa/src/import_registration_dfi.c +++ /dev/null @@ -1,402 +0,0 @@ -/** - *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. - */ - -#include -#include -#include -#include -#include "version.h" -#include "json_serializer.h" -#include "dyn_interface.h" -#include "import_registration.h" -#include "import_registration_dfi.h" - -struct import_registration { - bundle_context_pt context; - endpoint_description_pt endpoint; //TODO owner? -> free when destroyed - const char *classObject; //NOTE owned by endpoint - version_pt version; - - celix_thread_mutex_t mutex; //protects send & sendhandle - send_func_type send; - void *sendHandle; - - service_factory_pt factory; - service_registration_pt factoryReg; - - hash_map_pt proxies; //key -> bundle, value -> service_proxy - celix_thread_mutex_t proxiesMutex; //protects proxies -}; - -struct service_proxy { - dyn_interface_type *intf; - void *service; - size_t count; -}; - -static celix_status_t importRegistration_createProxy(import_registration_pt import, bundle_pt bundle, - struct service_proxy **proxy); -static void importRegistration_proxyFunc(void *userData, void *args[], void *returnVal); -static void importRegistration_destroyProxy(struct service_proxy *proxy); -static void importRegistration_clearProxies(import_registration_pt import); - -celix_status_t importRegistration_create(bundle_context_pt context, endpoint_description_pt endpoint, const char *classObject, const char* serviceVersion, - import_registration_pt *out) { - celix_status_t status = CELIX_SUCCESS; - import_registration_pt reg = calloc(1, sizeof(*reg)); - - if (reg != NULL) { - reg->factory = calloc(1, sizeof(*reg->factory)); - } - - if (reg != NULL && reg->factory != NULL) { - reg->context = context; - reg->endpoint = endpoint; - reg->classObject = classObject; - reg->proxies = hashMap_create(NULL, NULL, NULL, NULL); - - celixThreadMutex_create(®->mutex, NULL); - celixThreadMutex_create(®->proxiesMutex, NULL); - status = version_createVersionFromString((char*)serviceVersion,&(reg->version)); - - reg->factory->handle = reg; - reg->factory->getService = (void *)importRegistration_getService; - reg->factory->ungetService = (void *)importRegistration_ungetService; - } else { - status = CELIX_ENOMEM; - } - - if (status == CELIX_SUCCESS) { - //printf("IMPORT REGISTRATION IS %p\n", reg); - *out = reg; - } - else{ - importRegistration_destroy(reg); - } - - return status; -} - - -celix_status_t importRegistration_setSendFn(import_registration_pt reg, - send_func_type send, - void *handle) { - celixThreadMutex_lock(®->mutex); - reg->send = send; - reg->sendHandle = handle; - celixThreadMutex_unlock(®->mutex); - - return CELIX_SUCCESS; -} - -static void importRegistration_clearProxies(import_registration_pt import) { - if (import != NULL) { - pthread_mutex_lock(&import->proxiesMutex); - if (import->proxies != NULL) { - hash_map_iterator_pt iter = hashMapIterator_create(import->proxies); - while (hashMapIterator_hasNext(iter)) { - hash_map_entry_pt entry = hashMapIterator_nextEntry(iter); - struct service_proxy *proxy = hashMapEntry_getValue(entry); - importRegistration_destroyProxy(proxy); - } - hashMapIterator_destroy(iter); - } - pthread_mutex_unlock(&import->proxiesMutex); - } -} - -void importRegistration_destroy(import_registration_pt import) { - if (import != NULL) { - if (import->proxies != NULL) { - hashMap_destroy(import->proxies, false, false); - import->proxies = NULL; - } - - pthread_mutex_destroy(&import->mutex); - pthread_mutex_destroy(&import->proxiesMutex); - - if (import->factory != NULL) { - free(import->factory); - } - - if(import->version!=NULL){ - version_destroy(import->version); - } - free(import); - } -} - -celix_status_t importRegistration_start(import_registration_pt import) { - celix_status_t status = CELIX_SUCCESS; - if (import->factoryReg == NULL && import->factory != NULL) { - properties_pt props = NULL; - properties_copy(import->endpoint->properties, &props); - status = bundleContext_registerServiceFactory(import->context, (char *)import->classObject, import->factory, props, &import->factoryReg); - } else { - status = CELIX_ILLEGAL_STATE; - } - return status; -} - -celix_status_t importRegistration_stop(import_registration_pt import) { - celix_status_t status = CELIX_SUCCESS; - - if (import->factoryReg != NULL) { - serviceRegistration_unregister(import->factoryReg); - import->factoryReg = NULL; - } - - importRegistration_clearProxies(import); - - return status; -} - - -celix_status_t importRegistration_getService(import_registration_pt import, bundle_pt bundle, service_registration_pt registration, void **out) { - celix_status_t status = CELIX_SUCCESS; - - /* - module_pt module = NULL; - char *name = NULL; - bundle_getCurrentModule(bundle, &module); - module_getSymbolicName(module, &name); - printf("getting service for bundle '%s'\n", name); - */ - - - pthread_mutex_lock(&import->proxiesMutex); - struct service_proxy *proxy = hashMap_get(import->proxies, bundle); - if (proxy == NULL) { - status = importRegistration_createProxy(import, bundle, &proxy); - if (status == CELIX_SUCCESS) { - hashMap_put(import->proxies, bundle, proxy); - } - } - - if (status == CELIX_SUCCESS) { - proxy->count += 1; - *out = proxy->service; - } - pthread_mutex_unlock(&import->proxiesMutex); - - return status; -} - -static celix_status_t importRegistration_createProxy(import_registration_pt import, bundle_pt bundle, struct service_proxy **out) { - celix_status_t status; - dyn_interface_type* intf = NULL; - FILE *descriptor = NULL; - - status = dfi_findDescriptor(import->context, bundle, import->classObject, &descriptor); - - if (status != CELIX_SUCCESS || descriptor == NULL) { - //TODO use log helper logHelper_log(helper, OSGI_LOGSERVICE_ERROR, "Cannot find/open descriptor for '%s'", import->classObject); - fprintf(stderr, "RSA_DFI: Cannot find/open descriptor for '%s'", import->classObject); - return CELIX_BUNDLE_EXCEPTION; - } - - if (status == CELIX_SUCCESS) { - int rc = dynInterface_parse(descriptor, &intf); - fclose(descriptor); - if (rc != 0 || intf==NULL) { - return CELIX_BUNDLE_EXCEPTION; - } - } - - /* Check if the imported service version is compatible with the one in the consumer descriptor */ - version_pt consumerVersion = NULL; - bool isCompatible = false; - dynInterface_getVersion(intf,&consumerVersion); - version_isCompatible(consumerVersion,import->version,&isCompatible); - - if(!isCompatible){ - char* cVerString = NULL; - char* pVerString = NULL; - version_toString(consumerVersion,&cVerString); - version_toString(import->version,&pVerString); - printf("Service version mismatch: consumer has %s, provider has %s. NOT creating proxy.\n",cVerString,pVerString); - dynInterface_destroy(intf); - free(cVerString); - free(pVerString); - status = CELIX_SERVICE_EXCEPTION; - } - - struct service_proxy *proxy = NULL; - if (status == CELIX_SUCCESS) { - proxy = calloc(1, sizeof(*proxy)); - if (proxy == NULL) { - status = CELIX_ENOMEM; - } - } - - if (status == CELIX_SUCCESS) { - proxy->intf = intf; - size_t count = dynInterface_nrOfMethods(proxy->intf); - proxy->service = calloc(1 + count, sizeof(void *)); - if (proxy->service == NULL) { - status = CELIX_ENOMEM; - } - } - - if (status == CELIX_SUCCESS) { - void **serv = proxy->service; - serv[0] = import; - - struct methods_head *list = NULL; - dynInterface_methods(proxy->intf, &list); - struct method_entry *entry = NULL; - void (*fn)(void) = NULL; - int index = 0; - TAILQ_FOREACH(entry, list, entries) { - int rc = dynFunction_createClosure(entry->dynFunc, importRegistration_proxyFunc, entry, &fn); - serv[index + 1] = fn; - index += 1; - - if (rc != 0) { - status = CELIX_BUNDLE_EXCEPTION; - break; - } - } - } - - if (status == CELIX_SUCCESS) { - *out = proxy; - } else if (proxy != NULL) { - if (proxy->intf != NULL) { - dynInterface_destroy(proxy->intf); - proxy->intf = NULL; - } - free(proxy->service); - free(proxy); - } - - return status; -} - -static void importRegistration_proxyFunc(void *userData, void *args[], void *returnVal) { - int status = CELIX_SUCCESS; - struct method_entry *entry = userData; - import_registration_pt import = *((void **)args[0]); - - if (import == NULL || import->send == NULL) { - status = CELIX_ILLEGAL_ARGUMENT; - } - - - char *invokeRequest = NULL; - if (status == CELIX_SUCCESS) { - status = jsonRpc_prepareInvokeRequest(entry->dynFunc, entry->id, args, &invokeRequest); - //printf("Need to send following json '%s'\n", invokeRequest); - } - - - if (status == CELIX_SUCCESS) { - char *reply = NULL; - int rc = 0; - //printf("sending request\n"); - celixThreadMutex_lock(&import->mutex); - if (import->send != NULL) { - import->send(import->sendHandle, import->endpoint, invokeRequest, &reply, &rc); - } - celixThreadMutex_unlock(&import->mutex); - //printf("request sended. got reply '%s' with status %i\n", reply, rc); - - if (rc == 0) { - //fjprintf("Handling reply '%s'\n", reply); - status = jsonRpc_handleReply(entry->dynFunc, reply, args); - } - - *(int *) returnVal = rc; - - free(invokeRequest); //Allocated by json_dumps in jsonRpc_prepareInvokeRequest - free(reply); //Allocated by json_dumps in remoteServiceAdmin_send through curl call - } - - if (status != CELIX_SUCCESS) { - //TODO log error - } -} - -celix_status_t importRegistration_ungetService(import_registration_pt import, bundle_pt bundle, service_registration_pt registration, void **out) { - celix_status_t status = CELIX_SUCCESS; - - assert(import != NULL); - assert(import->proxies != NULL); - - pthread_mutex_lock(&import->proxiesMutex); - - struct service_proxy *proxy = hashMap_get(import->proxies, bundle); - if (proxy != NULL) { - if (*out == proxy->service) { - proxy->count -= 1; - } else { - status = CELIX_ILLEGAL_ARGUMENT; - } - - if (proxy->count == 0) { - hashMap_remove(import->proxies, bundle); - importRegistration_destroyProxy(proxy); - } - } - - pthread_mutex_unlock(&import->proxiesMutex); - - return status; -} - -static void importRegistration_destroyProxy(struct service_proxy *proxy) { - if (proxy != NULL) { - if (proxy->intf != NULL) { - dynInterface_destroy(proxy->intf); - } - if (proxy->service != NULL) { - free(proxy->service); - } - free(proxy); - } -} - - -celix_status_t importRegistration_close(import_registration_pt registration) { - celix_status_t status = CELIX_SUCCESS; - importRegistration_stop(registration); - return status; -} - -celix_status_t importRegistration_getException(import_registration_pt registration) { - celix_status_t status = CELIX_SUCCESS; - //TODO - return status; -} - -celix_status_t importRegistration_getImportReference(import_registration_pt registration, import_reference_pt *reference) { - celix_status_t status = CELIX_SUCCESS; - //TODO - return status; -} - -celix_status_t importReference_getImportedEndpoint(import_reference_pt reference) { - celix_status_t status = CELIX_SUCCESS; - return status; -} - -celix_status_t importReference_getImportedService(import_reference_pt reference) { - celix_status_t status = CELIX_SUCCESS; - return status; -} http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/rsa/src/import_registration_dfi.h ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/src/import_registration_dfi.h b/remote_services/remote_service_admin_dfi/rsa/src/import_registration_dfi.h deleted file mode 100644 index aac4bc7..0000000 --- a/remote_services/remote_service_admin_dfi/rsa/src/import_registration_dfi.h +++ /dev/null @@ -1,44 +0,0 @@ -/** - *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. - */ - -#ifndef CELIX_IMPORT_REGISTRATION_DFI_H -#define CELIX_IMPORT_REGISTRATION_DFI_H - -#include "import_registration.h" -#include "dfi_utils.h" - -#include - -typedef void (*send_func_type)(void *handle, endpoint_description_pt endpointDescription, char *request, char **reply, int* replyStatus); - -celix_status_t importRegistration_create(bundle_context_pt context, endpoint_description_pt description, const char *classObject, const char* serviceVersion, - import_registration_pt *import); -celix_status_t importRegistration_close(import_registration_pt import); -void importRegistration_destroy(import_registration_pt import); - -celix_status_t importRegistration_setSendFn(import_registration_pt reg, - send_func_type, - void *handle); -celix_status_t importRegistration_start(import_registration_pt import); -celix_status_t importRegistration_stop(import_registration_pt import); - -celix_status_t importRegistration_getService(import_registration_pt import, bundle_pt bundle, service_registration_pt registration, void **service); -celix_status_t importRegistration_ungetService(import_registration_pt import, bundle_pt bundle, service_registration_pt registration, void **service); - -#endif //CELIX_IMPORT_REGISTRATION_DFI_H http://git-wip-us.apache.org/repos/asf/celix/blob/27a2aa75/remote_services/remote_service_admin_dfi/rsa/src/remote_service_admin_activator.c ---------------------------------------------------------------------- diff --git a/remote_services/remote_service_admin_dfi/rsa/src/remote_service_admin_activator.c b/remote_services/remote_service_admin_dfi/rsa/src/remote_service_admin_activator.c deleted file mode 100644 index d4cc765..0000000 --- a/remote_services/remote_service_admin_dfi/rsa/src/remote_service_admin_activator.c +++ /dev/null @@ -1,124 +0,0 @@ -/** - *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. - */ -/* - * remote_service_admin_activator.c - * - * \date Sep 30, 2011 - * \author Apache Celix Project Team - * \copyright Apache License, Version 2.0 - */ -#include -#include - -#include "remote_service_admin_dfi.h" - -#include "bundle_activator.h" -#include "service_registration.h" - -#include "export_registration_dfi.h" -#include "import_registration_dfi.h" - -struct activator { - remote_service_admin_pt admin; - remote_service_admin_service_pt adminService; - service_registration_pt registration; -}; - -celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) { - celix_status_t status = CELIX_SUCCESS; - struct activator *activator; - - activator = calloc(1, sizeof(*activator)); - if (!activator) { - status = CELIX_ENOMEM; - } else { - activator->admin = NULL; - activator->registration = NULL; - - *userData = activator; - } - - return status; -} - -celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) { - celix_status_t status = CELIX_SUCCESS; - struct activator *activator = userData; - remote_service_admin_service_pt remoteServiceAdmin = NULL; - - status = remoteServiceAdmin_create(context, &activator->admin); - if (status == CELIX_SUCCESS) { - remoteServiceAdmin = calloc(1, sizeof(*remoteServiceAdmin)); - if (!remoteServiceAdmin) { - status = CELIX_ENOMEM; - } else { - remoteServiceAdmin->admin = activator->admin; - remoteServiceAdmin->exportService = remoteServiceAdmin_exportService; - - remoteServiceAdmin->getExportedServices = remoteServiceAdmin_getExportedServices; - remoteServiceAdmin->getImportedEndpoints = remoteServiceAdmin_getImportedEndpoints; - remoteServiceAdmin->importService = remoteServiceAdmin_importService; - - remoteServiceAdmin->exportReference_getExportedEndpoint = exportReference_getExportedEndpoint; - remoteServiceAdmin->exportReference_getExportedService = exportReference_getExportedService; - - remoteServiceAdmin->exportRegistration_close = remoteServiceAdmin_removeExportedService; - remoteServiceAdmin->exportRegistration_getException = exportRegistration_getException; - remoteServiceAdmin->exportRegistration_getExportReference = exportRegistration_getExportReference; - - remoteServiceAdmin->importReference_getImportedEndpoint = importReference_getImportedEndpoint; - remoteServiceAdmin->importReference_getImportedService = importReference_getImportedService; - - remoteServiceAdmin->importRegistration_close = remoteServiceAdmin_removeImportedService; - remoteServiceAdmin->importRegistration_getException = importRegistration_getException; - remoteServiceAdmin->importRegistration_getImportReference = importRegistration_getImportReference; - - status = bundleContext_registerService(context, OSGI_RSA_REMOTE_SERVICE_ADMIN, remoteServiceAdmin, NULL, &activator->registration); - activator->adminService = remoteServiceAdmin; - } - } - - return status; -} - -celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) { - celix_status_t status = CELIX_SUCCESS; - struct activator *activator = userData; - - serviceRegistration_unregister(activator->registration); - activator->registration = NULL; - - remoteServiceAdmin_stop(activator->admin); - remoteServiceAdmin_destroy(&activator->admin); - - free(activator->adminService); - - return status; -} - -celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) { - celix_status_t status = CELIX_SUCCESS; - struct activator *activator = userData; - - free(activator); - - return status; -} - -