/// <summary> /// Adds a notification handler. /// </summary> /// <param name="notificationId">Notification id.</param> /// <param name="handler">Handler delegate.</param> public void AddNotificationHandler(long notificationId, ClientNotificationHandler.Handler handler) { _notificationListeners.AddOrUpdate(notificationId, _ => new ClientNotificationHandler(_logger, handler), (_, oldHandler) => oldHandler.SetHandler(handler)); _listenerEvent.Set(); }
/// <summary> /// Adds a notification handler. /// </summary> /// <param name="notificationId">Notification id.</param> /// <param name="handlerDelegate">Handler delegate.</param> public void AddNotificationHandler(long notificationId, ClientNotificationHandler.Handler handlerDelegate) { var handler = _notificationListeners.GetOrAdd(notificationId, _ => new ClientNotificationHandler(_logger, handlerDelegate)); if (!handler.HasHandler) { // We could use AddOrUpdate, but SetHandler must be called outside of Update call, // because it causes handler execution, which, in turn, may call RemoveNotificationHandler. handler.SetHandler(handlerDelegate); } _listenerEvent.Set(); }