diff options
author | Michael Cahill <michael.cahill@wiredtiger.com> | 2012-03-11 10:46:07 +1100 |
---|---|---|
committer | Michael Cahill <michael.cahill@wiredtiger.com> | 2012-03-11 10:46:07 +1100 |
commit | 4e7a2cd095c69daf270f3ec54b80bf6260f0b22e (patch) | |
tree | 4fc5e716c804b8bb4e9d49c316c15e88992acbaa /examples | |
parent | 438950c338a24f306f29760b93d0648b69433034 (diff) | |
download | mongo-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.c | 108 |
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] */ |