12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace InABox.Core
- {
- /// <summary>
- /// Static class through which the server registers <see cref="IPusher"/>s and <see cref="IPollHandler"/>s, as well as actually pushing messages.
- /// </summary>
- public class PushManager
- {
- private static List<IPollHandler> Handlers = new List<IPollHandler>();
- private static List<IPusher> Pushers { get; set; } = new List<IPusher>();
- private PushManager() { }
- public static void AddPusher(IPusher pusher) =>
- Pushers.Add(pusher);
- public static void Push<TPush>(TPush push) where TPush : BaseObject =>
- Pushers.ForEach(x => x.Push(push));
- public static void Push<TPush>(Guid session, TPush push) where TPush : BaseObject =>
- Pushers.ForEach(x => x.Push(session, push));
- public static void PushUser<TPush>(Guid userID, TPush push) where TPush : BaseObject =>
- Pushers.ForEach(x => x.PushUser(userID, push));
- public static void Push<TPush>(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<TPush>(PollHandler<TPush> handler)
- where TPush : BaseObject
- {
- Handlers.Add(handler);
- }
- public static void AddPollHandler<TPush>(PollHandler<TPush>.PollEvent poll)
- where TPush : BaseObject
- {
- Handlers.Add(new PollHandler<TPush>(poll));
- }
- }
- }
|