@@ -3,12 +3,34 @@ import CLibMongoC
3
3
/// MongoSwift only supports MongoDB 3.6+.
4
4
internal let MIN_SUPPORTED_WIRE_VERSION = 6
5
5
6
+ /// Store optionally provided metadata about a library wrapping the driver.
7
+ private var clientMetadataLibraryName : String ?
8
+ private var clientMetadataLibraryVersion : String ?
9
+
10
+ /// Adds metadata to include the in the handshake performed with the MongoDB server. This is intended for use by
11
+ /// libraries wrapping the driver e.g. MongoDBVapor or an ODM. If used, this method should be called exactly once.
12
+ /// This method will only have an effect if called before any `MongoClient`s are initialized.
13
+ public func addWrappingLibraryMetadata( name: String , version: String ) {
14
+ clientMetadataLibraryName = name
15
+ clientMetadataLibraryVersion = version
16
+ }
17
+
6
18
private final class MongocInitializer {
7
19
internal static let shared = MongocInitializer ( )
8
20
9
21
private init ( ) {
10
22
mongoc_init ( )
11
- mongoc_handshake_data_append ( " MongoSwift " , MongoSwiftVersionString, nil )
23
+ var libraryName = " MongoSwift "
24
+ if let additionalName = clientMetadataLibraryName {
25
+ libraryName += " / \( additionalName) "
26
+ }
27
+
28
+ var libraryVersion = MongoSwiftVersionString
29
+ if let additionalVersion = clientMetadataLibraryVersion {
30
+ libraryVersion += " / \( additionalVersion) "
31
+ }
32
+
33
+ mongoc_handshake_data_append ( libraryName, libraryVersion, nil )
12
34
}
13
35
}
14
36
0 commit comments