private ConfigurationKeyValues refreshBSL(out ConfigurationKeyValues thisOldbusinessServiceKey, string fieldName, ServiceUsers csUser) { Trade.StockTraderWebApplicationConfigurationImplementation.ConfigurationService configService = new ConfigurationService(); List<TraverseNode> traversePath; ConfigurationKeyValues businessServiceKey = new ConfigurationKeyValues(); businessServiceKey.ConfigurationKeyFieldName = fieldName; businessServiceKey.OriginatingConfigServiceName = StockTraderUtility.BUSINESS_SERVICES_CONFIG; traversePath = configService.getTraversePath(null, Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, csUser); businessServiceKey = configService.getServiceConfigurationKey(Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, businessServiceKey.ConfigurationKeyFieldName, traversePath, csUser); thisOldbusinessServiceKey = businessServiceKey; return businessServiceKey; }
/// <summary> /// Overrides the base method, performs app-specific logic on specific app-specific setting changes. For the /// Web app there are few app specific routines we need to run when OPS-specific app settings are changed in the repository. /// MAKE SURE TO CALL THE BASE checkChangedSetting method FIRST! /// </summary> /// <param name="settingsInstance">Instance of this host's Settings class.</param> /// <param name="updatedConfigurationKey">The key that has been updated.</param> /// <param name="block">True to block on any multi-threaded calls, typically the node receiving via /// Config Service endpoint blocks, nodes receiving via Node Service do not, if any threads are spun up.</param> /// <returns>bool as success code.</returns> public override bool checkChangedSetting(object settingsInstance, ConfigurationKeyValues updatedConfigurationKey,bool block,ServiceUsers csUser) { bool success = false; Trade.StockTraderWebApplicationConfigurationImplementation.ConfigurationService configService = new ConfigurationService(); ServiceConfigHelper configHelper = new ServiceConfigHelper(settingsInstance); success = base.checkChangedSetting(settingsInstance, updatedConfigurationKey, block, csUser); if (success) { switch (updatedConfigurationKey.ConfigurationKeyFieldName) { case "ACCESS_MODE": { setAccessMode(updatedConfigurationKey.ConfigurationKeyValue); ConfigurationKeyValues businessServiceKey = new ConfigurationKeyValues(); switch (Settings.ACCESS_MODE) { case StockTraderUtility.BSL_IISHOST_BSL_HTTP: { if (block) { businessServiceKey.ConfigurationKeyFieldName = "REFRESHCONFIG"; businessServiceKey.ConfigurationKeyValue = "RefreshConfig"; businessServiceKey.OriginatingConfigServiceName = StockTraderUtility.BUSINESS_SERVICES_CONFIG; refreshBSLConfig(businessServiceKey, configService, block, csUser); } InitCommunicationChannels(settingsInstance, null, ConfigUtility.INIT_ALL_CONNECTED_INSTANCES); break; } case StockTraderUtility.BSL_IISHOST_BSL_TCP: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_IISHOST_TCP_TMSEC_CLIENTCERT: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_IISHOST_TCP_TMSEC_USERNAME: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_IISHOST_WSHTTP_MSEC_CLIENTCERT: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_IISHOST_WSHTTP_TMSEC_CLIENTCERT: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_IISHOST_WSHTTP_TMSEC_USERNAME: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_AZURE_TCP_TMSEC_CLIENTCERT: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_AZURE_TCP_TMSEC_USERNAME: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_AZURE_WSHTTP_TMSEC_CLIENTCERT: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_AZURE_WSHTTP_TMSEC_USERNAME: { goto case StockTraderUtility.BSL_IISHOST_BSL_HTTP; } case StockTraderUtility.BSL_INPROCESS: { InitConfigInProcessBusinessService.initConfigBusinessService(ConfigUtility.masterServiceWebHostSyncObject,true); break; } default: { break; } } success = true; break; } case "MAX_DISPLAY_ORDERS": { List<TraverseNode> traversePath=null; int successBSL = ConfigUtility.CLUSTER_UPDATE_FULL_SUCCESS; if (Settings.ACCESS_MODE == StockTraderUtility.BSL_SOAP) { success = true; break; } ConfigurationKeyValues businessServiceKey = null; ConfigurationKeyValues thisOldbusinessServiceKey = null; businessServiceKey = refreshBSL(out thisOldbusinessServiceKey, "MAX_QUERY_ORDERS", csUser); if (businessServiceKey != null && block) { businessServiceKey.ConfigurationKeyValue = updatedConfigurationKey.ConfigurationKeyValue; traversePath = configService.getTraversePath(null, Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, csUser); successBSL = configService.receiveConfigurationKey(Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER,StockTraderUtility.BUSINESS_SERVICES_CONFIG, thisOldbusinessServiceKey,businessServiceKey,block, ConfigUtility.UPDATE_KEY_VALUE,traversePath,csUser); if (successBSL == ConfigUtility.CLUSTER_UPDATE_FULL_SUCCESS) success = true; } else success = false; break; } case "MAX_DISPLAY_TOP_ORDERS": { List<TraverseNode> traversePath = null; int successBSL = ConfigUtility.CLUSTER_UPDATE_FULL_SUCCESS; if (Settings.ACCESS_MODE == StockTraderUtility.BSL_SOAP) { success = true; break; } ConfigurationKeyValues businessServiceKey = null; ConfigurationKeyValues thisOldbusinessServiceKey = null; businessServiceKey = refreshBSL(out thisOldbusinessServiceKey, "MAX_QUERY_TOP_ORDERS", csUser); if (businessServiceKey != null && block) { businessServiceKey.ConfigurationKeyValue = updatedConfigurationKey.ConfigurationKeyValue; traversePath = configService.getTraversePath(null, Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, csUser); successBSL = configService.receiveConfigurationKey(Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, thisOldbusinessServiceKey, businessServiceKey, block, ConfigUtility.UPDATE_KEY_VALUE, traversePath, csUser); if (successBSL == ConfigUtility.CLUSTER_UPDATE_FULL_SUCCESS) success = true; } else success = false; break; } default: { success = true; break; } } } return success; }
/// <summary> /// Refreshes the BSL from repository. /// </summary> /// <param name="key"></param> /// <param name="configService"></param> /// <param name="notifyNodes"></param> /// <param name="csUser"></param> /// <returns></returns> public int refreshBSLConfig(ConfigurationKeyValues key, ConfigurationService configService, bool notifyNodes,ServiceUsers csUser) { int returnCode = ConfigUtility.CLUSTER_UPDATE_FULL_SUCCESS; string value = key.ConfigurationKeyValue; List<TraverseNode> traversePath = configService.getTraversePath(null, Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, csUser); key = configService.getServiceConfigurationKey(Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, key.ConfigurationKeyFieldName, traversePath, csUser); if (key != null) { key.ConfigurationKeyValue = value; traversePath = configService.getTraversePath(null, Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, csUser); if (traversePath!=null) returnCode = configService.receiveConfigurationKey(Settings.BSL_CLIENT_ACTIVE_SERVICE_HOST_IDENTIFIER, StockTraderUtility.BUSINESS_SERVICES_CONFIG, key, key, notifyNodes, ConfigUtility.UPDATE_KEY_VALUE, traversePath, csUser); } return returnCode; }