| 513 | } |
| 514 | |
| 515 | function updateRsNoPrimaryFromMember( |
| 516 | serverDescriptions: Map<string, ServerDescription>, |
| 517 | serverDescription: ServerDescription, |
| 518 | setName: string | null = null |
| 519 | ): [TopologyType, string | null] { |
| 520 | const topologyType = TopologyType.ReplicaSetNoPrimary; |
| 521 | setName = setName ?? serverDescription.setName; |
| 522 | if (setName !== serverDescription.setName) { |
| 523 | serverDescriptions.delete(serverDescription.address); |
| 524 | return [topologyType, setName]; |
| 525 | } |
| 526 | |
| 527 | serverDescription.allHosts.forEach((address: string) => { |
| 528 | if (!serverDescriptions.has(address)) { |
| 529 | serverDescriptions.set(address, new ServerDescription(address)); |
| 530 | } |
| 531 | }); |
| 532 | |
| 533 | if (serverDescription.me && serverDescription.address !== serverDescription.me) { |
| 534 | serverDescriptions.delete(serverDescription.address); |
| 535 | } |
| 536 | |
| 537 | return [topologyType, setName]; |
| 538 | } |
| 539 | |
| 540 | function checkHasPrimary(serverDescriptions: Map<string, ServerDescription>): TopologyType { |
| 541 | for (const serverDescription of serverDescriptions.values()) { |