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); }
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); }
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); }
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)); }
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); }
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); }
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); }