src/lib/service.c
branchnew-lib-errors
changeset 219 cefec18b8268
parent 185 259b5841a0e6
equal deleted inserted replaced
218:5229a5d098b2 219:cefec18b8268
       
     1 #include "service_internal.h"
       
     2 
       
     3 #include <stdlib.h>
       
     4 
       
     5 const struct object_type service_type_type = {
       
     6     .parent = NULL,
       
     7 };
       
     8 
       
     9 void service_init (service_t *service, const struct service_type *type, const struct service_info *info)
       
    10 {
       
    11     // init object
       
    12     object_init(&service->base_obj, &type->base_type);
       
    13 
       
    14     // store user info
       
    15     service->info = *info;
       
    16 }
       
    17 
       
    18 void* service_check (service_t *service, const struct service_type *type)
       
    19 {
       
    20     return object_cast(&service->base_obj, &type->base_type);
       
    21 }
       
    22 
       
    23 void service_error (service_t *service, const error_t *err)
       
    24 {
       
    25     // just call the user callback
       
    26     service->info.cb_tbl->on_error(service, err, service->info.cb_arg);
       
    27 }
       
    28 
       
    29 void service_destroy (service_t *service)
       
    30 {
       
    31     const struct service_type *type = object_type(&service->base_obj, &service_type_type);
       
    32 
       
    33     // invoke method
       
    34     type->methods.deinit(service);
       
    35 
       
    36     free(service); 
       
    37 }