Add functions for loading and saving information
authorMarcel Holtmann <marcel@holtmann.org>
Sun, 4 Jan 2009 18:25:07 +0000 (19:25 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Sun, 4 Jan 2009 18:25:07 +0000 (19:25 +0100)
src/connman.h
src/storage.c

index a87c49f..e803ddc 100644 (file)
@@ -86,6 +86,11 @@ int __connman_resolver_selftest(void);
 int __connman_storage_init(void);
 void __connman_storage_cleanup(void);
 
+int __connman_storage_load_device(struct connman_device *device);
+int __connman_storage_save_device(struct connman_device *device);
+int __connman_storage_load_network(struct connman_network *network);
+int __connman_storage_save_network(struct connman_network *network);
+
 #include <connman/driver.h>
 
 void __connman_driver_rescan(struct connman_driver *driver);
index 1266fc2..5bf3f3f 100644 (file)
@@ -66,6 +66,86 @@ void connman_storage_unregister(struct connman_storage *storage)
        storage_list = g_slist_remove(storage_list, storage);
 }
 
+int __connman_storage_load_device(struct connman_device *device)
+{
+       GSList *list;
+
+       DBG("device %p", device);
+
+       for (list = storage_list; list; list = list->next) {
+               struct connman_storage *storage = list->data;
+
+               if (storage->device_load) {
+                       DBG("%s", storage->name);
+
+                       if (storage->device_load(device) == 0)
+                               return 0;
+               }
+       }
+
+       return -ENOENT;
+}
+
+int __connman_storage_save_device(struct connman_device *device)
+{
+       GSList *list;
+
+       DBG("device %p", device);
+
+       for (list = storage_list; list; list = list->next) {
+               struct connman_storage *storage = list->data;
+
+               if (storage->device_save) {
+                       DBG("%s", storage->name);
+
+                       if (storage->device_save(device) == 0)
+                               return 0;
+               }
+       }
+
+       return -ENOENT;
+}
+
+int __connman_storage_load_network(struct connman_network *network)
+{
+       GSList *list;
+
+       DBG("network %p", network);
+
+       for (list = storage_list; list; list = list->next) {
+               struct connman_storage *storage = list->data;
+
+               if (storage->network_load) {
+                       DBG("%s", storage->name);
+
+                       if (storage->network_load(network) == 0)
+                               return 0;
+               }
+       }
+
+       return -ENOENT;
+}
+
+int __connman_storage_save_network(struct connman_network *network)
+{
+       GSList *list;
+
+       DBG("network %p", network);
+
+       for (list = storage_list; list; list = list->next) {
+               struct connman_storage *storage = list->data;
+
+               if (storage->network_save) {
+                       DBG("%s", storage->name);
+
+                       if (storage->network_save(network) == 0)
+                               return 0;
+               }
+       }
+
+       return -ENOENT;
+}
+
 int __connman_storage_init(void)
 {
        DBG("");