public SendEndpointPipe(SendEndpoint endpoint, IPipe <SendContext <T> > pipe)
 {
     _endpoint = endpoint;
     _pipe     = pipe;
     // ReSharper disable once SuspiciousTypeConversion.Global
     _sendContextPipe = pipe as ISendContextPipe;
 }
Beispiel #2
0
        Task <ISendEndpoint> CreateSendEndpoint <T>()
            where T : class
        {
            IMessagePublishTopology <T> messageTopology = _publishTopology.GetMessageTopology <T>();

            if (!messageTopology.TryGetPublishAddress(_hostAddress, out var publishAddress))
            {
                throw new PublishException($"An address for publishing message type {TypeMetadataCache<T>.ShortName} was not found.");
            }

            Task <ISendTransport> sendTransportTask = _transportProvider.GetPublishTransport <T>(publishAddress);

            if (sendTransportTask.IsCompletedSuccessfully())
            {
                var sendTransport = sendTransportTask.Result;

                var sendEndpoint = new SendEndpoint(sendTransport, _serializer, publishAddress, _sourceAddress, _sendPipe,
                                                    sendTransport.ConnectSendObserver(_publishObservers));

                return(Task.FromResult <ISendEndpoint>(sendEndpoint));
            }

            async Task <ISendEndpoint> CreateAsync()
            {
                var sendTransport = await sendTransportTask.ConfigureAwait(false);

                var handle = sendTransport.ConnectSendObserver(_publishObservers);

                return(new SendEndpoint(sendTransport, _serializer, publishAddress, _sourceAddress, _sendPipe, handle));
            }

            return(CreateAsync());
        }
Beispiel #3
0
 public EndpointSendContextPipe(SendEndpoint endpoint, IPipe <SendContext> pipe)
 {
     _endpoint = endpoint;
     _sendPipe = pipe;
 }
Beispiel #4
0
 public EndpointSendContextPipe(SendEndpoint endpoint)
 {
     _endpoint = endpoint;
 }
 public SendEndpointPipe(SendEndpoint endpoint)
 {
     _endpoint        = endpoint;
     _pipe            = default;
     _sendContextPipe = default;
 }