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