Starts version monitors for old client versions that don't support connect packet monitoring (<= 5.0). Must be called from the main thread
| 2083 | // Starts version monitors for old client versions that don't support connect packet monitoring (<= 5.0). |
| 2084 | // Must be called from the main thread |
| 2085 | void MultiVersionDatabase::DatabaseState::startLegacyVersionMonitors() { |
| 2086 | for (auto itr = legacyVersionMonitors.begin(); itr != legacyVersionMonitors.end(); ++itr) { |
| 2087 | while (itr != legacyVersionMonitors.end() && (*itr)->client->failed) { |
| 2088 | (*itr)->close(); |
| 2089 | itr = legacyVersionMonitors.erase(itr); |
| 2090 | } |
| 2091 | if (itr != legacyVersionMonitors.end() && |
| 2092 | (!dbProtocolVersion.present() || (*itr)->client->protocolVersion != dbProtocolVersion.get())) { |
| 2093 | (*itr)->startConnectionMonitor(Reference<DatabaseState>::addRef(this)); |
| 2094 | } |
| 2095 | } |
| 2096 | } |
| 2097 | |
| 2098 | // Cleans up state for the legacy version monitors to break reference cycles |
| 2099 | void MultiVersionDatabase::DatabaseState::close() { |