aboutsummaryrefslogtreecommitdiff
path: root/lib/ovsdb-idl-provider.h
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2010-01-25 10:15:17 -0800
committerBen Pfaff <blp@nicira.com>2010-01-26 09:49:30 -0800
commit979821c0a6b0c8a9f941a2e13c49feffe2391ab8 (patch)
treeea54fde91e9ff44137a2355df1f47aef4067623a /lib/ovsdb-idl-provider.h
parent36d802ae1fd61d5ae3bfa1b114b8f3a911d987e5 (diff)
ovsdb-idl: Allow clients to modify records without using structs.
The IDL is intended to allow clients easier access to data in the database by providing an extra layer of abstraction. However, ovs-vsctl needs to also provide generic access to database tables, rows, and columns, and until now the IDL has not allowed this. In particular, there was no way to modify the value of a database column by providing a "struct ovsdb_datum" with the new value and then have that reflected in the IDL structs, although the other direction was possible. This commit fixes that problem, which requires a bit of refactoring of the IDL layer. It also exposes the interface for iterating through table records to clients directly, by moving it from the "private" IDL header to the public one.
Diffstat (limited to 'lib/ovsdb-idl-provider.h')
-rw-r--r--lib/ovsdb-idl-provider.h14
1 files changed, 3 insertions, 11 deletions
diff --git a/lib/ovsdb-idl-provider.h b/lib/ovsdb-idl-provider.h
index 8bc6f3e7..45ea869a 100644
--- a/lib/ovsdb-idl-provider.h
+++ b/lib/ovsdb-idl-provider.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009 Nicira Networks.
+/* Copyright (c) 2009, 2010 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -41,6 +41,8 @@ struct ovsdb_idl_row {
struct ovsdb_idl_column {
char *name;
struct ovsdb_type type;
+ void (*parse)(struct ovsdb_idl_row *, const struct ovsdb_datum *);
+ void (*unparse)(struct ovsdb_idl_row *);
};
struct ovsdb_idl_table_class {
@@ -48,8 +50,6 @@ struct ovsdb_idl_table_class {
const struct ovsdb_idl_column *columns;
size_t n_columns;
size_t allocation_size;
- void (*parse)(struct ovsdb_idl_row *);
- void (*unparse)(struct ovsdb_idl_row *);
};
struct ovsdb_idl_table {
@@ -69,14 +69,6 @@ struct ovsdb_idl_row *ovsdb_idl_get_row_arc(
struct ovsdb_idl_table_class *dst_table,
const struct uuid *dst_uuid);
-struct ovsdb_idl_row *ovsdb_idl_first_row(
- const struct ovsdb_idl *, const struct ovsdb_idl_table_class *);
-
-struct ovsdb_idl_row *ovsdb_idl_next_row(const struct ovsdb_idl_row *);
-
-void ovsdb_idl_txn_write(struct ovsdb_idl_row *,
- const struct ovsdb_idl_column *,
- struct ovsdb_datum *);
void ovsdb_idl_txn_verify(const struct ovsdb_idl_row *,
const struct ovsdb_idl_column *);
void ovsdb_idl_txn_delete(struct ovsdb_idl_row *);