You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by ab...@apache.org on 2013/10/01 11:53:22 UTC

svn commit: r1528023 - in /incubator/celix/trunk: examples/whiteboard/tracker/private/src/ examples/whiteboard/tracker_depman/private/src/ log_writer/ log_writer/private/include/ log_writer/private/src/

Author: abroekhuis
Date: Tue Oct  1 09:53:22 2013
New Revision: 1528023

URL: http://svn.apache.org/r1528023
Log:
CELIX-67: Removed Dependency manager usage from the log writer.

Added:
    incubator/celix/trunk/log_writer/private/src/log_writer_activator.c
Removed:
    incubator/celix/trunk/log_writer/private/src/dependency_activator.c
Modified:
    incubator/celix/trunk/examples/whiteboard/tracker/private/src/activator.c
    incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/tracker.c
    incubator/celix/trunk/log_writer/CMakeLists.txt
    incubator/celix/trunk/log_writer/private/include/log_writer.h
    incubator/celix/trunk/log_writer/private/src/log_writer.c

Modified: incubator/celix/trunk/examples/whiteboard/tracker/private/src/activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/tracker/private/src/activator.c?rev=1528023&r1=1528022&r2=1528023&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/tracker/private/src/activator.c (original)
+++ incubator/celix/trunk/examples/whiteboard/tracker/private/src/activator.c Tue Oct  1 09:53:22 2013
@@ -124,11 +124,12 @@ celix_status_t bundleActivator_start(voi
 celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
     celix_status_t status = CELIX_SUCCESS;
     struct data * data = (struct data *) userData;
+    apr_status_t stat;
 
 	printf("Stop\n");
     serviceTracker_close(data->tracker);
     data->running = false;
-    apr_thread_join(APR_SUCCESS, data->sender);
+    apr_thread_join(&stat, data->sender);
 
     return status;
 }

Modified: incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/tracker.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/tracker.c?rev=1528023&r1=1528022&r2=1528023&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/tracker.c (original)
+++ incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/tracker.c Tue Oct  1 09:53:22 2013
@@ -63,9 +63,10 @@ void service_start(void * userData) {
 }
 
 void service_stop(void * userData) {
+	apr_status_t stat;
 	struct data * data = (struct data *) userData;
 	data->running = false;
-	apr_thread_join(APR_SUCCESS, data->sender);
+	apr_thread_join(&stat, data->sender);
 }
 
 void service_destroy(void * userData) {

Modified: incubator/celix/trunk/log_writer/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/log_writer/CMakeLists.txt?rev=1528023&r1=1528022&r2=1528023&view=diff
==============================================================================
--- incubator/celix/trunk/log_writer/CMakeLists.txt (original)
+++ incubator/celix/trunk/log_writer/CMakeLists.txt Tue Oct  1 09:53:22 2013
@@ -15,14 +15,14 @@
 # specific language governing permissions and limitations
 # under the License.
 
-celix_subproject(LOG_WRITER "Option to enable building the Log Writer bundle" "OFF" DEPS FRAMEWORK LOG_SERVICE DEPENDENCY_MANAGER)
+celix_subproject(LOG_WRITER "Option to enable building the Log Writer bundle" "OFF" DEPS FRAMEWORK LOG_SERVICE)
 if (LOG_WRITER)
 
 	SET_HEADER(BUNDLE_SYMBOLICNAME "apache_celix_log_writer")
 	SET_HEADERS("Bundle-Name: Apache Celix Log Writer")
 
     bundle(log_writer SOURCES 
-    	private/src/dependency_activator 
+    	private/src/log_writer_activator 
     	private/src/log_writer
     
         private/include/log_writer.h    
@@ -31,8 +31,7 @@ if (LOG_WRITER)
     install_bundle(log_writer)
     
 	include_directories("private/include")
-    include_directories("${PROJECT_SOURCE_DIR}/dependency_manager/public/include")
     include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
     include_directories("${PROJECT_SOURCE_DIR}/log_service/public/include")
-    target_link_libraries(log_writer celix_framework dependency_manager)
+    target_link_libraries(log_writer celix_framework)
 endif (LOG_WRITER)
\ No newline at end of file

Modified: incubator/celix/trunk/log_writer/private/include/log_writer.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/log_writer/private/include/log_writer.h?rev=1528023&r1=1528022&r2=1528023&view=diff
==============================================================================
--- incubator/celix/trunk/log_writer/private/include/log_writer.h (original)
+++ incubator/celix/trunk/log_writer/private/include/log_writer.h Tue Oct  1 09:53:22 2013
@@ -27,20 +27,27 @@
 #ifndef LOG_WRITER_H_
 #define LOG_WRITER_H_
 
-#include "service_component.h"
-#include "service_dependency.h"
 #include "log_reader_service.h"
 
+#include "service_tracker.h"
+
 struct log_writer {
     log_reader_service_pt logReader;
-    service_pt service;
-    service_dependency_pt dep;
     log_listener_pt logListener;
+    apr_pool_t *pool;
+    bundle_context_pt context;
+    service_tracker_pt tracker;
 };
 
 typedef struct log_writer *log_writer_pt;
 
-celix_status_t logWriter_create(apr_pool_t *pool, log_writer_pt *writer);
-
+celix_status_t logWriter_create(apr_pool_t *pool, bundle_context_pt context, log_writer_pt *writer);
+celix_status_t logWriter_start(log_writer_pt writer);
+celix_status_t logWriter_stop(log_writer_pt writer);
+
+celix_status_t logWriter_addingServ(void * handle, service_reference_pt ref, void **service);
+celix_status_t logWriter_addedServ(void * handle, service_reference_pt ref, void * service);
+celix_status_t logWriter_modifiedServ(void * handle, service_reference_pt ref, void * service);
+celix_status_t logWriter_removedServ(void * handle, service_reference_pt ref, void * service);
 
 #endif /* LOG_WRITER_H_ */

Modified: incubator/celix/trunk/log_writer/private/src/log_writer.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/log_writer/private/src/log_writer.c?rev=1528023&r1=1528022&r2=1528023&view=diff
==============================================================================
--- incubator/celix/trunk/log_writer/private/src/log_writer.c (original)
+++ incubator/celix/trunk/log_writer/private/src/log_writer.c Tue Oct  1 09:53:22 2013
@@ -29,13 +29,12 @@
 #include "celix_errno.h"
 #include "celixbool.h"
 
-#include "service.h"
 #include "log_writer.h"
 #include "log_listener.h"
 #include "module.h"
 #include "bundle.h"
 
-celix_status_t logWriter_create(apr_pool_t *pool, log_writer_pt *writer) {
+celix_status_t logWriter_create(apr_pool_t *pool, bundle_context_pt context, log_writer_pt *writer) {
     celix_status_t status = CELIX_SUCCESS;
 
     apr_pool_t *mypool;
@@ -46,30 +45,65 @@ celix_status_t logWriter_create(apr_pool
     (*writer)->logListener->handle = *writer;
     (*writer)->logListener->logged = logListener_logged;
     (*writer)->logReader = NULL;
-    (*writer)->service = NULL;
+    (*writer)->pool = mypool;
+    (*writer)->context = context;
+    (*writer)->tracker = NULL;
 
     return status;
 }
 
-void service_init(void * userData) {
+celix_status_t logWriter_start(log_writer_pt writer) {
+	celix_status_t status = CELIX_SUCCESS;
+
+	service_tracker_customizer_pt cust = NULL;
+	service_tracker_pt tracker = NULL;
+
+	status = serviceTrackerCustomizer_create(writer->pool, writer, logWriter_addingServ, logWriter_addedServ, logWriter_modifiedServ, logWriter_removedServ, &cust);
+	if (status == CELIX_SUCCESS) {
+		status = serviceTracker_create(writer->pool, writer->context, (char *) LOG_READER_SERVICE_NAME, cust, &tracker);
+		if (status == CELIX_SUCCESS) {
+			writer->tracker = tracker;
+			status = serviceTracker_open(tracker);
+		}
+	}
+
+	return status;
 }
 
-void service_start(void * userData) {
-    log_writer_pt writer = (log_writer_pt) userData;
-    if (writer->logReader != NULL) {
-    	writer->logReader->addLogListener(writer->logReader->reader, writer->logListener);
-    }
+celix_status_t logWriter_stop(log_writer_pt writer) {
+	return serviceTracker_close(writer->tracker);
 }
 
-void service_stop(void * userData) {
-    log_writer_pt writer = (log_writer_pt) userData;
+celix_status_t logWriter_addingServ(void * handle, service_reference_pt ref, void **service) {
+	log_writer_pt writer = (log_writer_pt) handle;
+	bundleContext_getService(writer->context, ref, service);
+	return CELIX_SUCCESS;
+}
 
-    if (writer->logReader != NULL) {
-    	writer->logReader->removeLogListener(writer->logReader->reader, writer->logListener);
-    }
+celix_status_t logWriter_addedServ(void * handle, service_reference_pt ref, void * service) {
+	log_writer_pt writer = (log_writer_pt) handle;
+
+	// Add this writer to each log reader service found
+	if (service != NULL) {
+		((log_reader_service_pt) service)->addLogListener(((log_reader_service_pt) service)->reader, writer->logListener);
+	}
+
+	return CELIX_SUCCESS;
 }
 
-void service_destroy(void * userData) {
+celix_status_t logWriter_modifiedServ(void * handle, service_reference_pt ref, void * service) {
+	log_writer_pt writer = (log_writer_pt) handle;
+	return CELIX_SUCCESS;
+}
+
+celix_status_t logWriter_removedServ(void * handle, service_reference_pt ref, void * service) {
+	log_writer_pt writer = (log_writer_pt) handle;
+
+	if (service != NULL) {
+		((log_reader_service_pt) service)->removeLogListener(((log_reader_service_pt) service)->reader, writer->logListener);
+	}
+
+	return CELIX_SUCCESS;
 }
 
 celix_status_t logListener_logged(log_listener_pt listener, log_entry_pt entry) {

Added: incubator/celix/trunk/log_writer/private/src/log_writer_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/log_writer/private/src/log_writer_activator.c?rev=1528023&view=auto
==============================================================================
--- incubator/celix/trunk/log_writer/private/src/log_writer_activator.c (added)
+++ incubator/celix/trunk/log_writer/private/src/log_writer_activator.c Tue Oct  1 09:53:22 2013
@@ -0,0 +1,56 @@
+/**
+ *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.
+ */
+/*
+ * activator.c
+ *
+ *  \date       Oct 1, 2013
+ *  \author     <a href="mailto:celix-dev@incubator.apache.org">Apache Celix Project Team</a>
+ *  \copyright  Apache License, Version 2.0
+ */
+
+#include "log_writer.h"
+
+#include "bundle_activator.h"
+
+celix_status_t bundleActivator_create(bundle_context_pt context, void **userData) {
+	apr_pool_t *pool;
+	log_writer_pt writer = NULL;
+
+	bundleContext_getMemoryPool(context, &pool);
+
+	logWriter_create(pool, context, &writer);
+
+	*userData = writer;
+
+	return CELIX_SUCCESS;
+}
+
+celix_status_t bundleActivator_start(void * userData, bundle_context_pt context) {
+	logWriter_start(userData);
+	return CELIX_SUCCESS;
+}
+
+celix_status_t bundleActivator_stop(void * userData, bundle_context_pt context) {
+	logWriter_stop(userData);
+	return CELIX_SUCCESS;
+}
+
+celix_status_t bundleActivator_destroy(void * userData, bundle_context_pt context) {
+    return CELIX_SUCCESS;
+}