コード例 #1
0
ファイル: TestStore.cs プロジェクト: yongweisun/paradox
        public void DictionarySimple()
        {
            using (var tempFile = new TemporaryFile())
                using (var store1 = new DictionaryStore <int, int>(VirtualFileSystem.OpenStream(tempFile.Path, VirtualFileMode.OpenOrCreate, VirtualFileAccess.ReadWrite, VirtualFileShare.ReadWrite)))
                    using (var store2 = new DictionaryStore <int, int>(VirtualFileSystem.OpenStream(tempFile.Path, VirtualFileMode.OpenOrCreate, VirtualFileAccess.ReadWrite, VirtualFileShare.ReadWrite)))
                    {
                        store1.UseTransaction = true;

                        // Check successive sets
                        store1[1] = 1;
                        Assert.That(store1[1], Is.EqualTo(1));

                        store1[1] = 2;
                        Assert.That(store1[1], Is.EqualTo(2));

                        // Check saving (before and after completion)
                        store1.Save();
                        Assert.That(store1[1], Is.EqualTo(2));
                        Assert.That(store1[1], Is.EqualTo(2));

                        // Check set after save
                        store1[1] = 3;
                        Assert.That(store1[1], Is.EqualTo(3));

                        // Check loading from another store
                        store2.LoadNewValues();
                        Assert.That(store2[1], Is.EqualTo(2));

                        // Concurrent changes
                        store1[1] = 5;
                        store2[1] = 6;
                        // Write should be scheduled for save immediately since dictionaryStore2 doesn't use transaction
                        store2[2] = 6;

                        // Check intermediate state (should get new value for 2, but keep intermediate non-saved value for 1)
                        store1.LoadNewValues();
                        Assert.That(store1[1], Is.EqualTo(5));
                        Assert.That(store1[2], Is.EqualTo(6));

                        // Check after save/reload, both stores should be synchronized
                        store1.Save();
                        store2.LoadNewValues();
                        Assert.That(store1[1], Is.EqualTo(store2[1]));
                        Assert.That(store1[2], Is.EqualTo(store2[2]));
                    }
        }
コード例 #2
0
ファイル: TestStore.cs プロジェクト: h78hy78yhoi8j/xenko
        public void DictionarySimple()
        {
            using (var tempFile = new TemporaryFile())
            using (var store1 = new DictionaryStore<int, int>(VirtualFileSystem.OpenStream(tempFile.Path, VirtualFileMode.OpenOrCreate, VirtualFileAccess.ReadWrite, VirtualFileShare.ReadWrite)))
            using (var store2 = new DictionaryStore<int, int>(VirtualFileSystem.OpenStream(tempFile.Path, VirtualFileMode.OpenOrCreate, VirtualFileAccess.ReadWrite, VirtualFileShare.ReadWrite)))
            {
                store1.UseTransaction = true;

                // Check successive sets
                store1[1] = 1;
                Assert.That(store1[1], Is.EqualTo(1));

                store1[1] = 2;
                Assert.That(store1[1], Is.EqualTo(2));

                // Check saving (before and after completion)
                store1.Save();
                Assert.That(store1[1], Is.EqualTo(2));
                Assert.That(store1[1], Is.EqualTo(2));

                // Check set after save
                store1[1] = 3;
                Assert.That(store1[1], Is.EqualTo(3));

                // Check loading from another store
                store2.LoadNewValues();
                Assert.That(store2[1], Is.EqualTo(2));

                // Concurrent changes
                store1[1] = 5;
                store2[1] = 6;
                // Write should be scheduled for save immediately since dictionaryStore2 doesn't use transaction
                store2[2] = 6;

                // Check intermediate state (should get new value for 2, but keep intermediate non-saved value for 1)
                store1.LoadNewValues();
                Assert.That(store1[1], Is.EqualTo(5));
                Assert.That(store1[2], Is.EqualTo(6));

                // Check after save/reload, both stores should be synchronized
                store1.Save();
                store2.LoadNewValues();
                Assert.That(store1[1], Is.EqualTo(store2[1]));
                Assert.That(store1[2], Is.EqualTo(store2[2]));
            }
        }
コード例 #3
0
        /// <summary>
        /// Records the effect compilation request to the specified file.
        /// </summary>
        /// <param name="filePath">The file path.</param>
        /// <param name="reset">if set to <c>true</c> erase the previous file, otherwise append.</param>
        public void StartRecordEffectCompile(string filePath, bool reset)
        {
            try
            {
                if (reset && File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
            }
            catch (IOException)
            {
            }

            var fileStream       = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
            var effectCompileLog = new DictionaryStore <EffectCompileRequest, bool>(fileStream);

            if (!reset)
            {
                effectCompileLog.LoadNewValues();
            }

            StartRecordEffectCompile(effectCompileLog);
        }