sharp-application-server/server/ApplicationServer.cs

42 lines
1.1 KiB
C#

using System;
using System.Collections.Generic;
using appsrv.resources;
using System.Linq;
namespace appsrv.server
{
public class ApplicationServer
{
public Resource DefaultRoot { get; set; }
Dictionary<String, Resource> roots = new Dictionary<string, Resource>();
public ApplicationServer()
{
}
public void AddRoot(String name,Resource rootResource){
roots.Add(name, rootResource);
if (DefaultRoot == null){
DefaultRoot = rootResource;
}
}
public Resource FindRoot(String rootName)
{
if (roots.ContainsKey(rootName))
return roots[rootName];
return DefaultRoot;
}
public void HandleRequest(HttpRequest request){
Resource rootResource = FindRoot(request.Hostname);
Stack<String> requestPath = new Stack<string>(request.URI.AbsolutePath.Split(new char[] { '/' },StringSplitOptions.RemoveEmptyEntries).Reverse());
rootResource.Request(requestPath, request);
}
}
}