Exemple #1
0
        public override Serialize.ByteBuffer Get(long txnId, Serialize.ByteBuffer key)
        {
            int outValueBufferLen = 64 * 1024;

            while (true)
            {
                using var _key     = new GoSlice(key.Bytes, key.ReadIndex, key.Size);
                using var error    = new GoSlice(1024);
                using var outvalue = new GoSlice(outValueBufferLen);
                long rc = Get(txnId, _key, outvalue, error);
                if (rc < 0)
                {
                    var str = GetErrorString(rc, error);
                    if (str.Equals("key not exist")) // 这是tikv clieng.go 返回的错误。
                    {
                        return(null);
                    }
                    if (str.Equals("ZezeSpecialError: value is nil."))
                    {
                        return(null);
                    }
                    var strBufferNotEnough = "ZezeSpecialError: outvalue buffer not enough. BufferNeed=";
                    if (str.StartsWith(strBufferNotEnough))
                    {
                        outValueBufferLen = int.Parse(str.Substring(strBufferNotEnough.Length));
                        continue;
                    }
                    throw new Exception(str);
                }
                byte[] rcvalue = new byte[rc];
                Marshal.Copy(outvalue.Data, rcvalue, 0, rcvalue.Length);
                return(Serialize.ByteBuffer.Wrap(rcvalue));
            }
        }
Exemple #2
0
        public override void Delete(long txnId, Serialize.ByteBuffer key)
        {
            using var _key  = new GoSlice(key.Bytes, key.ReadIndex, key.Size);
            using var error = new GoSlice(1024);
            long rc = Delete(txnId, _key, error);

            if (rc < 0)
            {
                throw new Exception(GetErrorString(rc, error));
            }
        }
Exemple #3
0
        public override void Put(long txnId, Serialize.ByteBuffer key, Serialize.ByteBuffer value)
        {
            using var _key   = new GoSlice(key.Bytes, key.ReadIndex, key.Size);
            using var _value = new GoSlice(value.Bytes, value.ReadIndex, value.Size);
            using var error  = new GoSlice(1024);
            long rc = Put(txnId, _key, _value, error);

            if (rc < 0)
            {
                throw new Exception(GetErrorString(rc, error));
            }
        }
Exemple #4
0
 internal void AppendInputBuffer(long socketSessionId, Zeze.Serialize.ByteBuffer buffer)
 {
     lock (this)
     {
         if (ToBuffer.TryGetValue(socketSessionId, out var exist))
         {
             exist.Append(buffer.Bytes, buffer.ReadIndex, buffer.Size);
             return;
         }
         Serialize.ByteBuffer newBuffer = Serialize.ByteBuffer.Allocate();
         ToBuffer.Add(socketSessionId, newBuffer);
         newBuffer.Append(buffer.Bytes, buffer.ReadIndex, buffer.Size);
     }
 }
Exemple #5
0
        public override long Scan(long txnId, Serialize.ByteBuffer keyprefix, Func <byte[], byte[], bool> callback)
        {
            using var _keyprefix = new GoSlice(keyprefix.Bytes, keyprefix.ReadIndex, keyprefix.Size);
            using var error      = new GoSlice(1024);
            long rc = Scan(txnId, _keyprefix,
                           new Walker(
                               (key, keylen, value, valuelen) =>
            {
                var _key   = new byte[keylen];
                var _value = new byte[valuelen];
                Marshal.Copy(key, _key, 0, _key.Length);
                Marshal.Copy(value, _value, 0, _value.Length);
                return(callback(_key, _value) ? 0 : -1);
            }),
                           error);

            if (rc < 0)
            {
                throw new Exception(GetErrorString(rc, error));
            }

            return(rc);
        }
Exemple #6
0
 public BufferCodec(Serialize.ByteBuffer buffer)
 {
     Buffer = buffer;
 }
Exemple #7
0
 public abstract long Scan(long txnId, Serialize.ByteBuffer keyprefix, Func <byte[], byte[], bool> callback);
Exemple #8
0
 public abstract void Delete(long txnId, Serialize.ByteBuffer key);
Exemple #9
0
 public abstract Serialize.ByteBuffer Get(long txnId, Serialize.ByteBuffer key);
Exemple #10
0
 public abstract void Put(long txnId, Serialize.ByteBuffer key, Serialize.ByteBuffer value);