Example #1
0
 public void Get()
 {
     using var log = Log();
     using LevelDB.DB <string, string> db = GetTestDb();
     Assert.Equal("1", db.Get("a"));
     Assert.Equal("26", db.Get("z"));
     Assert.Equal("1", db["a"]);
     Assert.Equal("26", db["z"]);
 }
Example #2
0
        public override bool AddChests(IEnumerable <long> mapids, string playerid)
        {
            // acquire the file this player is stored in, and the tag that represents said player
            byte[] playeridbytes;
            if (playerid == LOCAL_IDENTIFIER)
            {
                playeridbytes = Encoding.Default.GetBytes("~local_player");
            }
            else
            {
                playeridbytes = Encoding.Default.GetBytes(playerid);
            }
            byte[] playerdata = BedrockDB.Get(playeridbytes.ToArray());
            var    file       = new NbtFile();

            file.BigEndian = false;
            file.LoadFromBuffer(playerdata, 0, playerdata.Length, NbtCompression.None);
            var invtag = (NbtList)file.RootTag["Inventory"];

            var success = PutChestsInInventory(invtag, mapids);

            byte[] bytes = file.SaveToBuffer(NbtCompression.None);
            BedrockDB.Put(playeridbytes, bytes);

            return(success);
        }
Example #3
0
        public IValue GetItem(LevelDB.ReadOptions snapshot, byte[] key)
        {
            var _key = Helper.tagKey_Item.Concat(prefix).Concat(Helper.tagZero).Concat(key).ToArray();
            var data = db.Get(snapshot, _key);

            return(Helper.CreateValue(this.db, data));
        }
Example #4
0
 public byte[] Get(byte[] key)
 {
     System.Numerics.BigInteger nkey = new System.Numerics.BigInteger(key);
     if (cache.ContainsKey(nkey))
     {
         return(cache[nkey]);
     }
     return(db.Get(snapshot, key));
 }
Example #5
0
        public void PutToDB(LevelDB.DB db, byte[] key)
        {
            var snapshot = Helper.CreateSnapshot(db);

            if (this.Value == null)
            {//申请新的实例ID,然后初始化存储Map
                var key_instMax = Helper.tagKey_InstanceMax;
                var instid      = db.Get(snapshot, key_instMax);
                if (instid == null || instid.Length == 0)
                {
                    instid = BitConverter.GetBytes((UInt64)1);
                }

                this.Value = instid;
                this.db    = db;
                //刷新max
                {
                    UInt64 v = BitConverter.ToUInt64(instid, 0);
                    v++;
                    instid = BitConverter.GetBytes((UInt64)v);
                    db.Put(key_instMax, instid);
                }

                //初始化字典数量
                byte[] key_count = Helper.tagKey_MapCount.Concat(this.Value).ToArray();
                db.Put(key_count, BitConverter.GetBytes((UInt64)0));
            }
            else
            {//检查count是否存在,
                byte[] key_count = Helper.tagKey_MapCount.Concat(this.Value).ToArray();
                var    count     = db.Get(snapshot, key_count);
                if (count == null || count.Length == 0)
                {
                    throw new Exception("error map instance.");
                }
            }

            db.Put(key, Helper.tagValue_Map.Concat(this.Value).ToArray());
        }
Example #6
0
        public static string ChromiumLevelDBReadString(LevelDB.DB database, string url, string keyName)
        {
            foreach (var a in database)
            {
                var str = System.Text.Encoding.ASCII.GetString(a.Key);
                Console.WriteLine(str);
            }

            var rawKeyName = $"_{url}\0\u0001{keyName}";
            var rawValue   = database.Get(rawKeyName);

            if (rawValue == null)
            {
                throw new KeyNotFoundException();
            }
            return(rawValue.Replace("\u0001", "").TrimStart(new char[] { '"' }).TrimEnd(new char[] { '"' }));
        }