| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 
							- using InABox.API;
 
- using InABox.Core;
 
- namespace InABox.IPC
 
- {
 
-     public class IPCPusher : IPusher
 
-     {
 
-         IPCPushState PushState { get; set; }
 
-         public IPCPusher(IPCPushState pushState)
 
-         {
 
-             PushState = pushState;
 
-             PushState.OnPoll += PushState_OnPoll;
 
-         }
 
-         private void PushState_OnPoll(IPCPushState.Session session)
 
-         {
 
-             PushManager.Poll(session.SessionID);
 
-         }
 
-         public IEnumerable<Guid> GetSessions(Platform platform)
 
-         {
 
-             return PushState.SessionMap.Where(x => x.Value.Platform == platform).Select(x => x.Key);
 
-         }
 
-         public IEnumerable<Guid> GetUserSessions(Guid userID)
 
-         {
 
-             return CredentialsCache.GetUserSessions(userID);
 
-         }
 
-         public void PushToAll<TPush>(TPush push) where TPush : BaseObject
 
-         {
 
-             foreach(var session in PushState.SessionMap.Values)
 
-             {
 
-                 session.Connection.WriteAsync(IPCMessage.Push(push)).ContinueWith(task =>
 
-                 {
 
-                     if(task.Exception != null)
 
-                     {
 
-                         Logger.Send(LogType.Error, "", $"Error in push: {CoreUtils.FormatException(task.Exception)}");
 
-                     }
 
-                 });
 
-             }
 
-         }
 
-         public void PushToSession<TPush>(Guid sessionID, TPush push) where TPush : BaseObject
 
-         {
 
-             if(PushState.SessionMap.TryGetValue(sessionID, out var session))
 
-             {
 
-                 session.Connection.WriteAsync(IPCMessage.Push(push)).ContinueWith(task =>
 
-                 {
 
-                     if(task.Exception != null)
 
-                     {
 
-                         Logger.Send(LogType.Error, "", $"Error in push: {CoreUtils.FormatException(task.Exception)}");
 
-                     }
 
-                 });
 
-             }
 
-         }
 
-         public void PushToSession(Guid sessionID, Type TPush, BaseObject push)
 
-         {
 
-             if(PushState.SessionMap.TryGetValue(sessionID, out var session))
 
-             {
 
-                 session.Connection.WriteAsync(IPCMessage.Push(TPush, push)).ContinueWith(task =>
 
-                 {
 
-                     if(task.Exception != null)
 
-                     {
 
-                         Logger.Send(LogType.Error, "", $"Error in push: {CoreUtils.FormatException(task.Exception)}");
 
-                     }
 
-                 });
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |