using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Model.Events;
using MediaBrowser.Model.Services;
using Microsoft.AspNetCore.Http;
namespace MediaBrowser.Controller.Net
{
    /// 
    /// Interface IHttpServer
    /// 
    public interface IHttpServer : IDisposable
    {
        /// 
        /// Gets the URL prefix.
        /// 
        /// The URL prefix.
        string[] UrlPrefixes { get; }
        /// 
        /// Stops this instance.
        /// 
        void Stop();
        /// 
        /// Occurs when [web socket connected].
        /// 
        event EventHandler> WebSocketConnected;
        /// 
        /// Inits this instance.
        /// 
        void Init(IEnumerable services, IEnumerable listener, IEnumerable urlPrefixes);
        /// 
        /// If set, all requests will respond with this message
        /// 
        string GlobalResponse { get; set; }
        /// 
        /// Sends the http context to the socket listener
        /// 
        /// 
        /// 
        Task ProcessWebSocketRequest(HttpContext ctx);
        /// 
        /// The HTTP request handler
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        Task RequestHandler(IHttpRequest httpReq, string urlString, string host, string localPath,
            CancellationToken cancellationToken);
    }
}