public bool DropSubscriptionConnection(long subscriptionId, SubscriptionException ex) { if (_subscriptionConnectionStates.TryGetValue(subscriptionId, out SubscriptionConnectionState subscriptionConnectionState) == false) { return(false); } var subscriptionConnection = subscriptionConnectionState.Connection; if (subscriptionConnection != null) { subscriptionConnectionState.RegisterRejectedConnection(subscriptionConnection, ex); subscriptionConnection.ConnectionException = ex; try { subscriptionConnection.CancellationTokenSource.Cancel(); } catch { // ignored } } if (_logger.IsInfoEnabled) { _logger.Info($"Subscription with id {subscriptionId} connection was dropped. Reason: {ex.Message}"); } return(true); }
public void RegisterRejectedConnection(SubscriptionConnection connection, SubscriptionException exception = null) { if (exception != null && connection.ConnectionException == null) { connection.ConnectionException = exception; } while (_rejectedConnections.Count > 10) { _rejectedConnections.TryDequeue(out SubscriptionConnection _); } _rejectedConnections.Enqueue(connection); }
public static bool TryGetSubscriptionException(ErrorResponseException ere, out SubscriptionException subscriptionException) { var text = ere.ResponseString; if (ere.StatusCode == SubscriptionDoesNotExistException.RelevantHttpStatusCode) { var errorResult = JsonConvert.DeserializeAnonymousType(text, new { url = (string)null, error = (string)null }); subscriptionException = new SubscriptionDoesNotExistException(errorResult.error); return(true); } if (ere.StatusCode == SubscriptionInUseException.RelavantHttpStatusCode) { var errorResult = JsonConvert.DeserializeAnonymousType(text, new { url = (string)null, error = (string)null }); subscriptionException = new SubscriptionInUseException(errorResult.error); return(true); } if (ere.StatusCode == SubscriptionClosedException.RelevantHttpStatusCode) { var errorResult = JsonConvert.DeserializeAnonymousType(text, new { url = (string)null, error = (string)null }); subscriptionException = new SubscriptionClosedException(errorResult.error); return(true); } subscriptionException = null; return(false); }
public static bool TryGetSubscriptionException(ErrorResponseException ere, out SubscriptionException subscriptionException) { if (ere.StatusCode == SubscriptionDoesNotExistExeption.RelevantHttpStatusCode) { subscriptionException = new SubscriptionDoesNotExistExeption(ere.ResponseString); return(true); } if (ere.StatusCode == SubscriptionInUseException.RelavantHttpStatusCode) { subscriptionException = new SubscriptionInUseException(ere.Message); return(true); } if (ere.StatusCode == SubscriptionClosedException.RelevantHttpStatusCode) { subscriptionException = new SubscriptionClosedException(ere.Message); return(true); } subscriptionException = null; return(false); }
private static void HandleSubscriptionException(HttpActionExecutedContext ctx, SubscriptionException e) { ctx.Response = new HttpResponseMessage { StatusCode = e.ResponseStatusCode }; SerializeError(ctx, new { Url = ctx.Request.RequestUri.PathAndQuery, Error = e.Message }); }