src/lib/service.c
author Tero Marttila <terom@fixme.fi>
Thu, 28 May 2009 01:17:36 +0300
branchnew-lib-errors
changeset 219 cefec18b8268
parent 185 src/service.c@259b5841a0e6
permissions -rw-r--r--
some of the lib/transport stuff compiles
#include "service_internal.h"

#include <stdlib.h>

const struct object_type service_type_type = {
    .parent = NULL,
};

void service_init (service_t *service, const struct service_type *type, const struct service_info *info)
{
    // init object
    object_init(&service->base_obj, &type->base_type);

    // store user info
    service->info = *info;
}

void* service_check (service_t *service, const struct service_type *type)
{
    return object_cast(&service->base_obj, &type->base_type);
}

void service_error (service_t *service, const error_t *err)
{
    // just call the user callback
    service->info.cb_tbl->on_error(service, err, service->info.cb_arg);
}

void service_destroy (service_t *service)
{
    const struct service_type *type = object_type(&service->base_obj, &service_type_type);

    // invoke method
    type->methods.deinit(service);

    free(service); 
}