/// <summary> /// Initializes an instance of the <see cref="MessageToServiceMapper"/> class. /// </summary> /// <param name="messageTypeCache">The message type cache.</param> /// <param name="logger">The logger.</param> public MessageToServiceMapper(IClientMessageTypeCache messageTypeCache, ILogger <MessageToServiceMapper> logger) { _logger = logger; _logger.LogInformation("Mapping messages to services..."); foreach (Type type in messageTypeCache.GetMessageTypes()) { string typename = type.FullName ?? ""; Match match = _regex.Match(typename); if (match.Success) { ServiceTypeCache.AddOrUpdate( match.Groups[0].Value, value => new List <Type>() { type }, (value, list) => { list.Add(type); return(list); }); } } _cancellationTokenSource = new CancellationTokenSource(); _logger.LogInformation("Finished Mapping messages to services!"); }
/// <summary> /// Initializes an instance of the <see cref="ClientMessageProcessor"/> class. /// </summary> /// <param name="messageToServiceMapper">The message to service mapper.</param> /// <param name="messageSerializer">The message serializer.</param> /// <param name="messageQueueConfigurationOptions">The message queue configuration options.</param> /// <param name="serviceMessageProcessor">The service message processor.</param> /// <param name="messageTypeCache">The message type cache.</param> /// <param name="clientMessageProcessorLogger">The client message processor logger.</param> /// <param name="sslWSNetworkConnectorLogger">The ssl websocket network connector logger.</param> /// <param name="wsHandshakeLogger">The websocket handshake logger.</param> public ClientMessageProcessor( IMessageToServiceMapper messageToServiceMapper, IMessageSerializer messageSerializer, IOptions <MessageQueueConfiguration> messageQueueConfigurationOptions, IServiceMessageProcessor serviceMessageProcessor, IClientMessageTypeCache messageTypeCache, ILogger <ClientMessageProcessor> clientMessageProcessorLogger, ILogger <SslWSNetworkConnector> sslWSNetworkConnectorLogger, ILogger <NeuralmWSHandshakeHandler> wsHandshakeLogger) { _messageToServiceMapper = messageToServiceMapper; _messageSerializer = messageSerializer; _messageQueueConfiguration = messageQueueConfigurationOptions.Value; _serviceMessageProcessor = serviceMessageProcessor; _messageTypeCache = messageTypeCache; _clientMessageProcessorLogger = clientMessageProcessorLogger; _sslWSNetworkConnectorLogger = sslWSNetworkConnectorLogger; _wsHandshakeLogger = wsHandshakeLogger; _tcpListener = new TcpListener(IPAddress.Any, _messageQueueConfiguration.Port); }