public override async Task <TotalTimeResponse> GetTotalTime(TotalTimeRequest request, ServerCallContext context) { long totalTime = 0, activeSince = -1; // 요청받은 기간 내의 Active 및 Idle activity만 가져온다 var activities = from activity in _db.GetActivities() where activity.Time >= request.Range.Start.ToDateTime() && activity.Time <= request.Range.End.ToDateTime() where activity.Action == ActionType.Active || activity.Action == ActionType.Idle orderby activity.Time select activity; await foreach (var activity in activities) { var activityTicks = activity.Time.Ticks; switch (activity.Action) { case ActionType.Active: if (activeSince == -1) { activeSince = activityTicks; } break; case ActionType.Idle: if (activeSince != -1) { totalTime += activityTicks - activeSince; activeSince = -1; } break; } } return(new TotalTimeResponse() { TotalTime = Duration.FromTimeSpan(new TimeSpan(totalTime)) }); }
public override Task <TotalTimeResponse> GetTotalTime(TotalTimeRequest request, ServerCallContext context) { throw new NotImplementedException(); }