示例#1
0
        public bool CreateOrUpdateKeyValue(ByteBuffer key, ByteBuffer value)
        {
            MakeWrittable();
            uint valueFileId;
            uint valueOfs;
            int  valueSize;

            _keyValueDB.WriteCreateOrUpdateCommand(_prefix, key, value, out valueFileId, out valueOfs, out valueSize);
            var ctx = new CreateOrUpdateCtx
            {
                KeyPrefix   = _prefix,
                Key         = key,
                ValueFileId = valueFileId,
                ValueOfs    = valueOfs,
                ValueSize   = valueSize,
                Stack       = _stack
            };

            BtreeRoot.CreateOrUpdate(ctx);
            _keyIndex = ctx.KeyIndex;
            if (ctx.Created && _prefixKeyCount >= 0)
            {
                _prefixKeyCount++;
            }
            return(ctx.Created);
        }