Implement last boot id retrieval from db 13/130513/7
authorPaweł Szewczyk <p.szewczyk@samsung.com>
Mon, 22 May 2017 13:51:48 +0000 (15:51 +0200)
committerPaweł Szewczyk <p.szewczyk@samsung.com>
Wed, 21 Jun 2017 09:51:34 +0000 (11:51 +0200)
Change-Id: I84d8baa64df118855aa74afb54bcf28b4fec3afa
Signed-off-by: Paweł Szewczyk <p.szewczyk@samsung.com>
src/listeners/startup.c

index 0811db566bbfaff43506979255fddba44a56b7b3..d0e457abbcb8e26f6bf5f3a0c890f0a18ca33066 100644 (file)
@@ -32,8 +32,27 @@ struct startup_listener {
 
 static int retrieve_last_boot_id(sd_id128_t *boot_id)
 {
-       /* stub */
-       *boot_id = SD_ID128_NULL;
+       bson *b;
+       bson_oid_t oid;
+       bson_iterator i;
+       bson_type t;
+
+       bson_oid_from_string(&oid, LAST_BOOT_ID_OID);
+       b = database_get_by_oid(&oid);
+       if (!b) {
+               *boot_id = SD_ID128_NULL;
+               return 0;
+       }
+
+       bson_iterator_init(&i, b);
+       t = bson_find(&i, b, "boot_id");
+       if (t == BSON_EOO) {
+               log_error("Could not find boot_id key");
+               return -1;
+       }
+
+       *boot_id = *(sd_id128_t *)bson_iterator_bin_data(&i);
+
        return 0;
 }