public void Add(ITaskRuntimeInfo taskInfo) { if (taskInfo == null) { throw new ArgumentNullException(nameof(taskInfo)); } taskInfo.ValidateForAdd(); this.RecordMethodCall(taskInfo); this.taskInfos.Add(taskInfo.TaskId, (FakeTaskRuntimeInfo)taskInfo); }
/// <inheritdoc /> public void Add(ITaskRuntimeInfo taskInfo) { if (taskInfo == null) { throw new ArgumentNullException("taskInfo"); } Trace.WriteLine("ENTER: Adding runtime information for task '{0}' of type '{1}' with priority '{2}' in polling queue '{3}' ...".FormatInvariant(taskInfo.TaskId, taskInfo.TaskType, taskInfo.Priority, taskInfo.PollingQueue)); taskInfo.ValidateForAdd(); string entityKey = RedisTaskRuntimeInfoRepository.GetEntityKey(taskInfo.TaskId); string addToListKey; Dictionary <string, string> values = new Dictionary <string, string>() { { "Id", RedisConverter.ToString(taskInfo.TaskId) }, { "TaskType", RedisConverter.ToString(taskInfo.TaskType, true) }, { "SubmittedUtc", RedisConverter.ToString(taskInfo.SubmittedUtc) }, { "Status", RedisConverter.ToString(taskInfo.Status) } }; if (string.IsNullOrEmpty(taskInfo.PollingQueue)) { values.Add("Priority", RedisConverter.ToString(taskInfo.Priority)); addToListKey = RedisTaskRuntimeInfoRepository.PendingTasksList; } else { values.Add("PollingQueue", taskInfo.PollingQueue); addToListKey = RedisTaskRuntimeInfoRepository.GetPollingQueueRedisKey(taskInfo.PollingQueue, TaskStatus.Pending); } using (IRedisTransaction transaction = this.Provider.CreateTransaction()) { transaction.SetHashValues(entityKey, values); transaction.AddToList(addToListKey, RedisConverter.ToString(taskInfo.TaskId)); transaction.Commit(); } Trace.WriteLine("EXIT: Runtime information for task '{0}' of type '{1}' with priority '{2}' in polling queue '{3}' added.".FormatInvariant(taskInfo.TaskId, taskInfo.TaskType, taskInfo.Priority, taskInfo.PollingQueue)); }