コード例 #1
0
 public MainForm()
 {
     InitializeComponent();
     webViewDelegate  = new WebViewDelegate(updateWebView);
     temporaryStorage = new TemporaryStorage();
     loadPreferences();
 }
コード例 #2
0
ファイル: HttpCache.cs プロジェクト: ADoublePlus/Web-Caching
        /// <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);
            }
        }
コード例 #3
0
ファイル: RectZones.cs プロジェクト: romgerman/RustPlugins
        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);
                    }
                }
            }
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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");
        }
コード例 #6
0
 public TraceFormatter(bool saveTrace)
 {
     if (saveTrace)
     {
         this.traceStream = TemporaryStorage.Create();
         this.traceWriter = new StreamWriter(this.traceStream);
     }
 }
コード例 #7
0
ファイル: SsaProcedureBuilder.cs プロジェクト: zan00789/reko
        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);
        }
コード例 #8
0
        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));
        }
コード例 #9
0
 protected override void MessageWriteToMime(StorageFxProxyPool.MessageEntry entry, byte[] buffer)
 {
     if (entry.MimeStream == null)
     {
         entry.MimeStream = TemporaryStorage.Create();
     }
     entry.MimeStream.Write(buffer, 0, buffer.Length);
 }
コード例 #10
0
 public Identifier VisitTemporaryStorage(TemporaryStorage temp)
 {
     if (!tmps.TryGetValue(temp, out var id))
     {
         id = procCalling.Frame.CreateTemporary(temp.DataType);
         tmps.Add(temp, id);
     }
     return(id);
 }
コード例 #11
0
        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);
        }
コード例 #12
0
        public Identifier VisitTemporaryStorage(TemporaryStorage tmp)
        {
            var tmp2 = frame.FindTemporary(tmp.Name);

            if (tmp2 != null)
            {
                return(tmp2);
            }
            return(frame.CreateTemporary(id.DataType));
        }
コード例 #13
0
        //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();
        }
コード例 #14
0
        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);
        }
コード例 #15
0
ファイル: HttpCache.cs プロジェクト: ADoublePlus/Web-Caching
 /// <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);
     }
 }
コード例 #16
0
 public Storage VisitTemporaryStorage(TemporaryStorage temp)
 {
     if (defining)
     {
         regDefs[temp] = value;
     }
     else
     {
         value = null;
         regDefs.TryGetValue(temp, out value);
     }
     return(temp);
 }
コード例 #17
0
ファイル: HttpCache.cs プロジェクト: ADoublePlus/Web-Caching
        /// <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);
        }
コード例 #18
0
 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);
 }
コード例 #19
0
        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");
        }
コード例 #20
0
        //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();
                }
            }
        }
コード例 #21
0
ファイル: HttpCache.cs プロジェクト: ADoublePlus/Web-Caching
        /// <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);
        }
コード例 #22
0
ファイル: HttpCache.cs プロジェクト: ADoublePlus/Web-Caching
        /// <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);
            }
        }
コード例 #23
0
        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);
        }
コード例 #24
0
 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);
 }
コード例 #25
0
 public bool VisitTemporaryStorage(TemporaryStorage temp, bool defining)
 {
     return(true);
 }
コード例 #26
0
ファイル: MsdosImageLoader.cs プロジェクト: relaxar/reko
        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;
		}
コード例 #27
0
        public Identifier Temp(string name, TemporaryStorage stg)
        {
            var id = new Identifier(stg.Name, stg.DataType, stg);

            return(MakeSsaIdentifier(id, name));
        }
コード例 #28
0
        private Identifier Id(string name, DataType dt)
        {
            var tmp = new TemporaryStorage(name, -42, dt);

            return(new Identifier(name, dt, tmp));
        }
コード例 #29
0
 public Identifier VisitTemporaryStorage(TemporaryStorage temp)
 {
     return(procCalling.Frame.CreateTemporary(Identifier.Name, Identifier.DataType));
 }
コード例 #30
0
 public Identifier VisitTemporaryStorage(TemporaryStorage tmp)
 {
     return(frame.CreateTemporary(id.DataType));
 }
コード例 #31
0
        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);
        }
コード例 #32
0
 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);
 }