Skip to content

Commit e100f20

Browse files
CDRIVER-3821 implement versioned api
1 parent 43f5997 commit e100f20

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+3753
-39
lines changed

src/libmongoc/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,7 @@ set (SOURCES ${SOURCES}
534534
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-read-concern.c
535535
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-read-prefs.c
536536
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-rpc.c
537+
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-server-api.c
537538
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-server-description.c
538539
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-server-stream.c
539540
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-client-session.c
@@ -598,6 +599,7 @@ set (HEADERS
598599
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-prelude.h
599600
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-read-concern.h
600601
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-read-prefs.h
602+
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-server-api.h
601603
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-server-description.h
602604
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-client-session.h
603605
${PROJECT_SOURCE_DIR}/src/mongoc/mongoc-socket.h
@@ -993,6 +995,7 @@ set (test-libmongoc-sources
993995
${PROJECT_SOURCE_DIR}/tests/test-mongoc-usleep.c
994996
${PROJECT_SOURCE_DIR}/tests/test-mongoc-util.c
995997
${PROJECT_SOURCE_DIR}/tests/test-mongoc-version.c
998+
${PROJECT_SOURCE_DIR}/tests/test-mongoc-versioned-api.c
996999
${PROJECT_SOURCE_DIR}/tests/test-mongoc-with-transaction.c
9971000
${PROJECT_SOURCE_DIR}/tests/test-mongoc-write-commands.c
9981001
${PROJECT_SOURCE_DIR}/tests/test-mongoc-write-concern.c

src/libmongoc/doc/api.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ API Reference
4545
mongoc_read_prefs_t
4646
mongoc_remove_flags_t
4747
mongoc_reply_flags_t
48+
mongoc_server_api_t
49+
mongoc_server_api_version_t
4850
mongoc_server_description_t
4951
mongoc_session_opt_t
5052
mongoc_socket_t
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
:man_page: mongoc_client_pool_set_server_api
2+
3+
mongoc_client_pool_set_server_api()
4+
===================================
5+
6+
Synopsis
7+
--------
8+
9+
.. code-block:: c
10+
11+
bool
12+
mongoc_client_pool_set_server_api (mongoc_client_pool_t *pool,
13+
const mongoc_server_api_t *api,
14+
bson_error_t *error);
15+
16+
Set the API version to use for clients created through ``pool``. Once the API version is set on a pool, it may not be changed to a new value. Attempting to do so will cause this method to fail and set ``error``.
17+
18+
Parameters
19+
----------
20+
21+
* ``pool``: A :symbol:`mongoc_client_pool_t`.
22+
* ``api``: A :symbol:`mongoc_server_api_t`.
23+
* ``error``: A :symbol:`bson_error_t`.
24+
25+
Returns
26+
-------
27+
28+
True if the version was successfully set, false if not. On failure, ``error`` will be set.

src/libmongoc/doc/mongoc_client_pool_t.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ Example
4040
mongoc_client_pool_set_apm_callbacks
4141
mongoc_client_pool_set_appname
4242
mongoc_client_pool_set_error_api
43+
mongoc_client_pool_set_server_api
4344
mongoc_client_pool_set_ssl_opts
4445
mongoc_client_pool_try_pop
4546

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
:man_page: mongoc_client_set_server_api
2+
3+
mongoc_client_set_server_api()
4+
==============================
5+
6+
Synopsis
7+
--------
8+
9+
.. code-block:: c
10+
11+
bool
12+
mongoc_client_set_server_api (mongoc_client_t *client,
13+
const mongoc_server_api_t *api,
14+
bson_error_t *error);
15+
16+
Set the API version to use for ``client``. Once the API version is set on a client, it may not be changed to a new value. Attempting to do so will cause this method to fail and set ``error``.
17+
18+
Parameters
19+
----------
20+
21+
* ``client``: A :symbol:`mongoc_client_t`.
22+
* ``api``: A :symbol:`mongoc_server_api_t`.
23+
* ``error``: A :symbol:`bson_error_t`.
24+
25+
Returns
26+
-------
27+
28+
True if the version was successfully set, false if not. On failure, ``error`` will be set.

src/libmongoc/doc/mongoc_client_t.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ Example
8282
mongoc_client_set_error_api
8383
mongoc_client_set_read_concern
8484
mongoc_client_set_read_prefs
85+
mongoc_client_set_server_api
8586
mongoc_client_set_ssl_opts
8687
mongoc_client_set_stream_initiator
8788
mongoc_client_set_write_concern
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
:man_page: mongoc_server_api_copy
2+
3+
mongoc_server_api_copy()
4+
========================
5+
6+
Synopsis
7+
--------
8+
9+
.. code-block:: c
10+
11+
mongoc_server_api_t *
12+
mongoc_server_api_copy (const mongoc_server_api_t *api);
13+
14+
Creates a deep copy of ``api``.
15+
16+
Parameters
17+
----------
18+
19+
* ``api``: A :symbol:`mongoc_server_api_t`.
20+
21+
Returns
22+
-------
23+
24+
Returns a newly allocated copy of ``api`` that must be freed with :symbol:`mongoc_server_api_destroy()` when no longer in use.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
:man_page: mongoc_server_api_deprecation_errors
2+
3+
mongoc_server_api_deprecation_errors()
4+
======================================
5+
6+
Synopsis
7+
--------
8+
9+
.. code-block:: c
10+
11+
void
12+
mongoc_server_api_deprecation_errors (mongoc_server_api_t *api,
13+
bool deprecation_errors);
14+
15+
Set whether or not to error on commands that are deprecated in this API version.
16+
17+
Parameters
18+
----------
19+
20+
* ``api``: A :symbol:`mongoc_server_api_t`.
21+
* ``deprecation_errors``: Whether or not to error on commands that are deprecated.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
:man_page: mongoc_server_api_destroy
2+
3+
mongoc_server_api_destroy()
4+
===========================
5+
6+
Synopsis
7+
--------
8+
9+
.. code-block:: c
10+
11+
void
12+
mongoc_server_api_destroy (mongoc_server_api_t *api);
13+
14+
Free a :symbol:`mongoc_server_api_t`. Does nothing if ``api`` is NULL.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
:man_page: mongoc_server_api_new
2+
3+
mongoc_server_api_new()
4+
=======================
5+
6+
Synopsis
7+
--------
8+
9+
.. code-block:: c
10+
11+
mongoc_server_api_t *
12+
mongoc_server_api_new (mongoc_server_api_version_t version);
13+
14+
Create a struct to hold server API preferences.
15+
16+
Returns
17+
-------
18+
19+
A new ``mongoc_server_api_t`` you must free with :symbol:`mongoc_server_api_destroy`.

0 commit comments

Comments
 (0)