public OutboundQueueListener(IQueueManager queueManager, IWebSocketResponseHandler responseHandler, IAuditLoggerFactory auditLoggerFactory, ILogger <OutboundQueueListener> logger) { _queueManager = queueManager; _responseHandler = responseHandler; _auditLoggerFactory = auditLoggerFactory; _logger = logger; }
private async Task ListenerLoop(CancellationToken token) { while (_httpListener.IsListening && !token.IsCancellationRequested) { HttpListenerContext context = await _httpListener.GetContextAsync().ConfigureAwait(false); if (context.Request.IsWebSocketRequest) { IWebSocketResponseHandler webSocket = _webSocketHandlerFactory.Invoke(context, token); webSocket.OnClosing += () => _webSocketSubscribers.Remove(webSocket); _webSocketSubscribers.Add(webSocket); webSocket.Handle(); } else if (!_httpHandlerFactory .Invoke(context, _repository) .Handle( entity => CreateNetworkPacket(entity, BaseUri).Serialize(), entities => _entityListSerializer.Serialize(entities.Select(e => Mapper.MapWebModelToDataModelEntities(e)).ToArray()))) { Stop(); } } }