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);
        }