return database_adapter->new_oid(oid);
}
+int database_get_well_known_oid(const char *name, faultd_oid_t *oid)
+{
+ if (!database_adapter)
+ return -ENOSYS;
+
+ return database_adapter->get_well_known_oid(name, oid);
+}
+
int database_get_by_oid(faultd_oid_t *oid, struct faultd_object *result)
{
if (!database_adapter)
#include "common.h"
#include "module.h"
+#define FAULTD_LAST_BOOT_OID "org.tizen.faultd.last_boot_oid"
+
struct faultd_database_adapter {
struct faultd_module module;
char *name;
int (*new_oid)(faultd_oid_t *oid);
+ int (*get_well_known_oid)(const char *name, faultd_oid_t *oid);
+
bool (*is_oid_valid)(faultd_oid_t *oid);
};
int database_get_by_oid(faultd_oid_t *oid, struct faultd_object *result);
int database_load(struct faultd_object *query, struct faultd_object *result, uint32_t *nr);
int database_new_oid(faultd_oid_t *oid);
+int database_get_well_known_oid(const char *name, faultd_oid_t *oid);
bool database_is_oid_valid(faultd_oid_t *oid);
const char *database_get_id_key(void);
return 0;
}
+static int nop_get_well_known_oid(const char *name, faultd_oid_t *oid)
+{
+ return nop_new_oid(oid);
+}
+
static bool nop_is_oid_valid(faultd_oid_t *oid)
{
return strncmp(oid->nop, NOP_DEFAULT_OID, OID_NOP_SIZE) == 0;
.get_by_oid = nop_get_by_oid,
.load = nop_load,
.new_oid = nop_new_oid,
+ .get_well_known_oid = nop_get_well_known_oid,
.is_oid_valid = nop_is_oid_valid,
}
};
return 0;
}
+static int ejdb_get_well_known_oid(const char *name, faultd_oid_t *oid)
+{
+ int i;
+ static const struct {
+ const char *name;
+ const char *oid;
+ } oid_strings[] = {
+ {FAULTD_LAST_BOOT_OID, "32a4ca4f96ddfcd8a1f50269014ff320"},
+ {NULL, NULL}
+ };
+
+ for (i = 0; oid_strings[i].name; ++i) {
+ if (strcmp(oid_strings[i].name, name))
+ continue;
+
+ bson_oid_from_string(&oid->bson, oid_strings[i].oid);
+ return 0;
+ }
+
+ return -ENOENT;
+}
+
static bool ejdb_is_oid_valid(faultd_oid_t *oid)
{
return oid->bson.ints[0] != 0 ||
.get_by_oid = ejdb_get_by_oid,
.load = ejdb_load,
.new_oid = ejdb_new_oid,
+ .get_well_known_oid = ejdb_get_well_known_oid,
.is_oid_valid = ejdb_is_oid_valid,
}
};
#include "system_booted_event.h"
#include "database.h"
-static const char LAST_BOOT_ID_OID[33] = "32a4ca4f96ddfcd8a1f50269014ff320";
-
struct startup_listener {
struct faultd_module module;
};
int ret;
struct faultd_object *root;
- ret = faultd_oid_from_string(&oid, LAST_BOOT_ID_OID);
+ ret = database_get_well_known_oid(FAULTD_LAST_BOOT_OID, &oid);
if (ret < 0) {
- log_error("Could not build oid from string %s", LAST_BOOT_ID_OID);
+ log_error("Could not get last boot id oid");
return ret;
}
struct faultd_object *obj;
int ret;
- faultd_oid_from_string(&oid, LAST_BOOT_ID_OID);
+ ret = database_get_well_known_oid(FAULTD_LAST_BOOT_OID, &oid);
+ if (ret < 0) {
+ log_error_errno(ret, "Could not get oid of %s: %m", FAULTD_LAST_BOOT_OID);
+ return;
+ }
faultd_object_new(&obj);
faultd_object_append_oid(obj, JDBIDKEYNAME, &oid);