using System; using System.Collections.Generic; using System.Text; namespace InABox.Core { /// /// Static class through which the server registers s and s, as well as actually pushing messages. /// public class PushManager { private static List Handlers = new List(); private static List Pushers { get; set; } = new List(); private PushManager() { } public static void AddPusher(IPusher pusher) => Pushers.Add(pusher); public static void Push(TPush push) where TPush : BaseObject => Pushers.ForEach(x => x.Push(push)); public static void Push(Guid session, TPush push) where TPush : BaseObject => Pushers.ForEach(x => x.Push(session, push)); public static void PushUser(Guid userID, TPush push) where TPush : BaseObject => Pushers.ForEach(x => x.PushUser(userID, push)); public static void Push(Platform platform, TPush push) where TPush : BaseObject => Pushers.ForEach(x => x.Push(platform, push)); public static void Poll(Guid session) { foreach (var handler in Handlers) { foreach (var push in handler.Poll(session)) { Pushers.ForEach(x => x.Push(session, handler.Type, push)); } } } public static void AddPollHandler(PollHandler handler) where TPush : BaseObject { Handlers.Add(handler); } public static void AddPollHandler(PollHandler.PollEvent poll) where TPush : BaseObject { Handlers.Add(new PollHandler(poll)); } } }