src/lib/service.c
branchnew-lib-errors
changeset 219 cefec18b8268
parent 185 259b5841a0e6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib/service.c	Thu May 28 01:17:36 2009 +0300
@@ -0,0 +1,37 @@
+#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); 
+}