public static List <NebulaConnection> GetSubscribers(int planetId, int stationId, int stationGId) { if (!_stationUISubscribers.TryGetValue(Subscribers.GetKey(planetId, stationId, stationGId), out Subscribers subscribers)) { return(new List <NebulaConnection>()); } return(subscribers.Connections); }
public static void RemoveSubscriber(int planetId, int stationId, int stationGId, NebulaConnection connection) { if (_stationUISubscribers.TryGetValue(Subscribers.GetKey(planetId, stationId, stationGId), out Subscribers subscribers)) { subscribers.Connections.Remove(connection); if (subscribers.Connections.Count == 0) { _stationUISubscribers.Remove(subscribers.ToString()); } } }
// When a client opens a station's UI he requests a subscription for live updates, so add him to the list public static void AddSubscriber(int planetId, int stationId, int stationGId, NebulaConnection connection) { // Attempt to find existing subscribers to a specific station, if we couldn't find an existing one // we must initialize a new Subscribers for this specific station. if (!_stationUISubscribers.TryGetValue(Subscribers.GetKey(planetId, stationId, stationGId), out Subscribers subscribers)) { _stationUISubscribers.Add(Subscribers.GetKey(planetId, stationId, stationGId), new Subscribers(planetId, stationId, stationGId)); } _stationUISubscribers.TryGetValue(Subscribers.GetKey(planetId, stationId, stationGId), out subscribers); subscribers?.Connections.Add(connection); }