X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fovsdb-idl.h;h=7832e4eef2680bcf5369d767ece250c4ebb522aa;hb=656a0e37da750d8e3e7bde3fe27e45d1a332f15a;hp=975dfc1742507e28241b81e87ad58dc236fca3bf;hpb=979821c0a6b0c8a9f941a2e13c49feffe2391ab8;p=sliver-openvswitch.git diff --git a/lib/ovsdb-idl.h b/lib/ovsdb-idl.h index 975dfc174..7832e4eef 100644 --- a/lib/ovsdb-idl.h +++ b/lib/ovsdb-idl.h @@ -16,8 +16,23 @@ #ifndef OVSDB_IDL_H #define OVSDB_IDL_H 1 +/* Open vSwitch Database Interface Definition Language (OVSDB IDL). + * + * The OVSDB IDL maintains an in-memory replica of a database. It issues RPC + * requests to an OVSDB database server and parses the responses, converting + * raw JSON into data structures that are easier for clients to digest. Most + * notably, references to rows via UUID become C pointers. + * + * The IDL also assists with issuing database transactions. The client creates + * a transaction, manipulates the IDL data structures, and commits or aborts + * the transaction. The IDL then composes and issues the necessary JSON-RPC + * requests and reports to the client whether the transaction completed + * successfully. + */ + #include #include +#include "compiler.h" struct json; struct ovsdb_datum; @@ -30,7 +45,7 @@ struct ovsdb_idl *ovsdb_idl_create(const char *remote, const struct ovsdb_idl_class *); void ovsdb_idl_destroy(struct ovsdb_idl *); -void ovsdb_idl_run(struct ovsdb_idl *); +bool ovsdb_idl_run(struct ovsdb_idl *); void ovsdb_idl_wait(struct ovsdb_idl *); unsigned int ovsdb_idl_get_seqno(const struct ovsdb_idl *); @@ -58,21 +73,34 @@ enum ovsdb_idl_txn_status { const char *ovsdb_idl_txn_status_to_string(enum ovsdb_idl_txn_status); struct ovsdb_idl_txn *ovsdb_idl_txn_create(struct ovsdb_idl *); -void ovsdb_idl_txn_add_comment(struct ovsdb_idl_txn *, const char *); +void ovsdb_idl_txn_add_comment(struct ovsdb_idl_txn *, const char *, ...) + PRINTF_FORMAT (2, 3); void ovsdb_idl_txn_set_dry_run(struct ovsdb_idl_txn *); void ovsdb_idl_txn_increment(struct ovsdb_idl_txn *, const char *table, const char *column, const struct json *where); void ovsdb_idl_txn_destroy(struct ovsdb_idl_txn *); void ovsdb_idl_txn_wait(const struct ovsdb_idl_txn *); enum ovsdb_idl_txn_status ovsdb_idl_txn_commit(struct ovsdb_idl_txn *); -int64_t ovsdb_idl_txn_get_increment_new_value(const struct ovsdb_idl_txn *); +enum ovsdb_idl_txn_status ovsdb_idl_txn_commit_block(struct ovsdb_idl_txn *); void ovsdb_idl_txn_abort(struct ovsdb_idl_txn *); +const char *ovsdb_idl_txn_get_error(const struct ovsdb_idl_txn *); + +int64_t ovsdb_idl_txn_get_increment_new_value(const struct ovsdb_idl_txn *); +const struct uuid *ovsdb_idl_txn_get_insert_uuid(const struct ovsdb_idl_txn *, + const struct uuid *); + void ovsdb_idl_txn_read(const struct ovsdb_idl_row *, const struct ovsdb_idl_column *, struct ovsdb_datum *); void ovsdb_idl_txn_write(const struct ovsdb_idl_row *, const struct ovsdb_idl_column *, struct ovsdb_datum *); +void ovsdb_idl_txn_delete(const struct ovsdb_idl_row *); +const struct ovsdb_idl_row *ovsdb_idl_txn_insert( + struct ovsdb_idl_txn *, const struct ovsdb_idl_table_class *, + const struct uuid *); + +struct ovsdb_idl *ovsdb_idl_txn_get_idl (struct ovsdb_idl_txn *); #endif /* ovsdb-idl.h */