public MainForm() { InitializeComponent(); webViewDelegate = new WebViewDelegate(updateWebView); temporaryStorage = new TemporaryStorage(); loadPreferences(); }
/// <summary> /// Ensures that the cache is not expired. /// </summary> private void EnsureExpiration() { bool cacheExpired = false; long maxAge = -1, expires = -1; string key = "HttpCache:EnsureExpiration"; if (!TemporaryStorage.Contains(key)) { cacheExpired = !CanCache(); if (!cacheExpired) { if (Flags.ContainsKey("max-age") && long.TryParse(Flags["max-age"], out maxAge) && maxAge > 0) { cacheExpired = new DateTime(Created + maxAge).Ticks < DateTime.UtcNow.Ticks; } else if (Flags.ContainsKey("expires") && long.TryParse(Flags["expires"], out expires)) { cacheExpired = new DateTime(expires).Ticks < DateTime.UtcNow.Ticks; } } if (cacheExpired) { ClearItems(); } TemporaryStorage.Set(key, true); } }
void OnPlayerInput(BasePlayer player, InputState input) { if (!isEditing) { return; } if (!input.WasJustPressed(BUTTON.USE)) { return; } for (int i = 0; i < tempPlayers.Count; i++) { TemporaryStorage storage = tempPlayers[i]; if (storage.Player.userID == player.userID) { Ray ray = player.eyes.HeadRay(); RaycastHit hit; if (Physics.Raycast(ray, out hit, 10)) { JVector3 bottomPoint = new JVector3(hit.point); JVector3 topPoint = storage.Fixed ? new JVector3(hit.point.x, storage.Height, hit.point.z) : new JVector3(hit.point.x, hit.point.y + storage.Height, hit.point.z); storage.Zone.Vertices.Add(bottomPoint); storage.Zone.Vertices.Add(topPoint); ShowPoint(player, bottomPoint.ToUnity(), topPoint.ToUnity(), 2f); } } } }
private bool LoadSegment(NeSegment neSeg, ByteMemoryArea mem) { Array.Copy( RawImage, (uint)neSeg.DataOffset << this.cbFileAlignmentShift, mem.Bytes, neSeg.LinearAddress - (int)mem.BaseAddress.ToLinear(), neSeg.DataLength); AccessMode access = (neSeg.Flags & 1) != 0 ? AccessMode.ReadWrite : AccessMode.ReadExecute; var seg = this.segmentMap.AddSegment( mem, neSeg.Address.Selector.Value.ToString("X4"), access); var stg = new TemporaryStorage( string.Format("seg{0:X4}", seg.Address.Selector.Value), 0, PrimitiveType.SegmentSelector); seg.Identifier = new Identifier(seg.Name, stg.DataType, stg); if ((neSeg.Flags & NE_STFLAGS_RELOCATIONS) == 0) { return(true); } var rdr = new LeImageReader( RawImage, neSeg.DataLength + ((uint)neSeg.DataOffset << this.cbFileAlignmentShift)); int count = rdr.ReadLeInt16(); return(ApplyRelocations(rdr, count, neSeg)); }
public void RemoveTest() { // Create the component under testing. var CuT = new TemporaryStorage <string>(); // Assert adding strings. Assert.AreEqual(CuT.Store("Test1"), 0); Assert.AreEqual(CuT.Store("Test2"), 1); Assert.AreEqual(CuT.Store("Test3"), 2); // Assert the strings can be fetched correctly. Assert.AreEqual(CuT.Get(0), "Test1"); Assert.AreEqual(CuT.Get(1), "Test2"); Assert.AreEqual(CuT.Get(2), "Test3"); // Remove 2 strings and assert they were removed. CuT.Remove(0); CuT.Remove(2); Assert.AreEqual(CuT.Get(0), null); Assert.AreEqual(CuT.Get(1), "Test2"); Assert.AreEqual(CuT.Get(2), null); // Assert adding new strings. Assert.AreEqual(CuT.Store("Test4"), 0); Assert.AreEqual(CuT.Store("Test5"), 2); Assert.AreEqual(CuT.Store("Test6"), 3); // Assert the strings can be fetched correctly. Assert.AreEqual(CuT.Get(0), "Test4"); Assert.AreEqual(CuT.Get(1), "Test2"); Assert.AreEqual(CuT.Get(2), "Test5"); Assert.AreEqual(CuT.Get(3), "Test6"); }
public TraceFormatter(bool saveTrace) { if (saveTrace) { this.traceStream = TemporaryStorage.Create(); this.traceWriter = new StreamWriter(this.traceStream); } }
public Identifier Temp(string name, TemporaryStorage stg) { var id = new Identifier(stg.Name, stg.DataType, stg); var sid = new SsaIdentifier(id, id, null, null, false); Ssa.Identifiers.Add(id, sid); return(sid.Identifier); }
public override Expression CreateStackAccess(IStorageBinder binder, int cbOffset, DataType dataType) { Services.RequireService <DecompilerEventListener>().Warn( "Basic doesn't have the notion of a parameter stack."); var stg = new TemporaryStorage("sp" + cbOffset, 0, dataType); return(new Identifier("sp" + cbOffset, dataType, stg)); }
protected override void MessageWriteToMime(StorageFxProxyPool.MessageEntry entry, byte[] buffer) { if (entry.MimeStream == null) { entry.MimeStream = TemporaryStorage.Create(); } entry.MimeStream.Write(buffer, 0, buffer.Length); }
public Identifier VisitTemporaryStorage(TemporaryStorage temp) { if (!tmps.TryGetValue(temp, out var id)) { id = procCalling.Frame.CreateTemporary(temp.DataType); tmps.Add(temp, id); } return(id); }
public void StoreTest() { // Create the component under testing. var CuT = new TemporaryStorage <string>(); // Assert adding strings. Assert.AreEqual(CuT.Store("Test1"), 0); Assert.AreEqual(CuT.Store("Test2"), 1); Assert.AreEqual(CuT.Store("Test3"), 2); }
public Identifier VisitTemporaryStorage(TemporaryStorage tmp) { var tmp2 = frame.FindTemporary(tmp.Name); if (tmp2 != null) { return(tmp2); } return(frame.CreateTemporary(id.DataType)); }
//init public GeneratorSetup() { _reflectionInvoker = new ReflectionInvoker(); EntityDescriptions = new Dictionary <Type, IEntityDescription>(); TemporaryStorage = new TemporaryStorage(); DefaultSpreadStrategy = new EvenSpreadStrategy(); DefaultFlushStrategy = new LimitedCapacityFlushStrategy(100); DefaultPersistentStorages = new List <IPersistentStorage>(); Supervisor = new CompleteSupervisor(); }
public void Relocate(Program program, Address addrLoad) { SegmentMap imageMap = segmentMap; EndianImageReader rdr = new LeImageReader(ExeLoader.RawImage, ExeLoader.e_lfaRelocations); int i = ExeLoader.e_cRelocations; var segments = new Dictionary <Address, ushort>(); var linBase = addrLoad.ToLinear(); segmentMap.AddOverlappingSegment( addrLoad.Selector !.Value !.ToString("X4"), imgLoaded, addrLoad, AccessMode.ReadWriteExecute); segments.Add(addrLoad, addrLoad.Selector.Value); while (i != 0) { uint offset = rdr.ReadLeUInt16(); ushort segOffset = rdr.ReadLeUInt16(); offset += segOffset * 0x0010u; ushort seg = (ushort)(imgLoaded.ReadLeUInt16(offset) + addrLoad.Selector.Value); imgLoaded.WriteLeUInt16(offset, seg); var segment = AddSegmentReference(offset + linBase, seg); segments[segment.Address] = seg; --i; } // Create an identifier for each segment. foreach (var de in segments) { var tmp = new TemporaryStorage( string.Format("seg{0:X4}", de.Value), 0, PrimitiveType.SegmentSelector); segmentMap.Segments[de.Key].Identifier = new Identifier( tmp.Name, PrimitiveType.SegmentSelector, tmp); } // Found the start address. Address addrStart = Address.SegPtr((ushort)(ExeLoader.e_cs + addrLoad.Selector.Value), ExeLoader.e_ip); segmentMap.AddSegment(new ImageSegment( addrStart.Selector !.Value.ToString("X4"), Address.SegPtr(addrStart.Selector.Value, 0), imgLoaded, AccessMode.ReadWriteExecute)); DumpSegments(imageMap); }
/// <summary> /// Adds or updates the item with the given key. /// </summary> /// <param name="key">Item key.</param> /// <param name="value">Item value.</param> protected override void SetItem(string key, object value) { if (CanCache()) { base.SetItem(key, value); } else { TemporaryStorage.Set(key, value); } }
public Storage VisitTemporaryStorage(TemporaryStorage temp) { if (defining) { regDefs[temp] = value; } else { value = null; regDefs.TryGetValue(temp, out value); } return(temp); }
/// <summary> /// Returns value indicating whether items can be added or updated. /// </summary> /// <returns>Value indicating whether items can be added or updated.</returns> private bool CanCache() { bool ret = true; string key = "HttpCache:CanCache"; if (!TemporaryStorage.Contains(key)) { TemporaryStorage.Set(key, !Flags.ContainsKey("no-cache") && !Flags.ContainsKey("no-store")); } ret = TemporaryStorage.Get <bool>(key); return(ret); }
public void EqSegmentConstantsWithAllocatedSegment() { var tmp = new TemporaryStorage("seg1234", 0, PrimitiveType.SegmentSelector); var segment = new ImageSegment( "seg1234", new ByteMemoryArea(Address.SegPtr(0x1234, 0), new byte[100]), AccessMode.ReadWriteExecute) { Identifier = new Identifier(tmp.Name, PrimitiveType.SegmentSelector, tmp) }; eqb.EnsureSegmentTypeVariables(new[] { segment }); Constant seg1 = Constant.Create(PrimitiveType.SegmentSelector, 0x1234); seg1.Accept(eqb); Assert.AreSame(seg1.TypeVariable.Class, segment.Identifier.TypeVariable.Class); }
public void GetTest() { // Create the component under testing. var CuT = new TemporaryStorage <string>(); // Assert adding strings. Assert.AreEqual(CuT.Store("Test1"), 0); Assert.AreEqual(CuT.Store("Test2"), 1); Assert.AreEqual(CuT.Store("Test3"), 2); // Assert the strings can be fetched correctly. Assert.AreEqual(CuT.Get(0), "Test1"); Assert.AreEqual(CuT.Get(1), "Test2"); Assert.AreEqual(CuT.Get(2), "Test3"); }
//init public TemporaryStorageTests() { var fileRepository = new FileRepository(); _tempStorage = new TemporaryStorage <SignalEvent <long> >(fileRepository); string storageFolder = _tempStorage.GetStorageFolder(); DirectoryInfo directory = new DirectoryInfo(storageFolder); if (directory.Exists) { foreach (FileInfo file in directory.GetFiles()) { file.Delete(); } } }
/// <summary> /// Retrieves the item with the given key from the cache. /// </summary> /// <param name="key">Item key.</param> /// <returns>Item value.</returns> protected override object GetItem(string key) { object ret = null; EnsureExpiration(); if (CanCache()) { ret = base.GetItem(key); } else { ret = TemporaryStorage.Get(key); } return(ret); }
/// <summary> /// Ensures that flags are loaded. /// </summary> private void EnsureFlags() { string[] v = null; string expires = string.Empty; string cacheControl = string.Empty; string key = "HttpCache:EnsureFlags"; DateTime expiresDate = DateTime.MinValue; if (!TemporaryStorage.Contains(key)) { expires = HttpContext.Current.Request.Headers["Expires"]; cacheControl = HttpContext.Current.Request.Headers["Cache-Control"]; Flags = new Dictionary <string, string>(); if (!string.IsNullOrEmpty(cacheControl)) { foreach (string pair in cacheControl.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) { v = pair.ToLowerInvariant().Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries); if (v.Any()) { if (!Flags.ContainsKey(v[0])) { Flags.Add(v[0], v.Length > 1 ? v[1] : string.Empty); } else { Flags[v[0]] = v[1]; } } } } if (!Flags.ContainsKey("expires") && !string.IsNullOrEmpty(expires) && DateTime.TryParseExact(expires, "ddd, dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture, DateTimeStyles.None, out expiresDate)) { Flags.Add("expires", expiresDate.Ticks.ToString()); } TemporaryStorage.Set(key, true); } }
void CommandAdd(BasePlayer player, float height, string name = null, bool fixedHeight = false) { player.ChatMessage(Lang("AddHelp", player)); isEditing = true; TemporaryStorage storage = new TemporaryStorage(); storage.Player = player; storage.Zone = new ZoneDefinition { Id = GenerateId() }; storage.Height = height; storage.Fixed = fixedHeight; storage.Zone.Name = name; storage.Timer = timer.Repeat(5f, 0, () => { JVector3 prevVector = null; foreach (JVector3 vector in storage.Zone.Vertices) { if (prevVector == null) { prevVector = vector; continue; } ShowPoint(player, prevVector.ToUnity(), vector.ToUnity(), 5.5f); prevVector = null; } }); tempPlayers.Add(storage); }
public Storage VisitTemporaryStorage(TemporaryStorage tmp) { if (define) { if (liveStackVars.ContainsKey(tmp)) { defBitSize = liveStackVars[tmp]; liveStackVars.Remove(tmp); } defOffset = 0; } else { if (liveStackVars.ContainsKey(tmp)) { liveStackVars[tmp] = Math.Max(useBitSize, liveStackVars[tmp]); } else { liveStackVars.Add(tmp, useBitSize != 0 ? useBitSize : (int)tmp.DataType.BitSize); } } return(null); }
public bool VisitTemporaryStorage(TemporaryStorage temp, bool defining) { return(true); }
public override RelocationResults Relocate(Program program, Address addrLoad) { SegmentMap imageMap = segmentMap; ImageReader rdr = new LeImageReader(exe.RawImage, (uint) exe.e_lfaRelocations); var relocations = imgLoaded.Relocations; int i = exe.e_cRelocations; var segments = new Dictionary<Address, ushort>(); while (i != 0) { uint offset = rdr.ReadLeUInt16(); ushort segOffset = rdr.ReadLeUInt16(); offset += segOffset * 0x0010u; ushort seg = (ushort) (imgLoaded.ReadLeUInt16(offset) + addrLoad.Selector.Value); imgLoaded.WriteLeUInt16(offset, seg); relocations.AddSegmentReference(offset, seg); var segment = new ImageSegment( seg.ToString("X4"), Address.SegPtr(seg, 0), imgLoaded, AccessMode.ReadWriteExecute); segment = segmentMap.AddSegment(segment); segments[segment.Address] = seg; --i; } // Create an identifier for each segment. foreach (var de in segments) { var tmp = new TemporaryStorage( string.Format("seg{0:X4}", de.Value), 0, PrimitiveType.SegmentSelector); segmentMap.Segments[de.Key].Identifier = new Identifier( tmp.Name, PrimitiveType.SegmentSelector, tmp); } // Found the start address. Address addrStart = Address.SegPtr((ushort)(exe.e_cs + addrLoad.Selector.Value), exe.e_ip); segmentMap.AddSegment(new ImageSegment( addrStart.Selector.Value.ToString("X4"), Address.SegPtr(addrStart.Selector.Value, 0), imgLoaded, AccessMode.ReadWriteExecute)); DumpSegments(imageMap); var ep = new ImageSymbol(addrStart) { Type = SymbolType.Procedure, ProcessorState = arch.CreateProcessorState() }; var sym = platform.FindMainProcedure(program, addrStart); var results = new RelocationResults( new List<ImageSymbol> { ep }, new SortedList<Address, ImageSymbol> { { ep.Address, ep } }); if (sym != null) { results.Symbols[sym.Address] = sym; ep.NoDecompile = true; } return results; }
public Identifier Temp(string name, TemporaryStorage stg) { var id = new Identifier(stg.Name, stg.DataType, stg); return(MakeSsaIdentifier(id, name)); }
private Identifier Id(string name, DataType dt) { var tmp = new TemporaryStorage(name, -42, dt); return(new Identifier(name, dt, tmp)); }
public Identifier VisitTemporaryStorage(TemporaryStorage temp) { return(procCalling.Frame.CreateTemporary(Identifier.Name, Identifier.DataType)); }
public Identifier VisitTemporaryStorage(TemporaryStorage tmp) { return(frame.CreateTemporary(id.DataType)); }
public override RelocationResults Relocate(Program program, Address addrLoad) { SegmentMap imageMap = segmentMap; EndianImageReader rdr = new LeImageReader(exe.RawImage, exe.e_lfaRelocations); var relocations = imgLoaded.Relocations; int i = exe.e_cRelocations; var segments = new Dictionary <Address, ushort>(); var linBase = addrLoad.ToLinear(); while (i != 0) { uint offset = rdr.ReadLeUInt16(); ushort segOffset = rdr.ReadLeUInt16(); offset += segOffset * 0x0010u; ushort seg = (ushort)(imgLoaded.ReadLeUInt16(offset) + addrLoad.Selector.Value); imgLoaded.WriteLeUInt16(offset, seg); relocations.AddSegmentReference(offset + linBase, seg); var segment = new ImageSegment( seg.ToString("X4"), Address.SegPtr(seg, 0), imgLoaded, AccessMode.ReadWriteExecute); segment = segmentMap.AddSegment(segment); segments[segment.Address] = seg; --i; } // Create an identifier for each segment. foreach (var de in segments) { var tmp = new TemporaryStorage( string.Format("seg{0:X4}", de.Value), 0, PrimitiveType.SegmentSelector); segmentMap.Segments[de.Key].Identifier = new Identifier( tmp.Name, PrimitiveType.SegmentSelector, tmp); } // Found the start address. Address addrStart = Address.SegPtr((ushort)(exe.e_cs + addrLoad.Selector.Value), exe.e_ip); segmentMap.AddSegment(new ImageSegment( addrStart.Selector.Value.ToString("X4"), Address.SegPtr(addrStart.Selector.Value, 0), imgLoaded, AccessMode.ReadWriteExecute)); DumpSegments(imageMap); var ep = new ImageSymbol(addrStart) { Type = SymbolType.Procedure, ProcessorState = arch.CreateProcessorState() }; var sym = platform.FindMainProcedure(program, addrStart); var results = new RelocationResults( new List <ImageSymbol> { ep }, new SortedList <Address, ImageSymbol> { { ep.Address, ep } }); if (sym != null) { results.Symbols[sym.Address] = sym; ep.NoDecompile = true; } try { LoadDebugSymbols(results.Symbols, addrLoad); } catch (Exception ex) { var listener = Services.RequireService <DecompilerEventListener>(); listener.Error( new NullCodeLocation(Filename), ex, "Detected Borland debug symbols but failed to load them."); } return(results); }
public void EqSegmentConstantsWithAllocatedSegment() { var tmp = new TemporaryStorage("seg1234", 0, PrimitiveType.SegmentSelector); var segment = new ImageSegment( "seg1234", new MemoryArea(Address.SegPtr(0x1234, 0), new byte[100]), AccessMode.ReadWriteExecute) { Identifier = new Identifier(tmp.Name, PrimitiveType.SegmentSelector, tmp) }; eqb.EnsureSegmentTypeVariables(new[] { segment }); Constant seg1 = Constant.Create(PrimitiveType.SegmentSelector, 0x1234); seg1.Accept(eqb); Assert.AreSame(seg1.TypeVariable.Class, segment.Identifier.TypeVariable.Class); }