예제 #1
0
파일: Store.cs 프로젝트: slamj1/neo-modules
        public Store(string path)
        {
            this.db = DB.Open(path, new Options {
                CreateIfMissing = true, FilterPolicy = Native.leveldb_filterpolicy_create_bloom(15)
            });
            byte[] value = db.Get(ReadOptions.Default, LHelper.CreateKey(SYS_Version));
            if (value != null && Version.TryParse(Encoding.ASCII.GetString(value), out Version version) && version >= Version.Parse("3.0.0"))
            {
                return;
            }

            WriteBatch batch = new WriteBatch();

            if (value != null)
            {
                // Clean all entries only if the version are different

                ReadOptions options = new ReadOptions {
                    FillCache = false
                };
                using (Iterator it = db.NewIterator(options))
                {
                    for (it.SeekToFirst(); it.Valid(); it.Next())
                    {
                        batch.Delete(it.Key());
                    }
                }
            }

            db.Put(WriteOptions.Default, LHelper.CreateKey(SYS_Version), Encoding.ASCII.GetBytes(Assembly.GetExecutingAssembly().GetName().Version.ToString()));
            db.Write(WriteOptions.Default, batch);
        }
예제 #2
0
파일: Store.cs 프로젝트: slamj1/neo-modules
 public void Delete(byte table, byte[] key)
 {
     db.Delete(WriteOptions.Default, LHelper.CreateKey(table, key));
 }
예제 #3
0
 public void Delete(byte table, byte[] key)
 {
     batch.Delete(LHelper.CreateKey(table, key));
 }