#include "service_internal.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);
}