@@ -3,12 +3,34 @@ import CLibMongoC
33/// MongoSwift only supports MongoDB 3.6+.
44internal let MIN_SUPPORTED_WIRE_VERSION = 6
55
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+
618private final class MongocInitializer {
719 internal static let shared = MongocInitializer ( )
820
921 private init ( ) {
1022 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 )
1234 }
1335}
1436
0 commit comments