/// <summary> /// Calculate system statistics /// </summary> private void CalculateStatistics() { CoefsOfChannelCapacity.Clear(); BlockingProbability.Clear(); AvgQueueLength.Clear(); AbsoluteBandwidth = Requests.Count(x => x.State == RequestState.Completed) / (double)Tact; RelativeBandwidth = Requests.Count(x => x.State == RequestState.Completed) / (double)Requests.Count; DeclineProbability = 1 - RelativeBandwidth; AvgTimeOfRequestInQueue = Requests.Sum(x => x.State == RequestState.Completed ? x.TimeInQueue : 0) / (double)Requests.Count(x => x.State == RequestState.Completed); AvgTimeOfRequestInSystem = Requests.Sum(x => x.State == RequestState.Completed ? x.ExistingTime : 0) / (double)Requests.Count(x => x.State == RequestState.Completed); AvgRequestsInSystem = _requestsInSystem / (double)Tact; foreach (IComponent component in Components) { if (component is Channel channel) { CoefsOfChannelCapacity.Add(new KeyValuePair <string, double>(channel.ToString(), channel.TactsChannelProcessed / (double)Tact)); if (component.GetType() == typeof(ChannelWithBlockingDiscipline)) { ChannelWithBlockingDiscipline blockingChannel = component as ChannelWithBlockingDiscipline; BlockingProbability.Add(new KeyValuePair <string, double>(blockingChannel.ToString(), blockingChannel.TactsChannelBlocked / (double)Tact)); } } else if (component.GetType() == typeof(SourceWithBlockingDiscipline)) { SourceWithBlockingDiscipline source = component as SourceWithBlockingDiscipline; BlockingProbability.Add(new KeyValuePair <string, double>(source.ToString(), source.TactsSourceBlocked / (double)Tact)); } else if (component.GetType() == typeof(Queue)) { Queue queue = component as Queue; AvgQueueLength.Add(new KeyValuePair <string, double>(queue.ToString(), queue.SumOfSizes / (double)Tact)); } } }
public bool HasRequest(int userId) => Requests.Count(requester => requester.PlayerData.Id == userId) > 0;
public int GetNumberOfRequests() { return(Requests.Count()); }