public void OnServerConfigurationUpdate(IServerConfiguration serverConfig) { lock (lockObject) { if (serverConfiguration != null) { serverConfiguration = serverConfiguration.Merge(serverConfig); return; } serverConfiguration = serverConfig; if (serverConfig.IsSessionSplitBySessionDurationEnabled || serverConfig.IsSessionSplitByIdleTimeoutEnabled) { sessionWatchdog.AddToSplitByTimeout(this); } } }
void IBeaconConfiguration.UpdateServerConfiguration(IServerConfiguration newServerConfiguration) { if (newServerConfiguration == null) { return; } lock (lockObject) { if (isServerConfigurationSet) { // server configuration already exists, // therefore merge new one with the existing one. newServerConfiguration = serverConfiguration.Merge(newServerConfiguration); } serverConfiguration = newServerConfiguration; isServerConfigurationSet = true; } // notify has to be called outside of the synchronized block // to avoid deadlock situations with SessionProxyImpl NotifyServerConfigurationUpdate(serverConfiguration); }