@@ -11,6 +11,7 @@ const ReadPreference = require('mongodb-core').ReadPreference;
1111const ReplSet = require ( '../topologies/replset' ) ;
1212const Server = require ( '../topologies/server' ) ;
1313const ServerSessionPool = require ( 'mongodb-core' ) . Sessions . ServerSessionPool ;
14+ const NativeTopology = require ( '../topologies/native_topology' ) ;
1415
1516let client ;
1617function loadClient ( ) {
@@ -109,7 +110,9 @@ const validOptionNames = [
109110 'minSize' ,
110111 'monitorCommands' ,
111112 'retryWrites' ,
112- 'useNewUrlParser'
113+ 'useNewUrlParser' ,
114+ 'useUnifiedTopology' ,
115+ 'serverSelectionTimeoutMS'
113116] ;
114117
115118function addListeners ( mongoClient , topology ) {
@@ -126,7 +129,10 @@ function addListeners(mongoClient, topology) {
126129
127130function assignTopology ( client , topology ) {
128131 client . topology = topology ;
129- topology . s . sessionPool = new ServerSessionPool ( topology . s . coreTopology ) ;
132+ topology . s . sessionPool =
133+ topology instanceof NativeTopology
134+ ? new ServerSessionPool ( topology )
135+ : new ServerSessionPool ( topology . s . coreTopology ) ;
130136}
131137
132138// Clear out all events
@@ -225,6 +231,15 @@ function connect(mongoClient, url, options, callback) {
225231 }
226232 }
227233
234+ if ( _finalOptions . useUnifiedTopology ) {
235+ return createTopology (
236+ mongoClient ,
237+ 'unified' ,
238+ _finalOptions ,
239+ connectHandler ( mongoClient , _finalOptions , connectCallback )
240+ ) ;
241+ }
242+
228243 // Do we have a replicaset then skip discovery and go straight to connectivity
229244 if ( _finalOptions . replicaSet || _finalOptions . rs_name ) {
230245 return createTopology (
@@ -434,6 +449,8 @@ function createTopology(mongoClient, topologyType, options, callback) {
434449 topology = new Mongos ( servers , options ) ;
435450 } else if ( topologyType === 'replicaset' ) {
436451 topology = new ReplSet ( servers , options ) ;
452+ } else if ( topologyType === 'unified' ) {
453+ topology = new NativeTopology ( options . servers , options ) ;
437454 }
438455
439456 // Add listeners
0 commit comments