public IDisposable RegisterNotification(NotificationRequest request, IObserver <NotificationResponse> observer) { try { ApplyOverrides(request); foreach (var query in request.Queries) { if (query.NotificationMechanism == NotificationMechanism.None) { query.NotificationMechanism = _defaultNotificationMechanism; } if (query.NotificationLevel == NotificationLevel.None) { query.NotificationLevel = _defaultNotificationLevel; } if (query.PollInterval <= 0) { query.PollInterval = _defaultPollInterval; } if (query.PollInterval != 0) { if (request.ResponsesPerSecond == 0 || (1000 / query.PollInterval) > request.ResponsesPerSecond) { request.ResponsesPerSecond = (double)1000 / (double)query.PollInterval; } } } if (request.NotificationsPerResponse == 0) { request.NotificationsPerResponse = 1; } return(_provider.RegisterNotification(request, observer)); } catch (Exception ex) { if (_log.IsErrorEnabled) { _log.ErrorFormat("Failed to register notificaton request: {0}", ex.Message); } throw ex; } }