private ServerStatusProperties GenerateStatus(string sourceName, BaseGraph graph) { ServerStatusProperties p = new ServerStatusProperties(); p.SourceName = sourceName; if (graph == null) { p.State = ServerStatusState.Idle; } else { p.State = GraphStateToStatus(graph.State, graph.NumberOfClients); //get current profile name p.Profile = graph.CurrentProfile.Name; //get users list/count p.Users = graph.ClientList; p.UserCount = p.Users.Count; if (graph is StreamingGraph) { p.Bitrate = ((StreamingGraph)graph).AverageBitRate; } } return(p); }
private ServerStatusProperties AggregateStreamInfo() { ServerStatusProperties server = new ServerStatusProperties(); server.State = ServerStatusState.Unknown; //determine count of graphs that have a specific state Dictionary <ServerStatusState, int> statusBuckets = new Dictionary <ServerStatusState, int>(); foreach (BaseGraph g in GraphManager.GraphMap.Values.ToArray <BaseGraph>()) { //grab the state info ServerStatusState thisState = GraphStateToStatus(g.State, g.NumberOfClients); if (!statusBuckets.ContainsKey(thisState)) { statusBuckets.Add(thisState, 0); } statusBuckets[thisState]++; //add user count server.UserCount += g.NumberOfClients; //get bitrate if (g is StreamingGraph) { server.Bitrate += (((StreamingGraph)g).AverageBitRate * g.NumberOfClients); } } server.Bitrate /= 1024; //determine server status if (MediaServer.ServerNeedsPowerCycle) { server.State = ServerStatusState.NeedsPowerCycle; } else if (GraphManager.GraphMap.Count == 0) { server.State = ServerStatusState.Idle; } else { KeyValuePair <ServerStatusState, int> max = new KeyValuePair <ServerStatusState, int>(ServerStatusState.Unknown, 0); foreach (KeyValuePair <ServerStatusState, int> cur in statusBuckets) { if (cur.Value > max.Value) { max = cur; } } server.State = max.Key; } return(server); }