public DSTDContext(Server server, string requestHeader, Action<Page, Guid> g, Action<Guid, Dictionary<string, object>, Dictionary<string, object>> o, Page.GetApplication p) { OnGrabSession += g; myServer = server; OnSetSession += o; DSTDQuery query = new DSTDQuery(getURL(requestHeader)); XmlDocument doc = getXML(requestHeader); Request = new DSTDRequest(this,query, doc,p); Request.Start(); }
public DSTDRequest(DSTDContext that, DSTDQuery q, XmlDocument state, Page.GetApplication p) { Context = that; State = state; Query = q; getApplication = p; Page h; if (File.Exists(Context.myServer.localDirectory + Query.File.TrimStart('/') + ".dstd")) { CompileDSTD compile = CompileDSTD.CompileDSTDPage(Context, Context.myServer.localDirectory + Query.File.TrimStart('/'), Query.File.TrimStart('/')); h = (Page)compile.Compiled; } else { return; } h.UserQuery = q.UserQuery; CurrentPage = h; }
public void TransferToPage(string Page) { DSTDQuery q = new DSTDQuery(Page); DSTDRequest r = new DSTDRequest(this.Context, q, null, getApplication); r.CurrentPage.FullRender = false; r.CurrentPage.CurrentGUID = this.CurrentPage.CurrentGUID; r.CurrentPage.IsPostBack = false; r.Start(); r.CurrentPage.PanelToUpdate = "theBody"; CurrentPage = r.CurrentPage; }
private void ReadHeader(Socket sock, DSTDData ds) { string d = ds.sb.ToString(); if (d.Contains("<top>") && !d.Contains("</top>")) d += "</top>"; DSTDQuery q = new DSTDQuery(DSTDContext.getURL(d)); if (q.File.TrimStart('/')=="favicon.ico") return; localDirectory = Directory.GetCurrentDirectory() + "\\"; if (File.Exists(localDirectory + q.File.TrimStart('/'))) { StreamReader sr = new StreamReader(File.OpenRead(localDirectory + q.File.TrimStart('/'))); writeBack(sr.ReadToEnd(), sock); sr.Close(); return; } //K:\My Applications\Sals\WebServer\WebServer\ if (File.Exists(@"" + q.File.TrimStart('/'))) { StreamReader sr = new StreamReader(File.OpenRead(@"" + q.File.TrimStart('/'))); writeBack(sr.ReadToEnd(), sock); sr.Close(); return; } DSTDContext context = new DSTDContext(this,ds.sb.ToString(), GrabSession, SetSession, GrabApplication); string str = context.Request.CurrentPage.OnRender(); string ty = ""; if (context.Request.CurrentPage.PanelToUpdate != "" || !context.Request.CurrentPage.FullRender ) ty = "text/xml"; else ty = "text/html"; context.SetSession(context.Request.CurrentPage.CurrentGUID, context.Request.CurrentPage.Session, context.Request.CurrentPage.GetPrivateSession()); string s = GetHeader(str.Length, "200", ty); s += str; writeBack(s, sock); ds.Start.Stop(); average += ds.Start.Elapsed.TotalMilliseconds; averagecount++; Console.WriteLine(ds.Start.Elapsed.TotalMilliseconds.ToString() + " " + (average / averagecount)); }