public IHttpClientBuilder UseRequestHandler <THandler>(params object[] args) where THandler : HttpMessageHandler { FinalHandlerDef = new HandlerDefinition { HandlerType = typeof(THandler), CtorArgs = args }; return(this); }
public LinkHandler(HandlerDefinition definition, ISettings settings, Git git) { _definition = definition; _settings = settings; _git = git; if (definition is PrivateHandlerDefinition privateHandlerDefinition) { _server = new RemoteServer(async() => await _settings.GetServersAsync(privateHandlerDefinition.ServerSettingsKey)); } else { _server = new RemoteServer(((PublicHandlerDefinition)definition).Servers); } }
/// <summary> /// Transport has received a message! /// </summary> private void m_transport_MessageReceived(object sender, Hl7MessageReceivedEventArgs e) { IMessagePersistenceService messagePersister = ApplicationServiceContext.Current.GetService(typeof(IMessagePersistenceService)) as IMessagePersistenceService; // Find the message that supports the type Terser msgTerser = new Terser(e.Message); string messageType = String.Format("{0}^{1}", msgTerser.Get("/MSH-9-1"), msgTerser.Get("/MSH-9-2")); string messageId = msgTerser.Get("/MSH-10"); // Find a handler HandlerDefinition handler = m_serviceDefinition.MessageHandlers.Find(o => o.Types.Exists(a => a.Name == messageType)), defaultHandler = m_serviceDefinition.MessageHandlers.Find(o => o.Types.Exists(a => a.Name == "*")); if (handler != null && handler.Types.Find(o => o.Name == messageType).IsQuery || defaultHandler != null && defaultHandler.Types.Find(o => o.Name == "*").IsQuery) { messagePersister = null; } // Have we already processed this message? MessageState msgState = MessageState.New; if (messagePersister != null) { msgState = messagePersister.GetMessageState(messageId); } switch (msgState) { case MessageState.New: if (messagePersister != null) { messagePersister.PersistMessage(messageId, CreateMessageStream(e.Message)); } if (handler == null && defaultHandler == null) { throw new InvalidOperationException(String.Format("Cannot find message handler for '{0}'", messageType)); } e.Response = (handler ?? defaultHandler).Handler.HandleMessage(e); if (e.Response == null) { throw new InvalidOperationException("Couldn't process message"); } msgTerser = new Terser(e.Response); if (messagePersister != null) { messagePersister.PersistResultMessage(msgTerser.Get("/MSH-10"), messageId, CreateMessageStream(e.Response)); } break; case MessageState.Active: throw new InvalidOperationException("Message already in progress"); case MessageState.Complete: NHapi.Base.Parser.PipeParser pp = new NHapi.Base.Parser.PipeParser(); using (var rdr = new StreamReader(messagePersister.GetMessageResponseMessage(messageId))) e.Response = pp.Parse(rdr.ReadToEnd()); break; } }