protected override void ProcessItem(ClientProblem wrapper) { var state = new ProblemState(); try { wrapper.LogStart(Logger); state = Service.Spawn(wrapper.Problem); Task.Delay(2000).Wait(); _ = FireCallback(wrapper, state, "updated"); state.Log(Logger); } finally { ActiveIds.Remove(wrapper.Id); } }
/// <summary> /// Process a flag for a problem submission /// </summary> /// <param name="wrapper"></param> protected override void ProcessItem(ClientProblemFlag wrapper) { try { wrapper.Log(Logger); var result = Service.Grade(wrapper.ProblemFlag); Task.Delay(2000).Wait(); _ = FireCallback(wrapper, result, "graded"); } catch (Exception ex) { Logger.LogError(ex, $"Failed to process grade for {wrapper.Id}"); } finally { ActiveIds.Remove(wrapper.Id); Logger.LogDebug($"Removed from active list, {wrapper.Id}"); } }
public void Test() { Repository.Verify(r => r.Update(Connection, It.Is <AlarmSampleId[]>( tuples => tuples.Count(t => ActiveIds.Contains(t)) == ActiveIds.Length - 1), TimeService.Object.UtcTime), Times.Once()); }