summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMichael Cahill <michael.cahill@wiredtiger.com>2012-03-11 10:46:07 +1100
committerMichael Cahill <michael.cahill@wiredtiger.com>2012-03-11 10:46:07 +1100
commit4e7a2cd095c69daf270f3ec54b80bf6260f0b22e (patch)
tree4fc5e716c804b8bb4e9d49c316c15e88992acbaa /examples
parent438950c338a24f306f29760b93d0648b69433034 (diff)
downloadmongo-4e7a2cd095c69daf270f3ec54b80bf6260f0b22e.tar.gz
Add an interface for "data source" extensions.
--HG-- rename : docs/src/cursors.dox => docs/src/data_sources.dox
Diffstat (limited to 'examples')
-rw-r--r--examples/c/ex_all.c108
1 files changed, 90 insertions, 18 deletions
diff --git a/examples/c/ex_all.c b/examples/c/ex_all.c
index 9f3cf48db20..7de68e4191f 100644
--- a/examples/c/ex_all.c
+++ b/examples/c/ex_all.c
@@ -43,7 +43,7 @@
int add_collator(WT_CONNECTION *conn);
int add_compressor(WT_CONNECTION *conn);
-int add_cursor_type(WT_CONNECTION *conn);
+int add_data_source(WT_CONNECTION *conn);
int add_extractor(WT_CONNECTION *conn);
int connection_ops(WT_CONNECTION *conn);
int cursor_ops(WT_SESSION *session);
@@ -384,26 +384,45 @@ session_ops(WT_SESSION *session)
return (ret);
}
-/*! [WT_CURSOR_TYPE size] */
+/*! [WT_DATA_SOURCE create] */
static int
-my_cursor_size(WT_CURSOR_TYPE *ctype, const char *obj, size_t *sizep)
+my_create(WT_DATA_SOURCE *dsrc, WT_SESSION *session,
+ const char *name, const char *config)
{
- (void)ctype;
- (void)obj;
+ /* Unused parameters */
+ (void)dsrc;
+ (void)session;
+ (void)name;
+ (void)config;
- *sizep = sizeof(WT_CURSOR);
return (0);
}
-/*! [WT_CURSOR_TYPE size] */
+/*! [WT_DATA_SOURCE create] */
-/*! [WT_CURSOR_TYPE init] */
+/*! [WT_DATA_SOURCE drop] */
static int
-my_init_cursor(WT_CURSOR_TYPE *ctype, WT_SESSION *session,
+my_drop(WT_DATA_SOURCE *dsrc, WT_SESSION *session,
+ const char *name, const char *config)
+{
+ /* Unused parameters */
+ (void)dsrc;
+ (void)session;
+ (void)name;
+ (void)config;
+
+ return (0);
+}
+/*! [WT_DATA_SOURCE drop] */
+
+/*! [WT_DATA_SOURCE open_cursor] */
+static int
+my_open_cursor(WT_DATA_SOURCE *dsrc, WT_SESSION *session,
const char *obj, WT_CURSOR *old_cursor, const char *config,
- WT_CURSOR *new_cursor)
+ WT_CURSOR **new_cursor)
{
/* Unused parameters */
- (void)ctype;
+ (void)dsrc;
+
(void)session;
(void)obj;
(void)old_cursor;
@@ -412,17 +431,70 @@ my_init_cursor(WT_CURSOR_TYPE *ctype, WT_SESSION *session,
return (0);
}
-/*! [WT_CURSOR_TYPE init] */
+/*! [WT_DATA_SOURCE open_cursor] */
+
+/*! [WT_DATA_SOURCE rename] */
+static int
+my_rename(WT_DATA_SOURCE *dsrc, WT_SESSION *session,
+ const char *oldname, const char *newname, const char *config)
+{
+ /* Unused parameters */
+ (void)dsrc;
+ (void)session;
+ (void)oldname;
+ (void)newname;
+ (void)config;
+
+ return (0);
+}
+/*! [WT_DATA_SOURCE rename] */
+
+/*! [WT_DATA_SOURCE sync] */
+static int
+my_sync(WT_DATA_SOURCE *dsrc, WT_SESSION *session,
+ const char *name, const char *config)
+{
+ /* Unused parameters */
+ (void)dsrc;
+ (void)session;
+ (void)name;
+ (void)config;
+
+ return (0);
+}
+/*! [WT_DATA_SOURCE sync] */
+
+/*! [WT_DATA_SOURCE truncate] */
+static int
+my_truncate(WT_DATA_SOURCE *dsrc, WT_SESSION *session,
+ const char *name, const char *config)
+{
+ /* Unused parameters */
+ (void)dsrc;
+ (void)session;
+ (void)name;
+ (void)config;
+
+ return (0);
+}
+/*! [WT_DATA_SOURCE truncate] */
int
-add_cursor_type(WT_CONNECTION *conn)
+add_data_source(WT_CONNECTION *conn)
{
int ret;
- /*! [WT_CURSOR_TYPE register] */
- static WT_CURSOR_TYPE my_ctype = { my_cursor_size, my_init_cursor };
- ret = conn->add_cursor_type(conn, NULL, &my_ctype, NULL);
- /*! [WT_CURSOR_TYPE register] */
+ /*! [WT_DATA_SOURCE register] */
+ static WT_DATA_SOURCE my_dsrc = {
+ my_create,
+ my_drop,
+ my_open_cursor,
+ my_rename,
+ my_sync,
+ my_truncate
+ };
+ ret = conn->add_data_source(conn, "dsrc:", &my_dsrc, NULL);
+ /*! [WT_DATA_SOURCE register] */
return (ret);
}
@@ -584,8 +656,8 @@ connection_ops(WT_CONNECTION *conn)
ret = conn->load_extension(conn, "my_extension.dll", NULL);
/*! [conn load extension] */
- add_cursor_type(conn);
add_collator(conn);
+ add_data_source(conn);
add_extractor(conn);
/*! [conn close] */