int database_get_event(faultd_oid_t *oid, struct faultd_event **ev)
{
+ struct faultd_object *obj;
int ret;
- if (!database_adapter)
- return -ENOSYS;
-
- ret = database_adapter->get_event(oid, ev);
- if (ret == 0)
- (*ev)->oid = *oid;
+ if (database_adapter && database_adapter->get_event) {
+ ret = database_adapter->get_event(oid, ev);
+ if (ret == 0)
+ (*ev)->oid = *oid;
+
+ return ret;
+ }
+
+ ret = faultd_object_new(&obj);
+ if (ret) {
+ log_error("Could not create object");
+ return ret;
+ }
+
+ ret = database_get_by_oid(oid, obj);
+ if (ret) {
+ log_error("Could not find object");
+ goto cleanup;
+ }
+
+ ret = faultd_event_create(BSON_EVENT_ID, obj, ev);
+ if (ret) {
+ log_error("Could not create an event");
+ goto cleanup;
+ }
+
+ (*ev)->oid = *oid;
+ return 0;
+cleanup:
+ faultd_object_unref(obj);
return ret;
}
oid->bson.ints[2] != 0;
}
-static int ejdb_get_event(faultd_oid_t *oid, struct faultd_event **ev)
-{
- struct faultd_object *obj;
- int ret;
-
- ret = faultd_object_new(&obj);
- if (ret)
- return ret;
-
- ret = database_get_by_oid(oid, obj);
- if (ret)
- goto cleanup;
-
- ret = faultd_event_create(BSON_EVENT_ID, obj, ev);
- if (ret)
- goto cleanup;
-
-cleanup:
- faultd_object_unref(obj);
- return ret;
-}
-
static struct ejdb_adapter ejdb_adapter = {
.database_adapter = {
.module = {
.load = ejdb_load,
.get_well_known_oid = ejdb_get_well_known_oid,
.is_oid_valid = ejdb_is_oid_valid,
- .get_event = ejdb_get_event,
}
};