Ejemplo n.º 1
0
        /// <summary>
        /// </summary>
        public ICoreClient Create(string instanceName)
        {
            string       cacheKey           = null;
            string       env                = null;
            string       servers            = null;
            string       protocols          = null;
            bool         debugRequests      = false;
            TimeSpan     requestTimeout     = TimeSpan.Zero;
            TimeSpan     offlineTimeout     = TimeSpan.Zero;
            CoreModeEnum coreMode           = CoreModeEnum.Standard;
            Assembly     applAssembly       = null;
            bool         useFallbackServers = true;

            //bool cacheEnabled = false;
            _factoryState.Locked(state =>
            {
                useFallbackServers = state.UseFallbackServers;
                //cacheEnabled = state.CacheEnabled;
                env            = state.Env;
                servers        = state.Servers;
                protocols      = state.Protocols;
                debugRequests  = state.DebugRequests;
                requestTimeout = state.RequestTimeout;
                offlineTimeout = state.OfflineTimeout;
                coreMode       = state.CoreMode;
                applAssembly   = state.ApplAssembly;
                cacheKey       = $"[{env}][{(protocols ?? "").ToLower()}][{(servers ?? "").ToLower()}]";
                if (state.SettingsCache.TryGetValue(cacheKey, out var cachedSettings))
                {
                    env                = cachedSettings.Env;
                    servers            = $"{cachedSettings.ServerAddress.Host}:{cachedSettings.ServerAddress.Port}";
                    protocols          = cachedSettings.ServerAddress.Protocol;
                    useFallbackServers = false;
                    debugRequests      = cachedSettings.DebugRequests;
                    requestTimeout     = cachedSettings.RequestTimeout;
                    offlineTimeout     = cachedSettings.OfflineTimeout;
                    coreMode           = cachedSettings.CoreMode;
                    applAssembly       = cachedSettings.ApplAssembly;
                    //_Logger.LogDebug("Using cached settings: {0} --> {1}://{2}", cacheKey, scheme, servers);
                }
            });
            ICoreClient client = new CoreClient(
                _loggerRef, instanceName, env, servers, protocols, useFallbackServers, debugRequests,
                requestTimeout, offlineTimeout, coreMode, applAssembly);

            // save settings
            _factoryState.Locked(state =>
            {
                state.SettingsCache[cacheKey] = new ClientSettings
                {
                    Env            = EnvHelper.EnvName(client.ClientInfo.ConfigEnv),
                    ServerAddress  = client.ServerAddress,
                    DebugRequests  = debugRequests,
                    RequestTimeout = requestTimeout,
                    OfflineTimeout = offlineTimeout,
                    CoreMode       = coreMode,
                    ApplAssembly   = applAssembly
                };
            });
            return(client);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Sets the default request timeout for clients created by the factory.
 /// </summary>
 /// <param name="coreMode">The coreMode.</param>
 /// <returns></returns>
 public CoreClientFactory SetCoreMode(CoreModeEnum coreMode)
 {
     CoreMode = coreMode;
     return(this);
 }