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 2012/11/27 15:17:33 UTC
svn commit: r1414201 - in /incubator/celix/trunk:
examples/echo_service/client/private/include/
examples/echo_service/client/private/src/ examples/mongoose/
examples/mongoose/private/src/
examples/osgi-in-action/chapter04-correct-listener/private/src/ ...
Author: abroekhuis
Date: Tue Nov 27 14:17:30 2012
New Revision: 1414201
URL: http://svn.apache.org/viewvc?rev=1414201&view=rev
Log:
CELIX-42: Updated the examples to compile with Visual Studio
Modified:
incubator/celix/trunk/examples/echo_service/client/private/include/echo_client_private.h
incubator/celix/trunk/examples/echo_service/client/private/src/echo_client.c
incubator/celix/trunk/examples/echo_service/client/private/src/echo_client_activator.c
incubator/celix/trunk/examples/mongoose/CMakeLists.txt
incubator/celix/trunk/examples/mongoose/private/src/activator.c
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/private/src/listener_example.c
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/CMakeLists.txt
incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/private/src/activator.c
incubator/celix/trunk/examples/whiteboard/publisherA/private/src/activator.c
incubator/celix/trunk/examples/whiteboard/publisherB/private/src/activator.c
incubator/celix/trunk/examples/whiteboard/publisherService/private/include/publisher_private.h
incubator/celix/trunk/examples/whiteboard/tracker/private/src/activator.c
incubator/celix/trunk/examples/whiteboard/tracker_depman/private/include/tracker.h
incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/dependency_activator.c
incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/tracker.c
incubator/celix/trunk/framework/public/include/celix_errno.h
Modified: incubator/celix/trunk/examples/echo_service/client/private/include/echo_client_private.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/echo_service/client/private/include/echo_client_private.h?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/echo_service/client/private/include/echo_client_private.h (original)
+++ incubator/celix/trunk/examples/echo_service/client/private/include/echo_client_private.h Tue Nov 27 14:17:30 2012
@@ -27,19 +27,19 @@
#ifndef ECHO_CLIENT_PRIVATE_H_
#define ECHO_CLIENT_PRIVATE_H_
-#include <stdbool.h>
-#include <pthread.h>
+#include <celixbool.h>
struct echoClient {
service_tracker_t tracker;
bool running;
+ apr_pool_t *pool;
- pthread_t sender;
+ apr_thread_t *sender;
};
typedef struct echoClient * ECHO_CLIENT;
-ECHO_CLIENT echoClient_create(service_tracker_t context);
+ECHO_CLIENT echoClient_create(service_tracker_t context, apr_pool_t *pool);
void echoClient_start(ECHO_CLIENT client);
void echoClient_stop(ECHO_CLIENT client);
Modified: incubator/celix/trunk/examples/echo_service/client/private/src/echo_client.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/echo_service/client/private/src/echo_client.c?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/echo_service/client/private/src/echo_client.c (original)
+++ incubator/celix/trunk/examples/echo_service/client/private/src/echo_client.c Tue Nov 27 14:17:30 2012
@@ -24,43 +24,43 @@
* \copyright Apache License, Version 2.0
*/
#include <stdlib.h>
-#include <unistd.h>
#include "service_tracker.h"
#include "echo_client_private.h"
#include "echo_server.h"
-void * trk_send(void * handle) {
+static void *APR_THREAD_FUNC trk_send(apr_thread_t *thd, void *handle) {
ECHO_CLIENT client = (ECHO_CLIENT) handle;
while (client->running) {
ECHO_SERVICE service = (ECHO_SERVICE) serviceTracker_getService(client->tracker);
if (service != NULL) {
service->echo(service->server, "hi");
}
- sleep(1);
+ apr_sleep(1);
}
- pthread_exit(NULL);
+ apr_thread_exit(thd, APR_SUCCESS);
return NULL;
}
-ECHO_CLIENT echoClient_create(service_tracker_t echoServiceTracker) {
+ECHO_CLIENT echoClient_create(service_tracker_t echoServiceTracker, apr_pool_t *pool) {
ECHO_CLIENT client = malloc(sizeof(*client));
client->tracker = echoServiceTracker;
client->running = false;
+ client->pool = pool;
return client;
}
void echoClient_start(ECHO_CLIENT client) {
client->running = true;
- pthread_create(&client->sender, NULL, trk_send, client);
+ apr_thread_create(&client->sender, NULL, trk_send, client, client->pool);
}
void echoClient_stop(ECHO_CLIENT client) {
client->running = false;
- pthread_join(client->sender, NULL);
+ apr_thread_join(APR_SUCCESS, client->sender);
}
void echoClient_destroy(ECHO_CLIENT client) {
Modified: incubator/celix/trunk/examples/echo_service/client/private/src/echo_client_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/echo_service/client/private/src/echo_client_activator.c?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/echo_service/client/private/src/echo_client_activator.c (original)
+++ incubator/celix/trunk/examples/echo_service/client/private/src/echo_client_activator.c Tue Nov 27 14:17:30 2012
@@ -52,12 +52,13 @@ celix_status_t bundleActivator_start(voi
apr_pool_t *pool = NULL;
service_tracker_t tracker = NULL;
+ ECHO_CLIENT client = NULL;
bundleContext_getMemoryPool(context, &pool);
serviceTracker_create(pool, context, ECHO_SERVICE_NAME, NULL, &tracker);
act->tracker = tracker;
- ECHO_CLIENT client = echoClient_create(tracker);
+ client = echoClient_create(tracker, pool);
act->client = client;
echoClient_start(act->client);
Modified: incubator/celix/trunk/examples/mongoose/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/mongoose/CMakeLists.txt?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/mongoose/CMakeLists.txt (original)
+++ incubator/celix/trunk/examples/mongoose/CMakeLists.txt Tue Nov 27 14:17:30 2012
@@ -21,6 +21,6 @@ SET_TARGET_PROPERTIES(mongoose PROPERTIE
include_directories("private/include")
include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
bundle(celix.mongoose SOURCES private/src/activator DIRECTORIES root)
-target_link_libraries(celix.mongoose celix_framework mongoose)
+target_link_libraries(celix.mongoose celix_framework mongoose wsock32)
Modified: incubator/celix/trunk/examples/mongoose/private/src/activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/mongoose/private/src/activator.c?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/mongoose/private/src/activator.c (original)
+++ incubator/celix/trunk/examples/mongoose/private/src/activator.c Tue Nov 27 14:17:30 2012
@@ -52,14 +52,14 @@ celix_status_t bundleActivator_start(voi
apr_pool_t *pool;
celix_status_t status = bundleContext_getMemoryPool(context, &pool);
if (status == CELIX_SUCCESS) {
- char *entry = NULL;
- bundle_getEntry(bundle, "root", pool, &entry);
-
- const char *options[] = {
+ char *entry = NULL;
+ const char *options[] = {
"document_root", entry,
"listening_ports", "8081",
NULL
};
+ bundle_getEntry(bundle, "root", pool, &entry);
+
data->ctx = mg_start(NULL, options);
printf("Mongoose started on: %s\n", mg_get_option(data->ctx, "listening_ports"));
Modified: incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/private/src/listener_example.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/private/src/listener_example.c?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/private/src/listener_example.c (original)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-listener/private/src/listener_example.c Tue Nov 27 14:17:30 2012
@@ -25,7 +25,6 @@
*/
#include <stdlib.h>
#include <stdio.h>
-#include <unistd.h>
#include <apr_general.h>
#include "bundle_activator.h"
@@ -89,6 +88,7 @@ celix_status_t bundleActivator_start(voi
status = CELIX_ENOMEM;
} else {
char filter[30];
+ ARRAY_LIST logServices = NULL;
sprintf(filter, "(objectClass=%s)", LOG_SERVICE_NAME);
listener->handle = activator;
@@ -98,7 +98,6 @@ celix_status_t bundleActivator_start(voi
activator->listener = listener;
}
- ARRAY_LIST logServices = NULL;
status = bundleContext_getServiceReferences(context, NULL, filter, &logServices);
if (status == CELIX_SUCCESS) {
int i;
@@ -184,7 +183,7 @@ static void *APR_THREAD_FUNC listenerExa
} else {
listenerExample_alternativeLog(activator, "No LogService available. Printing to standard out.");
}
- sleep(5);
+ apr_sleep(5);
}
return NULL;
Modified: incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/CMakeLists.txt
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/CMakeLists.txt?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/CMakeLists.txt (original)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/CMakeLists.txt Tue Nov 27 14:17:30 2012
@@ -18,4 +18,4 @@
bundle(chapter04-correct-lookup SOURCES private/src/activator)
include_directories("${PROJECT_SOURCE_DIR}/utils/public/include")
include_directories("${PROJECT_SOURCE_DIR}/log_service/public/include")
-target_link_libraries(chapter04-correct-lookup celix_framework pthread)
+target_link_libraries(chapter04-correct-lookup celix_framework)
Modified: incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/private/src/activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/private/src/activator.c?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/private/src/activator.c (original)
+++ incubator/celix/trunk/examples/osgi-in-action/chapter04-correct-lookup/private/src/activator.c Tue Nov 27 14:17:30 2012
@@ -26,11 +26,9 @@
#include <stdlib.h>
#include <stdio.h>
#include <apr_general.h>
-#include <unistd.h>
#include "bundle_activator.h"
#include "bundle_context.h"
-#include "pthread.h"
#include "log_service.h"
#include "bundle.h"
@@ -44,7 +42,7 @@ struct threadData {
typedef struct threadData *THREAD_DATA;
-static pthread_t m_logTestThread;
+static apr_thread_t *m_logTestThread;
//*******************************************************************************
@@ -91,12 +89,14 @@ celix_status_t bundleActivator_destroy(v
// The rest of this is just support code, not meant to show any particular best practices
//------------------------------------------------------------------------------------------
-// Test LogService by periodically sending a message
-void *LogServiceTest (void *argument){
+// Test LogService by periodically sending a message
+void *APR_THREAD_FUNC LogServiceTest(apr_thread_t *thd, void *argument) {
celix_status_t status = CELIX_SUCCESS;
THREAD_DATA data = (THREAD_DATA) argument;
bundle_context_t m_context = ((THREAD_DATA) argument)->m_context;
- while (pthread_self() == m_logTestThread) {
+ apr_os_thread_t *logThread = NULL;
+ apr_os_thread_get(&logThread, m_logTestThread);
+ while (apr_os_thread_current() == logThread) {
SERVICE_REFERENCE logServiceRef = NULL;
// lookup the current "best" LogService each time, just before we need to use it
status = bundleContext_getServiceReference(m_context, (char *) LOG_SERVICE_NAME, &logServiceRef);
@@ -121,22 +121,25 @@ void *LogServiceTest (void *argument){
}
void startTestThread(THREAD_DATA data) {
+ apr_pool_t *pool;
+ int rc;
// start separate worker thread to run the actual tests, managed by the bundle lifecycle
+ bundleContext_getMemoryPool(data->m_context, &pool);
data->threadId++;
- int rc = pthread_create(&m_logTestThread, NULL, LogServiceTest, data);
+ rc = apr_thread_create(&m_logTestThread, NULL, LogServiceTest, data, pool);
}
void stopTestThread() {
// thread should cooperatively shutdown on the next iteration, because field is now null
- pthread_t testThread = m_logTestThread;
- pthread_cancel(testThread);
- pthread_join(testThread, NULL);
+ apr_thread_t *testThread = m_logTestThread;
+ // pthread_cancel(testThread);
+ apr_thread_join(APR_SUCCESS, testThread);
m_logTestThread = 0;
}
void pauseTestThread() {
// sleep for a bit
- sleep(5);
+ apr_sleep(5);
}
void alternativeLog(char *message, THREAD_DATA data) {
Modified: incubator/celix/trunk/examples/whiteboard/publisherA/private/src/activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/publisherA/private/src/activator.c?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/publisherA/private/src/activator.c (original)
+++ incubator/celix/trunk/examples/whiteboard/publisherA/private/src/activator.c Tue Nov 27 14:17:30 2012
@@ -54,6 +54,7 @@ celix_status_t bundleActivator_start(voi
apr_pool_t *pool;
status = bundleContext_getMemoryPool(context, &pool);
if (status == CELIX_SUCCESS) {
+ PROPERTIES props = NULL;
struct activatorData * data = (struct activatorData *) userData;
data->ps = apr_pcalloc(pool, sizeof(*(data->ps)));
@@ -62,7 +63,7 @@ celix_status_t bundleActivator_start(voi
data->ps->publisher = data->pub;
data->reg = NULL;
- PROPERTIES props = properties_create();
+ props = properties_create();
properties_set(props, "id", "A");
status = bundleContext_registerService(context, PUBLISHER_NAME, data->ps, props, &data->reg);
Modified: incubator/celix/trunk/examples/whiteboard/publisherB/private/src/activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/publisherB/private/src/activator.c?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/publisherB/private/src/activator.c (original)
+++ incubator/celix/trunk/examples/whiteboard/publisherB/private/src/activator.c Tue Nov 27 14:17:30 2012
@@ -53,14 +53,15 @@ celix_status_t bundleActivator_start(voi
apr_pool_t *pool;
status = bundleContext_getMemoryPool(context, &pool);
if (status == CELIX_SUCCESS) {
+ PROPERTIES props = properties_create();
+
struct activatorData * data = (struct activatorData *) userData;
data->ps = apr_pcalloc(pool, sizeof(*(data->ps)));
data->pub = apr_pcalloc(pool, sizeof(*(data->pub)));
data->ps->invoke = publisher_invoke;
data->ps->publisher = data->pub;
data->reg = NULL;
-
- PROPERTIES props = properties_create();
+
properties_set(props, "id", "B");
bundleContext_registerService(context, PUBLISHER_NAME, data->ps, props, &data->reg);
Modified: incubator/celix/trunk/examples/whiteboard/publisherService/private/include/publisher_private.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/publisherService/private/include/publisher_private.h?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/publisherService/private/include/publisher_private.h (original)
+++ incubator/celix/trunk/examples/whiteboard/publisherService/private/include/publisher_private.h Tue Nov 27 14:17:30 2012
@@ -30,7 +30,7 @@
#include "publisher.h"
struct publisher {
-
+ void *data;
};
void publisher_invoke(PUBLISHER publisher, char * text);
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=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/tracker/private/src/activator.c (original)
+++ incubator/celix/trunk/examples/whiteboard/tracker/private/src/activator.c Tue Nov 27 14:17:30 2012
@@ -24,8 +24,6 @@
* \copyright Apache License, Version 2.0
*/
#include <stdlib.h>
-#include <pthread.h>
-#include <unistd.h>
#include "celixbool.h"
#include "bundle_activator.h"
@@ -37,11 +35,11 @@ struct data {
bundle_context_t context;
service_tracker_t tracker;
ARRAY_LIST publishers;
- pthread_t sender;
+ apr_thread_t *sender;
bool running;
};
-void * trk_send(void * handle) {
+static void *APR_THREAD_FUNC trk_send(apr_thread_t *thd, void *handle) {
struct data * data = (struct data *) handle;
while (data->running) {
int i;
@@ -49,9 +47,9 @@ void * trk_send(void * handle) {
PUBLISHER_SERVICE pub = arrayList_get(data->publishers, i);
pub->invoke(pub->publisher, "test");
}
- sleep(1);
+ apr_sleep(1);
}
- pthread_exit(NULL);
+ apr_thread_exit(thd, APR_SUCCESS);
return NULL;
}
@@ -103,25 +101,20 @@ celix_status_t bundleActivator_start(voi
status = bundleContext_getMemoryPool(context, &pool);
if (status == CELIX_SUCCESS) {
struct data * data = (struct data *) userData;
- data->context = context;
+ service_tracker_customizer_t cust = NULL;
+ service_tracker_t tracker = NULL;
+
+ data->context = context;
-// service_tracker_customizer_t cust = (service_tracker_customizer_t) apr_palloc(pool, sizeof(*cust));
-// cust->handle = data;
-// cust->addedService = addedServ;
-// cust->addingService = addingServ;
-// cust->modifiedService = modifiedServ;
-// cust->removedService = removedServ;
- service_tracker_customizer_t cust = NULL;
serviceTrackerCustomizer_create(pool, data, addingServ, addedServ, modifiedServ, removedServ, &cust);
-
- service_tracker_t tracker = NULL;
serviceTracker_create(pool, context, (char *) PUBLISHER_NAME, cust, &tracker);
+
data->tracker = tracker;
serviceTracker_open(tracker);
data->running = true;
- pthread_create(&data->sender, NULL, trk_send, data);
+ apr_thread_create(&data->sender, NULL, trk_send, data, pool);
} else {
status = CELIX_START_ERROR;
}
@@ -130,12 +123,12 @@ celix_status_t bundleActivator_start(voi
celix_status_t bundleActivator_stop(void * userData, bundle_context_t context) {
celix_status_t status = CELIX_SUCCESS;
- printf("Stop\n");
-
struct data * data = (struct data *) userData;
+
+ printf("Stop\n");
serviceTracker_close(data->tracker);
data->running = false;
- pthread_join(data->sender, NULL);
+ apr_thread_join(APR_SUCCESS, data->sender);
return status;
}
Modified: incubator/celix/trunk/examples/whiteboard/tracker_depman/private/include/tracker.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/tracker_depman/private/include/tracker.h?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/tracker_depman/private/include/tracker.h (original)
+++ incubator/celix/trunk/examples/whiteboard/tracker_depman/private/include/tracker.h Tue Nov 27 14:17:30 2012
@@ -34,7 +34,7 @@ struct data {
SERVICE service;
bundle_context_t context;
ARRAY_LIST publishers;
- pthread_t sender;
+ apr_thread_t *sender;
bool running;
log_service_t logger;
};
Modified: incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/dependency_activator.c
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/dependency_activator.c?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/dependency_activator.c (original)
+++ incubator/celix/trunk/examples/whiteboard/tracker_depman/private/src/dependency_activator.c Tue Nov 27 14:17:30 2012
@@ -25,8 +25,6 @@
*/
#include <stdlib.h>
#include <stdio.h>
-#include <pthread.h>
-#include <unistd.h>
#include "celixbool.h"
#include "dependency_activator_base.h"
@@ -52,18 +50,22 @@ void * dm_create(bundle_context_t contex
void dm_init(void * userData, bundle_context_t context, DEPENDENCY_MANAGER manager) {
struct data * data = (struct data *) userData;
+ SERVICE service = NULL;
+ SERVICE_DEPENDENCY dep = NULL;
+ SERVICE_DEPENDENCY dep2 = NULL;
+
data->context = context;
- SERVICE service = dependencyActivatorBase_createService(manager);
+ service = dependencyActivatorBase_createService(manager);
serviceComponent_setImplementation(service, data);
- SERVICE_DEPENDENCY dep = dependencyActivatorBase_createServiceDependency(manager);
+ dep = dependencyActivatorBase_createServiceDependency(manager);
serviceDependency_setRequired(dep, false);
serviceDependency_setService(dep, PUBLISHER_NAME, "(|(id=A)(id=B))");
serviceDependency_setCallbacks(dep, tracker_addedServ, tracker_modifiedServ, tracker_removedServ);
serviceComponent_addServiceDependency(service, dep);
- SERVICE_DEPENDENCY dep2 = dependencyActivatorBase_createServiceDependency(manager);
+ dep2 = dependencyActivatorBase_createServiceDependency(manager);
serviceDependency_setRequired(dep2, false);
serviceDependency_setService(dep2, (char *) LOG_SERVICE_NAME, NULL);
serviceDependency_setCallbacks(dep2, tracker_addLog, tracker_modifiedLog, tracker_removeLog);
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=1414201&r1=1414200&r2=1414201&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 Nov 27 14:17:30 2012
@@ -25,8 +25,6 @@
*/
#include <stdlib.h>
#include <stdio.h>
-#include <pthread.h>
-#include <unistd.h>
#include "celixbool.h"
#include "service.h"
@@ -34,7 +32,7 @@
#include "tracker.h"
#include "log_service.h"
-void * dp_send(void * handle) {
+static void *APR_THREAD_FUNC dp_send(apr_thread_t *thd, void *handle) {
struct data * data = (struct data *) handle;
while (data->running) {
int i;
@@ -45,9 +43,9 @@ void * dp_send(void * handle) {
data->logger->log(data->logger->logger, LOG_INFO, "Sending message to publisher");
}
}
- sleep(1);
+ apr_sleep(1);
}
- pthread_exit(NULL);
+ apr_thread_exit(thd, APR_SUCCESS);
return NULL;
}
@@ -57,14 +55,17 @@ void service_init(void * userData) {
void service_start(void * userData) {
struct data * data = (struct data *) userData;
+ apr_pool_t *pool = NULL;
+
data->running = true;
- pthread_create(&data->sender, NULL, dp_send, data);
+ bundleContext_getMemoryPool(data->context, &pool);
+ apr_thread_create(&data->sender, NULL, dp_send, data, pool);
}
void service_stop(void * userData) {
struct data * data = (struct data *) userData;
data->running = false;
- pthread_join(data->sender, NULL);
+ apr_thread_join(APR_SUCCESS, data->sender);
}
void service_destroy(void * userData) {
Modified: incubator/celix/trunk/framework/public/include/celix_errno.h
URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/public/include/celix_errno.h?rev=1414201&r1=1414200&r2=1414201&view=diff
==============================================================================
--- incubator/celix/trunk/framework/public/include/celix_errno.h (original)
+++ incubator/celix/trunk/framework/public/include/celix_errno.h Tue Nov 27 14:17:30 2012
@@ -33,6 +33,8 @@
#include <errno.h>
+#include "framework_exports.h"
+
/*!
* \defgroup celix_errno Error Codes
* \ingroup framework
@@ -48,7 +50,7 @@ typedef int celix_status_t;
* Return a readable string for the given error code.
*
*/
-char *celix_strerror(celix_status_t errorcode);
+FRAMEWORK_EXPORT char *celix_strerror(celix_status_t errorcode);
/*!
* Error code indicating successful execution of the function.