Beispiel #1
0
 TableVersionInfo ITableInfoResolver.LoadTableVersionInfo(uint id, uint version, string tableName)
 {
     using (var tr = _keyValueDB.StartTransaction())
     {
         tr.SetKeyPrefix(TableVersionsPrefix);
         var key = TableInfo.BuildKeyForTableVersions(id, version);
         if (!tr.FindExactKey(key))
         {
             throw new BTDBException($"Missing TableVersionInfo Id:{id} Version:{version}");
         }
         return(TableVersionInfo.Load(new KeyValueDBValueReader(tr), _objectDB.FieldHandlerFactory, tableName));
     }
 }
Beispiel #2
0
 uint ITableInfoResolver.GetLastPersistedVersion(uint id)
 {
     using (var tr = _keyValueDB.StartTransaction())
     {
         tr.SetKeyPrefix(TableVersionsPrefix);
         var key = TableInfo.BuildKeyForTableVersions(id, uint.MaxValue);
         if (tr.Find(ByteBuffer.NewSync(key)) == FindResult.NotFound)
         {
             return(0);
         }
         var key2 = tr.GetKeyAsByteArray();
         var ofs  = PackUnpack.LengthVUInt(id);
         if (key2.Length < ofs)
         {
             return(0);
         }
         if (BitArrayManipulation.CompareByteArray(key, ofs, key2, ofs) != 0)
         {
             return(0);
         }
         return(checked ((uint)PackUnpack.UnpackVUInt(key2, ref ofs)));
     }
 }