Added the ability for the server to handle byte-range requests, and also added a static file handler to utilize it

This commit is contained in:
LukePulverenti Luke Pulverenti luke pulverenti
2012-08-10 09:07:58 -04:00
parent dce7706382
commit 2536011247
7 changed files with 548 additions and 223 deletions

View File

@@ -4,10 +4,10 @@ using System.Reactive.Linq;
namespace MediaBrowser.Common.Net
{
public class HttpServer : IObservable<RequestContext>, IDisposable
public class HttpServer : IObservable<HttpListenerContext>, IDisposable
{
private readonly HttpListener listener;
private readonly IObservable<RequestContext> stream;
private readonly IObservable<HttpListenerContext> stream;
public HttpServer(string url)
{
@@ -17,12 +17,11 @@ namespace MediaBrowser.Common.Net
stream = ObservableHttpContext();
}
private IObservable<RequestContext> ObservableHttpContext()
private IObservable<HttpListenerContext> ObservableHttpContext()
{
return Observable.Create<RequestContext>(obs =>
return Observable.Create<HttpListenerContext>(obs =>
Observable.FromAsyncPattern<HttpListenerContext>(listener.BeginGetContext,
listener.EndGetContext)()
.Select(c => new RequestContext(c))
.Subscribe(obs))
.Repeat()
.Retry()
@@ -34,7 +33,7 @@ namespace MediaBrowser.Common.Net
listener.Stop();
}
public IDisposable Subscribe(IObserver<RequestContext> observer)
public IDisposable Subscribe(IObserver<HttpListenerContext> observer)
{
return stream.Subscribe(observer);
}