All pastes #171283 Raw Edit

Mine

public text v1 · immutable
·published 2006-09-15 08:25 UTC
rendered paste body
#define DBUS_API_SUBJECT_TO_CHANGE
#include <dbus/dbus.h>
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

bool keeprunning;
pthread_t thread;
pthread_mutex_t lock;

void*
serverthread(void*) {
    DBusConnection* conn;
    DBusError err;
    int ret;

    printf("Listening for method calls\n");

    // initialise the error
    dbus_error_init(&err);

    // connect to the bus and check for errors
    conn = dbus_bus_get(DBUS_BUS_SESSION, &err);
    if (dbus_error_is_set(&err)) {
        fprintf(stderr, "Connection Error (%s)\n", err.message);
        dbus_error_free(&err);
        return false;
    }
    dbus_connection_close(conn);
    dbus_connection_unref(conn);
    dbus_shutdown();
    return 0;
}
void
startserver() {
    pthread_mutex_init(&lock, NULL);
    pthread_create(&thread, 0, serverthread, 0);
}
void
stopserver() {
    pthread_mutex_lock(&lock);
    keeprunning = false;
    pthread_mutex_unlock(&lock);
    pthread_join(thread, 0);
    pthread_mutex_destroy(&lock);
}

void
clientthread() {
    sleep(1);
}

int
main() {
    startserver();

    // run client code
    clientthread();

    // stop server
    stopserver();

    return 0;
}