private void Build(Program program) { var eventListener = new FakeDecompilerEventListener(); var sc = new ServiceContainer(); sc.AddService <DecompilerEventListener>(eventListener); var dfa = new DataFlowAnalysis(program, null, sc); var ssts = dfa.UntangleProcedures(); foreach (Procedure proc in program.Procedures.Values) { var sst = ssts.Single(s => s.SsaState.Procedure == proc); var ssa = sst.SsaState; Coalescer coa = new Coalescer(ssa); coa.Transform(); DeadCode.Eliminate(ssa); LiveCopyInserter lci = new LiveCopyInserter(ssa); lci.Transform(); WebBuilder web = new WebBuilder(program, ssa, new Dictionary <Identifier, LinearInductionVariable>(), eventListener); web.Transform(); ssa.ConvertBack(false); } }
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog() .ConfigureWebHostDefaults(WebBuilder => { WebBuilder.UseStartup <Startup>(); });
public async Task Can_serve_embedded_files() { var embeddedFiles = new EmbeddedFileProvider(typeof(EmbeddedFileProviderTests).Assembly, "Statik.Tests.Embedded"); var webBuilder = new WebBuilder(new HostBuilder()); webBuilder.RegisterFileProvider(embeddedFiles); using (var host = webBuilder.BuildVirtualHost()) { using (var client = host.CreateClient()) { var responseMessage = await client.GetAsync("/file1.txt"); responseMessage.EnsureSuccessStatusCode(); var response = await responseMessage.Content.ReadAsStringAsync(); Assert.Equal("file1content", response); responseMessage = await client.GetAsync("/nested/nested2/file5.txt"); responseMessage.EnsureSuccessStatusCode(); response = await responseMessage.Content.ReadAsStringAsync(); Assert.Equal("file5content", response); } } using (var host = webBuilder.BuildVirtualHost("/appbase")) { using (var client = host.CreateClient()) { var responseMessage = await client.GetAsync("/file1.txt"); responseMessage.EnsureSuccessStatusCode(); var response = await responseMessage.Content.ReadAsStringAsync(); Assert.Equal("file1content", response); responseMessage = await client.GetAsync("/nested/nested2/file5.txt"); responseMessage.EnsureSuccessStatusCode(); response = await responseMessage.Content.ReadAsStringAsync(); Assert.Equal("file5content", response); } } }
private void Build(Program program) { var eventListener = new FakeDecompilerEventListener(); DataFlowAnalysis dfa = new DataFlowAnalysis(program, null, eventListener); dfa.UntangleProcedures(); foreach (Procedure proc in program.Procedures.Values) { Aliases alias = new Aliases(proc, program.Architecture); alias.Transform(); var gr = proc.CreateBlockDominatorGraph(); SsaTransform sst = new SsaTransform(dfa.ProgramDataFlow, proc, null, gr, new HashSet <RegisterStorage>()); SsaState ssa = sst.SsaState; ConditionCodeEliminator cce = new ConditionCodeEliminator(ssa, program.Platform); cce.Transform(); DeadCode.Eliminate(proc, ssa); var vp = new ValuePropagator(program.Architecture, ssa, eventListener); vp.Transform(); DeadCode.Eliminate(proc, ssa); Coalescer coa = new Coalescer(proc, ssa); coa.Transform(); DeadCode.Eliminate(proc, ssa); LiveCopyInserter lci = new LiveCopyInserter(proc, ssa.Identifiers); lci.Transform(); WebBuilder web = new WebBuilder(proc, ssa.Identifiers, new Dictionary <Identifier, LinearInductionVariable>()); web.Transform(); ssa.ConvertBack(false); } }
DataSet IDataService.SaveData(DataSet dataSet, string sessionId, string circulatingId, bool updateVersion) { IDataManager dm = EntityManager.FromDataSetAndBaseService(dataSet, "MyDataService"); IEntityManager em = dm as IEntityManager; var log = new AspectizeTaskLoggingHelper(); var currentSessionId = circulatingId; var appName = "PlayGroundRT"; Session session = null; var sessions = em.GetAllInstances <Session>(); if (sessions.Count > 0) { session = sessions[0]; } else { session = dm.GetEntity <Session>(circulatingId); } if (updateVersion) { NextId nextId = null; var nextIdSession = ""; if (currentSessionId.Contains("-")) { var parts = currentSessionId.Split('-'); nextIdSession = parts[0]; } else { nextIdSession = currentSessionId; } nextId = dm.GetEntity <NextId>(nextIdSession); if (nextId != null) { nextId.Version++; } else { nextId = em.CreateInstance <NextId>(); nextId.Id = session.Id; nextId.Version = 1; } currentSessionId = string.Format("{0}-{1}", nextId.Id, nextId.Version); session.Id = currentSessionId; session.Persist = true; session.data.AcceptChanges(); session.data.SetAdded(); } var controlInfos = WebBuilder.BuildHtml(appName, session.Html, session.JSLibrary, log); string jsonControlInfos = JsonSerializer.Serialize(controlInfos); session.HtmlControlInfoJSON = jsonControlInfos; IFileService fs = ExecutingContext.GetService <IFileService>("MyFileService"); var typeInfo = fs.Read("PlayGroundRT.Types.Intellisense.txt"); System.IO.StreamReader reader = new System.IO.StreamReader(typeInfo); string allTypesInfo = reader.ReadToEnd(); //var typeInfoString = System.Text.Encoding.UTF8.GetString(text); var ctrinfos = WebBuilder.BuildTypeDefinitionControl(appName, controlInfos); var indexControls = allTypesInfo.IndexOf("aas:'Controls'") + "aas:'Controls'".Length; allTypesInfo = allTypesInfo.Substring(0, indexControls) + ctrinfos + allTypesInfo.Substring(indexControls); var javaScriptCommandInfos = WebTypeInfo.BuildJavascriptCommandInfo(session.js); var serviceInfos = WebBuilder.BuildTypeDefinitionBrowserServices(javaScriptCommandInfos); var indexBrowserServices = allTypesInfo.IndexOf("aas:'BrowserServices'") + "aas:'BrowserServices'".Length; allTypesInfo = allTypesInfo.Substring(0, indexBrowserServices) + serviceInfos + allTypesInfo.Substring(indexBrowserServices); var clientSchema = JavascriptEntityDeclaration.Translate(session.MainJS); var indexContextData = allTypesInfo.IndexOf("aas:'ContextData'") + "aas:'ContextData'".Length; allTypesInfo = allTypesInfo.Substring(0, indexContextData) + "," + clientSchema + allTypesInfo.Substring(indexContextData); var jsView = WebBuilder.BuildViews(appName, session.Bindings, allTypesInfo, log); session.JSView = jsView; var jsLibrary = WebBuilder.BuildJSLibrary(appName, session.js, log); session.JSLibrary = jsLibrary; session.Log = log.ToString(); session.CirculatingId = currentSessionId; dm.SaveTransactional(); //Create new Entity with same id for result IEntityManager emResult = EntityManager.FromDataSet(DataSetHelper.Create()); Session sessionResult = emResult.CreateInstance <Session>(); sessionResult.Id = sessionId; foreach (DataColumn dc in session.data.Table.Columns) { if (dc.ColumnName != PlayGround.Session.Fields.Id) { sessionResult.data[dc.ColumnName] = session.data[dc.ColumnName]; } } emResult.Data.AcceptChanges(); return(emResult.Data); }