コード例 #1
0
        void CreateSession(IAsyncPipeContextAgent <SessionContext> asyncContext, CancellationToken cancellationToken)
        {
            async Task <SessionContext> CreateSessionContext(ConnectionContext connectionContext, CancellationToken createCancellationToken)
            {
                var session = await connectionContext.CreateSession(createCancellationToken).ConfigureAwait(false);

                void HandleConnectionException(Exception exception)
                {
                    // ReSharper disable once MethodSupportsCancellation
                    asyncContext.Stop($"Connection Exception: {exception}");
                }

                connectionContext.Connection.ExceptionListener += HandleConnectionException;

            #pragma warning disable 4014
                // ReSharper disable once MethodSupportsCancellation
                asyncContext.Completed.ContinueWith(_ => connectionContext.Connection.ExceptionListener -= HandleConnectionException,
                                                    TaskContinuationOptions.ExecuteSynchronously);
            #pragma warning restore 4014

                return(new ActiveMqSessionContext(connectionContext, session, createCancellationToken));
            }

            _connectionContextSupervisor.CreateAgent(asyncContext, CreateSessionContext, cancellationToken);
        }
コード例 #2
0
        void CreateClientContext(IAsyncPipeContextAgent<ClientContext> asyncContext, CancellationToken cancellationToken)
        {
            Task<ClientContext> Create(ConnectionContext connectionContext, CancellationToken createCancellationToken)
            {
                var inputAddress = _settings.GetInputAddress(connectionContext.Endpoint, _settings.Path);

                return Task.FromResult(CreateClientContext(connectionContext, inputAddress, asyncContext));
            }

            _supervisor.CreateAgent(asyncContext, Create, cancellationToken);
        }
コード例 #3
0
        void CreateProcessor(IAsyncPipeContextAgent <ProducerContext> asyncContext, CancellationToken cancellationToken)
        {
            Task <ProducerContext> Create(ConnectionContext connectionContext, CancellationToken createCancellationToken)
            {
                var             client  = connectionContext.CreateEventHubClient(_eventHubName);
                ProducerContext context = new EventHubProducerContext(client, _messageSerializer, cancellationToken);

                return(Task.FromResult(context));
            }

            _contextSupervisor.CreateAgent(asyncContext, Create, cancellationToken);
        }
コード例 #4
0
        Task <ModelContext> CreateModel(IAsyncPipeContextAgent <ModelContext> asyncContext, CancellationToken cancellationToken)
        {
            async Task <ModelContext> CreateModelContext(ConnectionContext connectionContext, CancellationToken createCancellationToken)
            {
                var modelContext = await connectionContext.CreateModelContext(createCancellationToken).ConfigureAwait(false);

                LogContext.Debug?.Log("Created model: {ChannelNumber} {Host}", modelContext.Model.ChannelNumber, connectionContext.Description);

                return(modelContext);
            }

            return(_supervisor.CreateAgent(asyncContext, CreateModelContext, cancellationToken));
        }
コード例 #5
0
        void CreateProcessor(IAsyncPipeContextAgent <ProcessorContext> asyncContext, CancellationToken cancellationToken)
        {
            Task <ProcessorContext> Create(ConnectionContext connectionContext, CancellationToken createCancellationToken)
            {
                var blobContainerClient = _blobContainerClientFactory(connectionContext.StorageSettings);
                var client = _clientFactory(connectionContext.HostSettings, blobContainerClient);
                ProcessorContext context = new EventHubProcessorContext(_hostConfiguration, _receiveSettings, blobContainerClient,
                                                                        client, _partitionInitializingHandler, _partitionClosingHandler, createCancellationToken);

                return(Task.FromResult(context));
            }

            _contextSupervisor.CreateAgent(asyncContext, Create, cancellationToken);
        }
コード例 #6
0
        void CreateSendEndpointContext(IAsyncPipeContextAgent <SendEndpointContext> asyncContext, CancellationToken cancellationToken)
        {
            async Task <SendEndpointContext> Create(ConnectionContext context, CancellationToken createCancellationToken)
            {
                var sendEndpointContext = CreateSendEndpointContext(context);

                if (_pipe.IsNotEmpty())
                {
                    await _pipe.Send(sendEndpointContext).ConfigureAwait(false);
                }

                return(sendEndpointContext);
            }

            _supervisor.CreateAgent(asyncContext, Create, cancellationToken);
        }
コード例 #7
0
        void CreateSendEndpointContext(IAsyncPipeContextAgent <SendEndpointContext> asyncContext, CancellationToken cancellationToken)
        {
            async Task <SendEndpointContext> Create(ConnectionContext context, CancellationToken createCancellationToken)
            {
                var messageSender = context.CreateMessageSender(_settings.EntityPath);

                var sendEndpointContext = new MessageSendEndpointContext(context, messageSender);

                if (_pipe.IsNotEmpty())
                {
                    await _pipe.Send(sendEndpointContext).ConfigureAwait(false);
                }

                return(sendEndpointContext);
            }

            _supervisor.CreateAgent(asyncContext, Create, cancellationToken);
        }