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