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));
}
}
}