internal static bool Subscribe(LoginInfo login, Guid clientKey, IFixAdminCallback callback, string queueIP, string queueName, MessageQueue queue, bool pushOfflineUpdates)
 {
     lock (_key_Session)
     {
         SessionInfo details = new SessionInfo()
         {
             SessionKey = clientKey, LoginInfo = login, Queue = queue, QueueMachine = queueIP, QueueName = queueName, FlushUpdatesOffline = pushOfflineUpdates, Callback = callback, IsOnline = true, QueuePath = queue.Path
         };
         _key_Session.Add(clientKey, details);
         _username_Session.Add(login.Username, details);
     }
     return(true);
 }
        internal static void Resubscribe(Guid sessionKey, IFixAdminCallback callBack, LoginInfo logInfo, bool flushUpdatesOffline, bool isNewQueue, string newQueueIP = null, string newQueueName = null, MessageQueue queue = null)
        {
            SessionInfo details = _key_Session[sessionKey];

            details.IsOnline            = true;
            details.FlushUpdatesOffline = flushUpdatesOffline;
            details.Callback            = callBack;
            details.LoginInfo           = logInfo;
            if (isNewQueue)
            {
                // no need to validate data as IsNewQueue means that data already valid before passed here
                details.QueueMachine = newQueueIP;
                details.QueueName    = newQueueName;
                details.QueuePath    = queue.Path;
                details.Queue        = null;
                details.Queue        = queue;
            }
        }
 public static void BroadcastAdminMsg(IFromAdminMsg[] msgs)
 {
     foreach (KeyValuePair <Guid, SessionInfo> callback in _key_Session)
     {
         try
         {
             IFixAdminCallback cb = callback.Value.Callback;
             if (cb == null || !callback.Value.IsOnline) // admin msgs dont need to be flushed as offline updates
             {
                 continue;
             }
             cb.PushAdminMsg(msgs);
         }
         catch (Exception inex)
         {
             SystemLogger.WriteOnConsoleAsync(true, string.Format("Error BroadcastAdminMsg  , Error: {0}", inex.Message), ConsoleColor.Red, ConsoleColor.Black, true);
         }
     }
 }