public Connection(IConnectionFactory factory, IFrameHandler frameHandler, string clientProvidedName = null) { ClientProvidedName = clientProvidedName; _factory = factory; _frameHandler = frameHandler; ConsumerWorkService = factory.DispatchConsumersAsync ? new AsyncConsumerWorkService(factory.ConsumerDispatchConcurrency) : new ConsumerWorkService(factory.ConsumerDispatchConcurrency); Action <Exception, string> onException = (exception, context) => OnCallbackException(CallbackExceptionEventArgs.Build(exception, context)); _callbackExceptionWrapper = new EventingWrapper <CallbackExceptionEventArgs>(string.Empty, (exception, context) => { }); _connectionBlockedWrapper = new EventingWrapper <ConnectionBlockedEventArgs>("OnConnectionBlocked", onException); _connectionUnblockedWrapper = new EventingWrapper <EventArgs>("OnConnectionUnblocked", onException); _connectionShutdownWrapper = new EventingWrapper <ShutdownEventArgs>("OnShutdown", onException); _sessionManager = new SessionManager(this, 0); _session0 = new MainSession(this) { Handler = NotifyReceivedCloseOk }; _model0 = (ModelBase)Protocol.CreateModel(_session0); StartMainLoop(); Open(); }
public Connection(ConnectionConfig config, IFrameHandler frameHandler) { _config = config; _frameHandler = frameHandler; Action <Exception, string> onException = (exception, context) => OnCallbackException(CallbackExceptionEventArgs.Build(exception, context)); _callbackExceptionWrapper = new EventingWrapper <CallbackExceptionEventArgs>(string.Empty, (exception, context) => { }); _connectionBlockedWrapper = new EventingWrapper <ConnectionBlockedEventArgs>("OnConnectionBlocked", onException); _connectionUnblockedWrapper = new EventingWrapper <EventArgs>("OnConnectionUnblocked", onException); _connectionShutdownWrapper = new EventingWrapper <ShutdownEventArgs>("OnShutdown", onException); _sessionManager = new SessionManager(this, 0); _session0 = new MainSession(this); _model0 = new Model(_config, _session0);; ClientProperties = new Dictionary <string, object?>(_config.ClientProperties) { ["capabilities"] = Protocol.Capabilities, ["connection_name"] = ClientProvidedName }; _mainLoopTask = Task.Factory.StartNew(MainLoop, TaskCreationOptions.LongRunning); try { Open(); } catch { var ea = new ShutdownEventArgs(ShutdownInitiator.Library, Constants.InternalError, "FailedOpen"); Close(ea, true, TimeSpan.FromSeconds(5)); throw; } }
public Connection(IConnectionFactory factory, IFrameHandler frameHandler, string?clientProvidedName = null) { ClientProvidedName = clientProvidedName; _factory = factory; _frameHandler = frameHandler; Action <Exception, string> onException = (exception, context) => OnCallbackException(CallbackExceptionEventArgs.Build(exception, context)); _callbackExceptionWrapper = new EventingWrapper <CallbackExceptionEventArgs>(string.Empty, (exception, context) => { }); _connectionBlockedWrapper = new EventingWrapper <ConnectionBlockedEventArgs>("OnConnectionBlocked", onException); _connectionUnblockedWrapper = new EventingWrapper <EventArgs>("OnConnectionUnblocked", onException); _connectionShutdownWrapper = new EventingWrapper <ShutdownEventArgs>("OnShutdown", onException); _sessionManager = new SessionManager(this, 0); _session0 = new MainSession(this); _model0 = (ModelBase)Protocol.CreateModel(factory, _session0); ClientProperties = new Dictionary <string, object?>(factory.ClientProperties) { ["capabilities"] = Protocol.Capabilities, ["connection_name"] = ClientProvidedName }; _mainLoopTask = Task.Factory.StartNew(MainLoop, TaskCreationOptions.LongRunning); Open(); }
public AutorecoveringConnection(ConnectionFactory factory, string clientProvidedName = null) { _factory = factory; ClientProvidedName = clientProvidedName; Action <Exception, string> onException = (exception, context) => _innerConnection.OnCallbackException(CallbackExceptionEventArgs.Build(exception, context)); _recoverySucceededWrapper = new EventingWrapper <EventArgs>("OnConnectionRecovery", onException); _connectionRecoveryErrorWrapper = new EventingWrapper <ConnectionRecoveryErrorEventArgs>("OnConnectionRecoveryError", onException); _consumerTagChangeAfterRecoveryWrapper = new EventingWrapper <ConsumerTagChangedAfterRecoveryEventArgs>("OnConsumerRecovery", onException); _queueNameChangeAfterRecoveryWrapper = new EventingWrapper <QueueNameChangedAfterRecoveryEventArgs>("OnQueueRecovery", onException); }
public AutorecoveringConnection(ConnectionConfig config, IEndpointResolver endpoints) { _config = config; _endpoints = endpoints; IFrameHandler fh = _endpoints.SelectOne(_config.FrameHandlerFactory); _innerConnection = new Connection(_config, fh); Action <Exception, string> onException = (exception, context) => _innerConnection.OnCallbackException(CallbackExceptionEventArgs.Build(exception, context)); _recoverySucceededWrapper = new EventingWrapper <EventArgs>("OnConnectionRecovery", onException); _connectionRecoveryErrorWrapper = new EventingWrapper <ConnectionRecoveryErrorEventArgs>("OnConnectionRecoveryError", onException); _consumerTagChangeAfterRecoveryWrapper = new EventingWrapper <ConsumerTagChangedAfterRecoveryEventArgs>("OnConsumerRecovery", onException); _queueNameChangeAfterRecoveryWrapper = new EventingWrapper <QueueNameChangedAfterRecoveryEventArgs>("OnQueueRecovery", onException); ConnectionShutdown += HandleConnectionShutdown; }
public Eventing_Invoke() { _wrapper = new EventingWrapper <ulong>("ContextString", (ex, context) => OnUnhandledExceptionOccurred(ex, context)); }