Ejemplo n.º 1
0
        private static void MergeWith(this ITaskJobsConfiguration source, ITaskJobsConfiguration other)
        {
            foreach (ITaskJobConfiguration jobConfig in source.ToArray())
            {
                if (other[jobConfig.TaskType] == null)
                {
                    source.Remove(jobConfig.TaskType);
                }
            }

            foreach (ITaskJobConfiguration otherTask in other)
            {
                if (source[otherTask.TaskType] == null)
                {
                    source.AddCopy(otherTask);
                }
            }
        }
        private static void Deserialize(IReadOnlyDictionary <string, string> values, ITaskJobsConfiguration result, string prefix)
        {
            if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith(".", StringComparison.Ordinal))
            {
                prefix = prefix + ".";
            }

            result.MaxWorkers = RedisConverter.ParseIntegerOrNull(values[prefix + "MaxTasks"]);

            foreach (KeyValuePair <string, string> pair in values.Where(v => v.Key.StartsWith(prefix, StringComparison.Ordinal) && v.Key.EndsWith(".TaskType", StringComparison.Ordinal)))
            {
                Type taskType = RedisConverter.ParseType(pair.Value);

                ITaskJobConfiguration jobConfig = result.Add(taskType);

                string key = string.Concat(prefix, taskType.Name, ".MaxWorkers");

                jobConfig.MaxWorkers = RedisConverter.ParseIntegerOrNull(values[key]);
            }
        }
        private static void Serialize(ITaskJobsConfiguration configuration, IDictionary <string, string> result, string prefix)
        {
            if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith(".", StringComparison.Ordinal))
            {
                prefix = prefix + ".";
            }

            string key = string.Concat(prefix, "MaxTasks");

            result.Add(key, RedisConverter.ToString(configuration.MaxWorkers));

            foreach (ITaskJobConfiguration jobConfig in configuration)
            {
                key = string.Concat(prefix, jobConfig.TaskType.Name, ".TaskType");

                result.Add(key, RedisConverter.ToString(jobConfig.TaskType, false));

                key = string.Concat(prefix, jobConfig.TaskType.Name, ".MaxWorkers");

                result.Add(key, RedisConverter.ToString(jobConfig.MaxWorkers));
            }
        }