Esempio n. 1
0
        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;
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 5
0
        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));
 }