equal
deleted
inserted
replaced
|
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 } |