@@ -151,6 +151,9 @@ function phase($phase, &$output) {
151
151
if (isset ($ phase ["MOOperation " ])) {
152
152
return MOOperation ($ phase ["MOOperation " ], $ output );
153
153
}
154
+ if (isset ($ phase ["clientHosts " ])) {
155
+ return clientHosts ($ phase ["clientHosts " ], $ output );
156
+ }
154
157
if (isset ($ phase ["clientOperation " ])) {
155
158
return clientOperation ($ phase ["clientOperation " ], $ output );
156
159
}
@@ -174,6 +177,54 @@ function MOOperation($phase, &$output) {
174
177
}
175
178
}
176
179
180
+ function clientHosts ($ hosts , &$ output ) {
181
+ $ output = array ();
182
+
183
+ $ retval = <<< CODE
184
+ \$clientHosts = array();
185
+
186
+ CODE ;
187
+
188
+ if (!empty ($ hosts ['primary ' ])) {
189
+ $ primary = var_export ($ hosts ['primary ' ], true );
190
+
191
+ $ retval .= <<< CODE
192
+ \$found = array_filter( \$manager->getServers(), function( \$server) {
193
+ return \$server->getHost() == $ primary && \$server->getType() == MongoDB\\Driver\\SERVERTYPE_RS_PRIMARY;
194
+ });
195
+ if (count( \$found) == 1) {
196
+ \$clientHosts['primary'] = $ primary;
197
+ }
198
+
199
+ CODE ;
200
+ $ output ['primary ' ] = $ hosts ['primary ' ];
201
+ }
202
+
203
+ if (!empty ($ hosts ['secondaries ' ])) {
204
+ foreach ($ hosts ['secondaries ' ] as $ secondaryHost ) {
205
+ $ secondary = var_export ($ secondaryHost , true );
206
+
207
+ $ retval .= <<< CODE
208
+
209
+ \$found = array_filter( \$manager->getServers(), function( \$server) {
210
+ return \$server->getHost() == $ secondary && \$server->getType() == MongoDB\\Driver\\SERVERTYPE_RS_SECONDARY;
211
+ });
212
+ if (count( \$found) == 1) {
213
+ \$clientHosts['secondaries'][] = $ secondary;
214
+ }
215
+
216
+ CODE ;
217
+ $ output ['secondaries ' ][] = $ secondaryHost ;
218
+ }
219
+ }
220
+
221
+ $ retval .= <<< CODE
222
+ var_dump( \$clientHosts);
223
+ CODE ;
224
+
225
+ return $ retval ;
226
+ }
227
+
177
228
function clientOperation ($ phase , &$ output ) {
178
229
switch ($ phase ["operation " ]) {
179
230
case "insertOne " :
0 commit comments