in common/lib/plugin_service.ts [246:278]
private compare(hostInfoA: HostInfo, hostInfoB: HostInfo, clientA?: ClientWrapper, clientB?: ClientWrapper): Set<HostChangeOptions> {
const changes: Set<HostChangeOptions> = new Set<HostChangeOptions>();
if (clientA && clientB && !Object.is(clientA, clientB)) {
changes.add(HostChangeOptions.CONNECTION_OBJECT_CHANGED);
}
if (hostInfoA.host !== hostInfoB.host || hostInfoA.port !== hostInfoB.port) {
changes.add(HostChangeOptions.HOSTNAME);
}
if (hostInfoA.role !== hostInfoB.role) {
if (hostInfoB.role === HostRole.WRITER) {
changes.add(HostChangeOptions.PROMOTED_TO_WRITER);
} else if (hostInfoB.role === HostRole.READER) {
changes.add(HostChangeOptions.PROMOTED_TO_READER);
}
}
if (hostInfoA.availability !== hostInfoB.availability) {
if (hostInfoB.availability === HostAvailability.AVAILABLE) {
changes.add(HostChangeOptions.WENT_UP);
} else if (hostInfoB.availability === HostAvailability.NOT_AVAILABLE) {
changes.add(HostChangeOptions.WENT_DOWN);
}
}
if (changes.size > 0) {
changes.add(HostChangeOptions.HOST_CHANGED);
}
return changes;
}