File tree Expand file tree Collapse file tree 3 files changed +36
-12
lines changed Expand file tree Collapse file tree 3 files changed +36
-12
lines changed Original file line number Diff line number Diff line change @@ -309,10 +309,7 @@ public function createIndexes(array $indexes)
309
309
$ readPreference = new ReadPreference (ReadPreference::RP_PRIMARY );
310
310
$ server = $ this ->manager ->selectServer ($ readPreference );
311
311
312
- $ serverInfo = $ server ->getInfo ();
313
- $ maxWireVersion = isset ($ serverInfo ['maxWireVersion ' ]) ? $ serverInfo ['maxWireVersion ' ] : 0 ;
314
-
315
- return ($ maxWireVersion >= 2 )
312
+ return (FeatureDetection::isSupported ($ server , FeatureDetection::API_CREATEINDEXES_CMD ))
316
313
? $ this ->createIndexesCommand ($ server , $ indexes )
317
314
: $ this ->createIndexesLegacy ($ server , $ indexes );
318
315
}
@@ -1019,10 +1016,7 @@ public function listIndexes()
1019
1016
$ readPreference = new ReadPreference (ReadPreference::RP_PRIMARY );
1020
1017
$ server = $ this ->manager ->selectServer ($ readPreference );
1021
1018
1022
- $ serverInfo = $ server ->getInfo ();
1023
- $ maxWireVersion = isset ($ serverInfo ['maxWireVersion ' ]) ? $ serverInfo ['maxWireVersion ' ] : 0 ;
1024
-
1025
- return ($ maxWireVersion >= 3 )
1019
+ return (FeatureDetection::isSupported ($ server , FeatureDetection::API_LISTINDEXES_CMD ))
1026
1020
? $ this ->listIndexesCommand ($ server )
1027
1021
: $ this ->listIndexesLegacy ($ server );
1028
1022
}
Original file line number Diff line number Diff line change @@ -101,10 +101,7 @@ public function listCollections(array $options = array())
101
101
$ readPreference = new ReadPreference (ReadPreference::RP_PRIMARY );
102
102
$ server = $ this ->manager ->selectServer ($ readPreference );
103
103
104
- $ serverInfo = $ server ->getInfo ();
105
- $ maxWireVersion = isset ($ serverInfo ['maxWireVersion ' ]) ? $ serverInfo ['maxWireVersion ' ] : 0 ;
106
-
107
- return ($ maxWireVersion >= 3 )
104
+ return (FeatureDetection::isSupported ($ server , FeatureDetection::API_LISTCOLLECTIONS_CMD ))
108
105
? $ this ->listCollectionsCommand ($ server , $ options )
109
106
: $ this ->listCollectionsLegacy ($ server , $ options );
110
107
}
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace MongoDB ;
4
+
5
+ use MongoDB \Driver \Server ;
6
+
7
+ /**
8
+ * Utility class for detecting features based on wire protocol versions.
9
+ *
10
+ * @internal
11
+ */
12
+ class FeatureDetection
13
+ {
14
+ const API_LISTCOLLECTIONS_CMD = 3 ;
15
+ const API_LISTINDEXES_CMD = 3 ;
16
+ const API_CREATEINDEXES_CMD = 2 ;
17
+
18
+ /**
19
+ * Return whether the server supports a particular feature.
20
+ *
21
+ * @param Server $server Server to check
22
+ * @param integer $feature Feature constant (i.e. wire protocol version)
23
+ * @return boolean
24
+ */
25
+ static public function isSupported (Server $ server , $ feature )
26
+ {
27
+ $ info = $ server ->getInfo ();
28
+ $ maxWireVersion = isset ($ info ['maxWireVersion ' ]) ? (integer ) $ info ['maxWireVersion ' ] : 0 ;
29
+ $ minWireVersion = isset ($ info ['minWireVersion ' ]) ? (integer ) $ info ['minWireVersion ' ] : 0 ;
30
+
31
+ return ($ minWireVersion <= $ feature && $ maxWireVersion >= $ feature );
32
+ }
33
+ }
You can’t perform that action at this time.
0 commit comments