X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=ovsdb%2Fovsdb.h;h=834ff1a994af37ba12757e64b74ad9f5d6ec0f0c;hb=3c6aafea8383a951819d656d48941ecb3f5a8110;hp=3f62966a7f32ce55e0ccb9a44287fbdf95610ed8;hpb=f85f8ebbfac946c19b3c6eb0f4170f579d0a4d25;p=sliver-openvswitch.git diff --git a/ovsdb/ovsdb.h b/ovsdb/ovsdb.h index 3f62966a7..834ff1a99 100644 --- a/ovsdb/ovsdb.h +++ b/ovsdb/ovsdb.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2009 Nicira Networks +/* Copyright (c) 2009, 2010, 2011 Nicira Networks * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,17 +22,22 @@ #include "shash.h" struct json; +struct ovsdb_log; +struct ovsdb_txn; struct uuid; /* Database schema. */ struct ovsdb_schema { char *name; - char *comment; + char *version; + char *cksum; struct shash tables; /* Contains "struct ovsdb_table_schema *"s. */ }; struct ovsdb_schema *ovsdb_schema_create(const char *name, - const char *comment); + const char *version, + const char *cksum); +struct ovsdb_schema *ovsdb_schema_clone(const struct ovsdb_schema *); void ovsdb_schema_destroy(struct ovsdb_schema *); struct ovsdb_error *ovsdb_schema_from_file(const char *file_name, @@ -42,11 +47,14 @@ struct ovsdb_error *ovsdb_schema_from_json(struct json *, struct ovsdb_schema **) WARN_UNUSED_RESULT; struct json *ovsdb_schema_to_json(const struct ovsdb_schema *); + +bool ovsdb_schema_equal(const struct ovsdb_schema *, + const struct ovsdb_schema *); /* Database. */ struct ovsdb { struct ovsdb_schema *schema; - struct ovsdb_file *file; /* Disk file (null for in-memory db). */ + struct list replicas; /* Contains "struct ovsdb_replica"s. */ struct shash tables; /* Contains "struct ovsdb_table *"s. */ /* Triggers. */ @@ -54,10 +62,7 @@ struct ovsdb { bool run_triggers; }; -struct ovsdb *ovsdb_create(struct ovsdb_file *, struct ovsdb_schema *); -struct ovsdb_error *ovsdb_open(const char *file_name, bool read_only, - struct ovsdb **) - WARN_UNUSED_RESULT; +struct ovsdb *ovsdb_create(struct ovsdb_schema *); void ovsdb_destroy(struct ovsdb *); struct ovsdb_error *ovsdb_from_json(const struct json *, struct ovsdb **) @@ -69,5 +74,24 @@ struct ovsdb_table *ovsdb_get_table(const struct ovsdb *, const char *); struct json *ovsdb_execute(struct ovsdb *, const struct json *params, long long int elapsed_msec, long long int *timeout_msec); + +/* Database replication. */ + +struct ovsdb_replica { + struct list node; /* Element in "struct ovsdb" replicas list. */ + const struct ovsdb_replica_class *class; +}; + +struct ovsdb_replica_class { + struct ovsdb_error *(*commit)(struct ovsdb_replica *, + const struct ovsdb_txn *, bool durable); + void (*destroy)(struct ovsdb_replica *); +}; + +void ovsdb_replica_init(struct ovsdb_replica *, + const struct ovsdb_replica_class *); + +void ovsdb_add_replica(struct ovsdb *, struct ovsdb_replica *); +void ovsdb_remove_replica(struct ovsdb *, struct ovsdb_replica *); #endif /* ovsdb/ovsdb.h */