protected TcpConnection(Action onConnectedCallback = null) { Socket = new TcpSocket(AddressFamily.InterNetwork) { NoDelay = true }; OnConnected = onConnectedCallback; _incomingPipeline = new IncomingMessagePipeline(this, _cts.Token); _outboundPipeline = new OutboundMessagePipeline(this, _cts.Token); _incomingPipeline.Start(); _outboundPipeline.Start(); }
public Task Dispatch(IIntegrationMessage message, MessageMetaData metaData, IEndpoint endpoint, IOutboxSession outboxSession = null) { if (message == null) { throw new ArgumentNullException(nameof(message)); } if (endpoint == null) { throw new ArgumentNullException(nameof(endpoint)); } OutboundMessagePipeline messagePipeline = null; if (_endpointOutboundPipeline.ContainsKey(endpoint)) { messagePipeline = _endpointOutboundPipeline[endpoint]; } else { messagePipeline = new OutboundMessagePipeline(endpoint.Settings.OutboundIntegrationFilters, endpoint.Settings.OutboundTransportFilters); _endpointOutboundPipeline[endpoint] = messagePipeline; } var resultContext = messagePipeline.Process(new IntegrationMessageFilterContext(message, metaData, endpoint, FilterDirection.Outbound, null)); if (outboxSession != null)//dispatch through the outbox { OutboxDispatchOptions options = new OutboxDispatchOptions() { }; if (metaData != null) { if (metaData.DispatchDelay.HasValue && !endpoint.SupportsDelayedDispatch) { options.Delay = metaData.DispatchDelay; options.SkipTransientDispatch = true; // for safety because we set delay } else { options.SkipTransientDispatch = metaData.SkipTransientDispatch; } options.ExpiresAtUtc = metaData.ExpiresAtUtc; } return(outboxSession.Dispatch(message.MessageType, resultContext.TransportMessage.Data, resultContext.TransportMessage.MetaData, endpoint, options)); } //dispatch to the endpoint return(DispatchCore(message.MessageType, resultContext.TransportMessage.Data, resultContext.TransportMessage.MetaData, endpoint)); }
protected bool Inspect(OutboundMessagePipeline pipeline) { InsertAfter = (sink => pipeline.ReplaceOutputSink(sink)); return(false); }
public bool Inspect(OutboundMessagePipeline pipeline) { Append("Pipeline"); return(true); }