/// <summary> /// отправить пользователю (по terminalId) некоторое сообщение /// </summary> public void SendMessageToUser(long terminalId, string message, ServiceMessageCategory cat) { try { sessionLocker.AcquireReaderLock(SessionLockTimeout); } catch (ApplicationException) { Logger.Error("SendMessageToUser read timout"); } try { UserSession session; sessions.TryGetValue(terminalId, out session); if (session == null) { return; } try { sessionLocker.UpgradeToWriterLock(SessionLockTimeout); } catch (ApplicationException) { return; } session.callback.ProcessServiceMessage(cat, message); } catch (Exception ex) { Logger.Error("SendMessageToUser error", ex); return; } finally { sessionLocker.ReleaseLock(); } }
public void ProcessServiceMessage(ServiceMessageCategory cat, string message) { }
/// <summary> /// пришло служебное сообщение от сервиса /// </summary> public void ProcessServiceMessage(ServiceMessageCategory cat, string message) { if (cat == ServiceMessageCategory.LogMessage) { Logger.InfoFormat("Service objectBinding: {0}", message); return; } var action = UserSettings.Instance.GetAccountEventAction(AccountEventCode.ServerMessage); if (action == AccountEventAction.DoNothing) return; if (cat == ServiceMessageCategory.DialogBox) { bool repeatNotification; NotificationBox.Show(message, Localizer.GetString("TitleServerMessage"), MessageBoxIcon.Information, out repeatNotification); if (!repeatNotification) { UserSettings.Instance.SwitchAccountEventAction(AccountEventCode.ServerMessage); UserSettings.Instance.SaveSettings(); } return; } if (cat == ServiceMessageCategory.ServiceMessage) { ShowMsgWindowSafe(new AccountEvent("", message, AccountEventCode.ServerMessage)); // отправить в некоторое окошко... пока не знаю, куда !! return; } }
/// <summary> /// отправить пользователю (по terminalId) некоторое сообщение /// </summary> public void SendMessageToUser(long terminalId, string message, ServiceMessageCategory cat) { try { sessionLocker.AcquireReaderLock(SessionLockTimeout); } catch (ApplicationException) { Logger.Error("SendMessageToUser read timout"); } try { UserSession session; sessions.TryGetValue(terminalId, out session); if (session == null) return; try { sessionLocker.UpgradeToWriterLock(SessionLockTimeout); } catch (ApplicationException) { return; } session.callback.ProcessServiceMessage(cat, message); } catch (Exception ex) { Logger.Error("SendMessageToUser error", ex); return; } finally { sessionLocker.ReleaseLock(); } }