Author: abroekhuis
Date: Thu Dec  9 11:59:18 2010
New Revision: 1043916

URL: http://svn.apache.org/viewvc?rev=1043916&view=rev
Log:
CELIX-1 initial code import

Added:
    incubator/celix/trunk/echo_service/
    incubator/celix/trunk/echo_service/CMakeLists.txt
    incubator/celix/trunk/echo_service/client/
    incubator/celix/trunk/echo_service/client/CMakeLists.txt
    incubator/celix/trunk/echo_service/client/MANIFEST/
    incubator/celix/trunk/echo_service/client/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/echo_service/client/echo_client.c
    incubator/celix/trunk/echo_service/client/echo_client_activator.c
    incubator/celix/trunk/echo_service/client/echo_client_private.h
    incubator/celix/trunk/echo_service/server/
    incubator/celix/trunk/echo_service/server/CMakeLists.txt
    incubator/celix/trunk/echo_service/server/MANIFEST/
    incubator/celix/trunk/echo_service/server/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/echo_service/server/echo_server.c
    incubator/celix/trunk/echo_service/server/echo_server.h
    incubator/celix/trunk/echo_service/server/echo_server_activator.c
    incubator/celix/trunk/echo_service/server/echo_server_private.h
    incubator/celix/trunk/remote/
    incubator/celix/trunk/remote/TestService.java
    incubator/celix/trunk/remote/test.service.proto
    incubator/celix/trunk/remote/test_service.h
    incubator/celix/trunk/whiteboard/
    incubator/celix/trunk/whiteboard/CMakeLists.txt
    incubator/celix/trunk/whiteboard/publisherA/
    incubator/celix/trunk/whiteboard/publisherA/CMakeLists.txt
    incubator/celix/trunk/whiteboard/publisherA/MANIFEST/
    incubator/celix/trunk/whiteboard/publisherA/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/whiteboard/publisherA/activator.c
    incubator/celix/trunk/whiteboard/publisherA/publisher.c
    incubator/celix/trunk/whiteboard/publisherB/
    incubator/celix/trunk/whiteboard/publisherB/CMakeLists.txt
    incubator/celix/trunk/whiteboard/publisherB/MANIFEST/
    incubator/celix/trunk/whiteboard/publisherB/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/whiteboard/publisherB/activator.c
    incubator/celix/trunk/whiteboard/publisherB/publisher.c
    incubator/celix/trunk/whiteboard/publisherService/
    incubator/celix/trunk/whiteboard/publisherService/publisher.h
    incubator/celix/trunk/whiteboard/publisherService/publisher_private.h
    incubator/celix/trunk/whiteboard/tracker/
    incubator/celix/trunk/whiteboard/tracker/CMakeLists.txt
    incubator/celix/trunk/whiteboard/tracker/MANIFEST/
    incubator/celix/trunk/whiteboard/tracker/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/whiteboard/tracker/activator.c
    incubator/celix/trunk/whiteboard/tracker_depman/
    incubator/celix/trunk/whiteboard/tracker_depman/CMakeLists.txt
    incubator/celix/trunk/whiteboard/tracker_depman/MANIFEST/
    incubator/celix/trunk/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF
    incubator/celix/trunk/whiteboard/tracker_depman/dependency_activator.c

Added: incubator/celix/trunk/echo_service/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/CMakeLists.txt?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/CMakeLists.txt (added)
+++ incubator/celix/trunk/echo_service/CMakeLists.txt Thu Dec  9 11:59:18 2010
@@ -0,0 +1,2 @@
+add_subdirectory(server)
+add_subdirectory(client)

Added: incubator/celix/trunk/echo_service/client/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/client/CMakeLists.txt?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/client/CMakeLists.txt (added)
+++ incubator/celix/trunk/echo_service/client/CMakeLists.txt Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,6 @@
+add_library(echo_client SHARED echo_client_activator echo_client)
+include_directories("${PROJECT_SOURCE_DIR}/celix")
+include_directories("../server")
+target_link_libraries(echo_client framework)
+
+bundle(echo_client)

Added: incubator/celix/trunk/echo_service/client/MANIFEST/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/client/MANIFEST/MANIFEST.MF?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/client/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/echo_service/client/MANIFEST/MANIFEST.MF Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,4 @@
+Bundle-SymbolicName: echo_client
+Bundle-Version: 1.0.0
+library: echo_client
+Import-Service: echo_server

Added: incubator/celix/trunk/echo_service/client/echo_client.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/client/echo_client.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/client/echo_client.c (added)
+++ incubator/celix/trunk/echo_service/client/echo_client.c Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,51 @@
+/*
+ * echo_client.c
+ *
+ *  Created on: Sep 21, 2010
+ *      Author: alexanderb
+ */
+#include <stdlib.h>
+
+#include "service_tracker.h"
+
+#include "echo_client_private.h"
+#include "echo_server.h"
+
+void * trk_send(void * handle) {
+       ECHO_CLIENT client = (ECHO_CLIENT) handle;
+       while (client->running) {
+               ECHO_SERVICE service = (ECHO_SERVICE) 
tracker_getService(client->tracker);
+               if (service != NULL) {
+                       service->echo(service->server, "hi");
+               }
+               sleep(1);
+       }
+       pthread_exit(NULL);
+}
+
+ECHO_CLIENT echoClient_create(SERVICE_TRACKER echoServiceTracker) {
+       ECHO_CLIENT client = malloc(sizeof(*client));
+
+       client->tracker = echoServiceTracker;
+       client->running = false;
+
+       return client;
+}
+
+void echoClient_start(ECHO_CLIENT client) {
+       client->running = true;
+       pthread_create(&client->sender, NULL, trk_send, client);
+}
+
+void echoClient_stop(ECHO_CLIENT client) {
+       client->running = false;
+       pthread_join(client->sender, NULL);
+}
+
+void echoClient_destroy(ECHO_CLIENT client) {
+       client->tracker = NULL;
+       client->sender = NULL;
+       free(client);
+       client = NULL;
+}
+

Added: incubator/celix/trunk/echo_service/client/echo_client_activator.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/client/echo_client_activator.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/client/echo_client_activator.c (added)
+++ incubator/celix/trunk/echo_service/client/echo_client_activator.c Thu Dec  
9 11:59:18 2010
@@ -0,0 +1,52 @@
+/*
+ * echo_server_activator.c
+ *
+ *  Created on: Sep 21, 2010
+ *      Author: alexanderb
+ */
+#include <stdlib.h>
+
+#include "bundle_activator.h"
+#include "bundle_context.h"
+#include "service_tracker.h"
+
+#include "echo_server.h"
+#include "echo_client_private.h"
+
+struct echoActivator {
+       ECHO_CLIENT client;
+       SERVICE_TRACKER tracker;
+};
+
+void * bundleActivator_create() {
+       struct echoActivator * act = malloc(sizeof(*act));
+       act->client = NULL;
+       act->tracker = NULL;
+
+       return act;
+}
+
+void bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+       struct echoActivator * act = (struct echoActivator *) userData;
+
+       SERVICE_TRACKER tracker = tracker_create(context, ECHO_SERVICE_NAME, 
NULL);
+       act->tracker = tracker;
+
+       ECHO_CLIENT client = echoClient_create(tracker);
+       act->client = client;
+
+       echoClient_start(act->client);
+       tracker_open(act->tracker);
+}
+
+void bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+       struct echoActivator * act = (struct echoActivator *) userData;
+       tracker_close(act->tracker);
+       echoClient_stop(act->client);
+}
+
+void bundleActivator_destroy(void * userData) {
+       struct echoActivator * act = (struct echoActivator *) userData;
+       echoClient_destroy(act->client);
+       tracker_destroy(act->tracker);
+}

Added: incubator/celix/trunk/echo_service/client/echo_client_private.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/client/echo_client_private.h?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/client/echo_client_private.h (added)
+++ incubator/celix/trunk/echo_service/client/echo_client_private.h Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,33 @@
+/*
+ * echo_client_private.h
+ *
+ *  Created on: Sep 21, 2010
+ *      Author: alexanderb
+ */
+
+#ifndef ECHO_CLIENT_PRIVATE_H_
+#define ECHO_CLIENT_PRIVATE_H_
+
+#include <stdbool.h>
+#include <pthread.h>
+
+#include "headers.h"
+
+struct echoClient {
+       SERVICE_TRACKER tracker;
+       bool running;
+
+       pthread_t sender;
+};
+
+typedef struct echoClient * ECHO_CLIENT;
+
+ECHO_CLIENT echoClient_create(SERVICE_TRACKER context);
+
+void echoClient_start(ECHO_CLIENT client);
+void echoClient_stop(ECHO_CLIENT client);
+
+void echoClient_destroy(ECHO_CLIENT client);
+
+
+#endif /* ECHO_CLIENT_PRIVATE_H_ */

Added: incubator/celix/trunk/echo_service/server/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/server/CMakeLists.txt?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/server/CMakeLists.txt (added)
+++ incubator/celix/trunk/echo_service/server/CMakeLists.txt Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,5 @@
+add_library(echo_server SHARED echo_server_activator echo_server)
+include_directories("${PROJECT_SOURCE_DIR}/celix")
+target_link_libraries(echo_server framework)
+
+bundle(echo_server)

Added: incubator/celix/trunk/echo_service/server/MANIFEST/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/server/MANIFEST/MANIFEST.MF?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/server/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/echo_service/server/MANIFEST/MANIFEST.MF Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: echo_server
+Bundle-Version: 1.0.0
+library: echo_server
+Export-Service: echo_server
+Import-Service: echo_server

Added: incubator/celix/trunk/echo_service/server/echo_server.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/server/echo_server.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/server/echo_server.c (added)
+++ incubator/celix/trunk/echo_service/server/echo_server.c Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,30 @@
+/*
+ * echo_server.c
+ *
+ *  Created on: Sep 21, 2010
+ *      Author: alexanderb
+ */
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "echo_server_private.h"
+
+struct echoServer {
+       char * name;
+};
+
+ECHO_SERVER echoServer_create() {
+       ECHO_SERVER server = malloc(sizeof(*server));
+       server->name = "MacBook Pro";
+       return server;
+}
+
+void echoServer_echo(ECHO_SERVER server, char * text) {
+       printf("Server %s says %s\n", server->name, text);
+}
+
+void echoServer_destroy(ECHO_SERVER server) {
+       server->name = NULL;
+       free(server);
+       server = NULL;
+}

Added: incubator/celix/trunk/echo_service/server/echo_server.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/server/echo_server.h?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/server/echo_server.h (added)
+++ incubator/celix/trunk/echo_service/server/echo_server.h Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,22 @@
+/*
+ * echo_server.h
+ *
+ *  Created on: Sep 21, 2010
+ *      Author: alexanderb
+ */
+
+#ifndef ECHO_SERVER_H_
+#define ECHO_SERVER_H_
+
+#define ECHO_SERVICE_NAME "echo_server"
+
+typedef struct echoServer * ECHO_SERVER;
+
+struct echoService {
+       ECHO_SERVER server;
+       void (*echo)(ECHO_SERVER server, char * text);
+};
+
+typedef struct echoService * ECHO_SERVICE;
+
+#endif /* ECHO_SERVER_H_ */

Added: incubator/celix/trunk/echo_service/server/echo_server_activator.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/server/echo_server_activator.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/server/echo_server_activator.c (added)
+++ incubator/celix/trunk/echo_service/server/echo_server_activator.c Thu Dec  
9 11:59:18 2010
@@ -0,0 +1,55 @@
+/*
+ * echo_server_activator.c
+ *
+ *  Created on: Sep 21, 2010
+ *      Author: alexanderb
+ */
+#include <stdlib.h>
+
+#include "bundle_activator.h"
+#include "bundle_context.h"
+#include "service_registration.h"
+#include "echo_server_private.h"
+
+struct echoActivator {
+       SERVICE_REGISTRATION reg;
+       ECHO_SERVICE es;
+};
+
+void * bundleActivator_create() {
+       struct echoActivator * act = malloc(sizeof(*act));
+       act->reg = NULL;
+       return act;
+}
+
+void bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+       struct echoActivator * act = (struct echoActivator *) userData;
+
+       ECHO_SERVICE es = malloc(sizeof(*es));
+       ECHO_SERVER server = echoServer_create();
+       es->server = server;
+       es->echo = echoServer_echo;
+
+       act->es = es;
+
+       SERVICE_REGISTRATION reg = bundleContext_registerService(context, 
ECHO_SERVICE_NAME, es, NULL);
+       act->reg = reg;
+}
+
+void bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+       struct echoActivator * act = (struct echoActivator *) userData;
+
+       serviceRegistration_unregister(act->reg);
+       act->reg = NULL;
+}
+
+void bundleActivator_destroy(void * userData) {
+       struct echoActivator * act = (struct echoActivator *) userData;
+       act->es->echo = NULL;
+       echoServer_destroy(act->es->server);
+       act->es->server = NULL;
+       free(act->es);
+       act->es = NULL;
+       act->reg = NULL;
+       free(act);
+}

Added: incubator/celix/trunk/echo_service/server/echo_server_private.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/echo_service/server/echo_server_private.h?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/echo_service/server/echo_server_private.h (added)
+++ incubator/celix/trunk/echo_service/server/echo_server_private.h Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,17 @@
+/*
+ * echo_server_private.h
+ *
+ *  Created on: Sep 21, 2010
+ *      Author: alexanderb
+ */
+
+#ifndef ECHO_SERVER_PRIVATE_H_
+#define ECHO_SERVER_PRIVATE_H_
+
+#include "echo_server.h"
+
+ECHO_SERVER echoServer_create();
+void echoServer_echo(ECHO_SERVER server, char * text);
+void echoServer_destroy(ECHO_SERVER server);
+
+#endif /* ECHO_SERVER_PRIVATE_H_ */

Added: incubator/celix/trunk/remote/TestService.java
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/remote/TestService.java?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/remote/TestService.java (added)
+++ incubator/celix/trunk/remote/TestService.java Thu Dec  9 11:59:18 2010
@@ -0,0 +1,5 @@
+package test;
+
+public interface Service {
+       public String doo(String message, int value);
+}
\ No newline at end of file

Added: incubator/celix/trunk/remote/test.service.proto
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/remote/test.service.proto?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/remote/test.service.proto (added)
+++ incubator/celix/trunk/remote/test.service.proto Thu Dec  9 11:59:18 2010
@@ -0,0 +1,8 @@
+service testService {
+  rpc doo (Type) returns (string);
+}
+
+message Type {
+       required string field1 = 1;
+       required string field2 = 2;
+}
\ No newline at end of file

Added: incubator/celix/trunk/remote/test_service.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/remote/test_service.h?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/remote/test_service.h (added)
+++ incubator/celix/trunk/remote/test_service.h Thu Dec  9 11:59:18 2010
@@ -0,0 +1,18 @@
+/*
+ * test_service.h
+ *
+ *  Created on: Sep 24, 2010
+ *      Author: alexanderb
+ */
+
+#ifndef TEST_SERVICE_H_
+#define TEST_SERVICE_H_
+
+typedef struct test_service_handle * TEST_SERVICE_HANDLE;
+
+struct test_service {
+       TEST_SERVICE_HANDLE handle;
+       char * doo(char * message, int value);
+};
+
+#endif /* TEST_SERVICE_H_ */

Added: incubator/celix/trunk/whiteboard/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/CMakeLists.txt?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/CMakeLists.txt (added)
+++ incubator/celix/trunk/whiteboard/CMakeLists.txt Thu Dec  9 11:59:18 2010
@@ -0,0 +1,4 @@
+add_subdirectory(publisherA)
+add_subdirectory(publisherB)
+add_subdirectory(tracker)
+add_subdirectory(tracker_depman)
\ No newline at end of file

Added: incubator/celix/trunk/whiteboard/publisherA/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherA/CMakeLists.txt?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherA/CMakeLists.txt (added)
+++ incubator/celix/trunk/whiteboard/publisherA/CMakeLists.txt Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,7 @@
+add_library(publisherA SHARED activator publisher)
+include_directories("${PROJECT_SOURCE_DIR}/celix")
+include_directories("../publisherService")
+target_link_libraries(publisherA framework)
+
+bundle(publisherA)
+package(publisherA FILES ../publisherService/publisher.h)
\ No newline at end of file

Added: incubator/celix/trunk/whiteboard/publisherA/MANIFEST/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherA/MANIFEST/MANIFEST.MF?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherA/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/whiteboard/publisherA/MANIFEST/MANIFEST.MF Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: publisherA
+Bundle-Version: 1.0.0.test
+library: publisherA
+Export-Service: Publisher
+Import-Service: Publisher

Added: incubator/celix/trunk/whiteboard/publisherA/activator.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherA/activator.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherA/activator.c (added)
+++ incubator/celix/trunk/whiteboard/publisherA/activator.c Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,32 @@
+/*
+ * activator.c
+ *
+ *  Created on: Aug 23, 2010
+ *      Author: alexanderb
+ */
+#include <stdlib.h>
+
+#include "bundle_activator.h"
+#include "bundle_context.h"
+#include "publisher_private.h"
+
+void * bundleActivator_create() {
+       return NULL;
+}
+
+void bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+       PUBLISHER_SERVICE ps = malloc(sizeof(*ps));
+       PUBLISHER pub = malloc(sizeof(*pub));
+       ps->invoke = publisher_invoke;
+       ps->publisher = pub;
+
+       bundleContext_registerService(context, PUBLISHER_NAME, ps, NULL);
+}
+
+void bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+
+}
+
+void bundleActivator_destroy(void * userData) {
+
+}

Added: incubator/celix/trunk/whiteboard/publisherA/publisher.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherA/publisher.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherA/publisher.c (added)
+++ incubator/celix/trunk/whiteboard/publisherA/publisher.c Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,14 @@
+/*
+ * publisher.c
+ *
+ *  Created on: Aug 23, 2010
+ *      Author: alexanderb
+ */
+#include <stdio.h>
+
+#include "publisher_private.h"
+
+void publisher_invoke(PUBLISHER publisher, char * text) {
+       printf("Hello from A %s\n", text);
+}
+

Added: incubator/celix/trunk/whiteboard/publisherB/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherB/CMakeLists.txt?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherB/CMakeLists.txt (added)
+++ incubator/celix/trunk/whiteboard/publisherB/CMakeLists.txt Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,7 @@
+add_library(publisherB SHARED activator publisher)
+include_directories("${PROJECT_SOURCE_DIR}/celix")
+include_directories("../publisherService")
+target_link_libraries(publisherB framework)
+
+bundle(publisherB)
+package(publisherB FILES ../publisherService/publisher.h)
\ No newline at end of file

Added: incubator/celix/trunk/whiteboard/publisherB/MANIFEST/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherB/MANIFEST/MANIFEST.MF?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherB/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/whiteboard/publisherB/MANIFEST/MANIFEST.MF Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: publisherB
+Bundle-Version: 1.0.0.test
+library: publisherB
+Export-Service: Publisher
+Import-Service: Publisher

Added: incubator/celix/trunk/whiteboard/publisherB/activator.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherB/activator.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherB/activator.c (added)
+++ incubator/celix/trunk/whiteboard/publisherB/activator.c Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,32 @@
+/*
+ * activator.c
+ *
+ *  Created on: Aug 23, 2010
+ *      Author: alexanderb
+ */
+#include <stdlib.h>
+
+#include "bundle_activator.h"
+#include "bundle_context.h"
+#include "publisher_private.h"
+
+void * bundleActivator_create() {
+       return NULL;
+}
+
+void bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+       PUBLISHER_SERVICE ps = malloc(sizeof(*ps));
+       PUBLISHER pub = malloc(sizeof(*pub));
+       ps->invoke = publisher_invoke;
+       ps->publisher = pub;
+
+       bundleContext_registerService(context, PUBLISHER_NAME, ps, NULL);
+}
+
+void bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+
+}
+
+void bundleActivator_destroy(void * userData) {
+
+}

Added: incubator/celix/trunk/whiteboard/publisherB/publisher.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherB/publisher.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherB/publisher.c (added)
+++ incubator/celix/trunk/whiteboard/publisherB/publisher.c Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,14 @@
+/*
+ * publisher.c
+ *
+ *  Created on: Aug 23, 2010
+ *      Author: alexanderb
+ */
+#include <stdio.h>
+
+#include "publisher_private.h"
+
+void publisher_invoke(PUBLISHER publisher, char * text) {
+       printf("Hello from B %s\n", text);
+}
+

Added: incubator/celix/trunk/whiteboard/publisherService/publisher.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherService/publisher.h?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherService/publisher.h (added)
+++ incubator/celix/trunk/whiteboard/publisherService/publisher.h Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,23 @@
+/*
+ * publisher.h
+ *
+ *  Created on: Aug 23, 2010
+ *      Author: alexanderb
+ */
+
+#ifndef PUBLISHER_H_
+#define PUBLISHER_H_
+
+#define PUBLISHER_NAME "Publisher"
+
+typedef struct publisher * PUBLISHER;
+
+struct publisherService {
+       PUBLISHER publisher;
+       void (*invoke)(PUBLISHER pub, char * text);
+};
+
+typedef struct publisherService * PUBLISHER_SERVICE;
+
+
+#endif /* PUBLISHER_H_ */

Added: incubator/celix/trunk/whiteboard/publisherService/publisher_private.h
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/publisherService/publisher_private.h?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/publisherService/publisher_private.h 
(added)
+++ incubator/celix/trunk/whiteboard/publisherService/publisher_private.h Thu 
Dec  9 11:59:18 2010
@@ -0,0 +1,19 @@
+/*
+ * publisher_private.h
+ *
+ *  Created on: Aug 23, 2010
+ *      Author: alexanderb
+ */
+
+#ifndef PUBLISHER_PRIVATE_H_
+#define PUBLISHER_PRIVATE_H_
+
+#include "publisher.h"
+
+struct publisher {
+
+};
+
+void publisher_invoke(PUBLISHER publisher, char * text);
+
+#endif /* PUBLISHER_PRIVATE_H_ */

Added: incubator/celix/trunk/whiteboard/tracker/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/tracker/CMakeLists.txt?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/tracker/CMakeLists.txt (added)
+++ incubator/celix/trunk/whiteboard/tracker/CMakeLists.txt Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,6 @@
+add_library(tracker SHARED activator)
+include_directories("${PROJECT_SOURCE_DIR}/celix")
+include_directories("../publisherService")
+target_link_libraries(tracker framework)
+
+bundle(tracker)

Added: incubator/celix/trunk/whiteboard/tracker/MANIFEST/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/tracker/MANIFEST/MANIFEST.MF?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/tracker/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/whiteboard/tracker/MANIFEST/MANIFEST.MF Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,4 @@
+Bundle-SymbolicName: tracker
+Bundle-Version: 1.0.0.test
+library: tracker
+Import-Service: Publisher

Added: incubator/celix/trunk/whiteboard/tracker/activator.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/tracker/activator.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/tracker/activator.c (added)
+++ incubator/celix/trunk/whiteboard/tracker/activator.c Thu Dec  9 11:59:18 
2010
@@ -0,0 +1,94 @@
+/*
+ * activator.c
+ *
+ *  Created on: Aug 23, 2010
+ *      Author: alexanderb
+ */
+#include <stdlib.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <stdbool.h>
+
+#include "bundle_activator.h"
+#include "publisher.h"
+#include "service_tracker.h"
+#include "bundle_context.h"
+
+struct data {
+       BUNDLE_CONTEXT context;
+       SERVICE_TRACKER tracker;
+       ARRAY_LIST publishers;
+       pthread_t sender;
+       bool running;
+};
+
+void * trk_send(void * handle) {
+       struct data * data = (struct data *) handle;
+       while (data->running) {
+               int i;
+               for (i = 0; i < arrayList_size(data->publishers); i++) {
+                       PUBLISHER_SERVICE pub = arrayList_get(data->publishers, 
i);
+                       pub->invoke(pub->publisher, "test");
+               }
+               sleep(1);
+       }
+       pthread_exit(NULL);
+}
+
+void * addingServ(void * handle, SERVICE_REFERENCE ref) {
+       struct data * data = (struct data *) handle;
+       printf("Adding\n");
+       return bundleContext_getService(data->context, ref);
+}
+
+void addedServ(void * handle, SERVICE_REFERENCE ref, void * service) {
+       struct data * data = (struct data *) handle;
+       arrayList_add(data->publishers, service);
+       printf("Added\n");
+}
+
+void modifiedServ(void * handle, SERVICE_REFERENCE ref, void * service) {
+       struct data * data = (struct data *) handle;
+       printf("Modified\n");
+}
+
+void removedServ(void * handle, SERVICE_REFERENCE ref, void * service) {
+       struct data * data = (struct data *) handle;
+       arrayList_removeElement(data->publishers, service);
+       printf("Removed\n");
+}
+
+void * bundleActivator_create() {
+       struct data * data = malloc(sizeof(*data));
+       data->publishers = arrayList_create();
+       return data;
+}
+
+void bundleActivator_start(void * userData, BUNDLE_CONTEXT context) {
+       struct data * data = (struct data *) userData;
+       data->context = context;
+
+       SERVICE_TRACKER_CUSTOMIZER cust = (SERVICE_TRACKER_CUSTOMIZER) 
malloc(sizeof(*cust));
+       cust->handle = data;
+       cust->addedService = addedServ;
+       cust->addingService = addingServ;
+       cust->modifiedService = modifiedServ;
+       cust->removedService = removedServ;
+       SERVICE_TRACKER tracker = tracker_create(context, (char *) 
PUBLISHER_NAME, cust);
+       data->tracker = tracker;
+
+       tracker_open(tracker);
+
+       data->running = true;
+       pthread_create(&data->sender, NULL, trk_send, data);
+}
+
+void bundleActivator_stop(void * userData, BUNDLE_CONTEXT context) {
+       struct data * data = (struct data *) userData;
+       tracker_close(data->tracker);
+       data->running = false;
+}
+
+void bundleActivator_destroy(void * userData) {
+
+}

Added: incubator/celix/trunk/whiteboard/tracker_depman/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/tracker_depman/CMakeLists.txt?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/tracker_depman/CMakeLists.txt (added)
+++ incubator/celix/trunk/whiteboard/tracker_depman/CMakeLists.txt Thu Dec  9 
11:59:18 2010
@@ -0,0 +1,7 @@
+add_library(tracker_depman SHARED dependency_activator)
+include_directories("${PROJECT_SOURCE_DIR}/celix")
+include_directories("${PROJECT_SOURCE_DIR}/dependency_manager")
+include_directories("../publisherService")
+target_link_libraries(tracker_depman framework dependency_manager)
+
+bundle(tracker_depman)

Added: incubator/celix/trunk/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF (added)
+++ incubator/celix/trunk/whiteboard/tracker_depman/MANIFEST/MANIFEST.MF Thu 
Dec  9 11:59:18 2010
@@ -0,0 +1,4 @@
+Bundle-SymbolicName: tracker_depman
+Bundle-Version: 1.0.0.test
+library: tracker_depman
+Import-Service: Publisher

Added: incubator/celix/trunk/whiteboard/tracker_depman/dependency_activator.c
URL: 
http://svn.apache.org/viewvc/incubator/celix/trunk/whiteboard/tracker_depman/dependency_activator.c?rev=1043916&view=auto
==============================================================================
--- incubator/celix/trunk/whiteboard/tracker_depman/dependency_activator.c 
(added)
+++ incubator/celix/trunk/whiteboard/tracker_depman/dependency_activator.c Thu 
Dec  9 11:59:18 2010
@@ -0,0 +1,101 @@
+/*
+ * dependency_activator.c
+ *
+ *  Created on: Aug 23, 2010
+ *      Author: alexanderb
+ */
+#include <stdlib.h>
+#include <stdio.h>
+#include <pthread.h>
+#include <unistd.h>
+#include <stdbool.h>
+
+#include "dependency_activator_base.h"
+#include "service_component_private.h"
+#include "service.h"
+#include "publisher.h"
+
+struct data {
+       SERVICE service;
+       BUNDLE_CONTEXT context;
+       ARRAY_LIST publishers;
+       pthread_t sender;
+       bool running;
+};
+
+void * dp_send(void * handle) {
+       struct data * data = (struct data *) handle;
+       while (data->running) {
+               int i;
+               for (i = 0; i < arrayList_size(data->publishers); i++) {
+                       PUBLISHER_SERVICE pub = (PUBLISHER_SERVICE) 
arrayList_get(data->publishers, i);
+                       pub->invoke(pub->publisher, "test");
+               }
+               sleep(1);
+       }
+       pthread_exit(NULL);
+}
+
+void service_init(void * userData) {
+
+}
+
+void service_start(void * userData) {
+       struct data * data = (struct data *) userData;
+       data->running = true;
+       pthread_create(&data->sender, NULL, dp_send, data);
+}
+
+void service_stop(void * userData) {
+       struct data * data = (struct data *) userData;
+       data->running = false;
+}
+
+void service_destroy(void * userData) {
+
+}
+
+void addedServ(void * handle, SERVICE_REFERENCE ref, void * service) {
+       struct data * data = (struct data *) handle;
+       arrayList_add(data->publishers, service);
+       printf("Service Added\n");
+}
+
+void modifiedServ(void * handle, SERVICE_REFERENCE ref, void * service) {
+       struct data * data = (struct data *) handle;
+       printf("Service Changed\n");
+}
+
+void removedServ(void * handle, SERVICE_REFERENCE ref, void * service) {
+       struct data * data = (struct data *) handle;
+       arrayList_removeElement(data->publishers, service);
+       printf("Service Removed\n");
+}
+
+void * dm_create() {
+       struct data * data = malloc(sizeof(*data));
+       data->publishers = arrayList_create();
+       return data;
+}
+
+void dm_init(void * userData, BUNDLE_CONTEXT context, DEPENDENCY_MANAGER 
manager) {
+       struct data * data = (struct data *) userData;
+       data->context = context;
+
+       SERVICE service = dependencyActivatorBase_createService(manager);
+       serviceComponent_setImplementation(service, data);
+       SERVICE_DEPENDENCY dep = 
dependencyActivatorBase_createServiceDependency(manager);
+       serviceDependency_setRequired(dep, false);
+       serviceDependency_setService(dep, PUBLISHER_NAME, NULL);
+       serviceDependency_setCallbacks(dep, addedServ, modifiedServ, 
removedServ);
+       serviceComponent_addServiceDependency(service, dep);
+
+       data->service = service;
+       dependencyManager_add(manager, service);
+}
+
+void dm_destroy(void * userData, BUNDLE_CONTEXT context, DEPENDENCY_MANAGER 
manager) {
+       struct data * data = (struct data *) userData;
+       dependencyManager_remove(manager, data->service);
+}
+


Reply via email to