internal static async Task <IHubMessage?> RehydrateAsync(this IHubRehydrator rehydrator, string input, Type messageType)
        {
            if (rehydrator == null)
            {
                throw new ArgumentNullException(nameof(rehydrator));
            }

            if (input == null)
            {
                throw new ArgumentNullException(nameof(input));
            }

            if (messageType == null)
            {
                throw new ArgumentNullException(nameof(messageType));
            }

            await using (var stream = new MemoryStream())
                await using (var writer = new StreamWriter(stream))
                {
                    await writer.WriteAsync(input).ConfigureAwait(false);

                    await writer.FlushAsync().ConfigureAwait(false);

                    stream.Position = 0;
                    return(await rehydrator.RehydrateAsync(stream, messageType).ConfigureAwait(false));
                }
        }
Beispiel #2
0
 /// <summary>
 /// Creates an instance of a RequestRouter using a given resolver.
 /// </summary>
 /// <param name="resolver">The IHubMessageTypeMap to use to figure out
 /// where to send what messages.</param>
 /// <param name="rehydrator">Rehydrate a message to a message type</param>
 /// <param name="bulkMediator">Service for dispatching collection of
 /// messages.</param>
 public SynchronousRouter(
     IHubMessageTypeMap resolver,
     IHubRehydrator rehydrator,
     IHubMessageBulkMediator bulkMediator)
 {
     _resolver     = resolver;
     _rehydrator   = rehydrator;
     _bulkMediator = bulkMediator;
 }
Beispiel #3
0
 public QueueSubscriber(
     IHubMessageTypeMap resolver,
     IHubRehydrator rehydrator,
     IMediator mediator)
 {
     _resolver   = resolver;
     _rehydrator = rehydrator;
     _mediator   = mediator;
 }
 /// <summary>
 /// Creates an instance of a CommandRouter using a given resolver.
 /// </summary>
 /// <param name="resolver">The IHubMessageTypeMap to use to figure out
 /// where to send what messages.</param>
 /// <param name="rehydrator">Rehydrates a message to a message type</param>
 /// <param name="commandDispatcher">Service for dispatching collection
 /// of requests.</param>
 public AsynchronousRouter(
     IHubMessageTypeMap resolver,
     IHubRehydrator rehydrator,
     IHubCommandMediator commandDispatcher)
 {
     _resolver          = resolver;
     _rehydrator        = rehydrator;
     _commandDispatcher = commandDispatcher;
 }
Beispiel #5
0
        public ChangeOfSupplierTests()
        {
            var services = new ServiceCollection();

            services.AddGreenEnergyHub(typeof(ChangeOfSupplierMessage).Assembly);
            services.AddScoped <IHubRehydrator>(
                sp => new JsonMessageDeserializer(
                    Substitute.For <ILogger <JsonMessageDeserializer> >(),
                    new JsonSerializer()));
            services.AddScoped <IHubMessageQueueDispatcher, HubMessageQueueDispatcherStub>();
            var serviceProvider    = services.BuildServiceProvider();
            var hubRequestMediator = serviceProvider.GetRequiredService <IHubRequestMediator>();

            _hubRehydrator = serviceProvider.GetRequiredService <IHubRehydrator>();
            _bulkMediator  = new HubRequestBulkMediator(hubRequestMediator);
        }