Пример #1
0
        public static LevelDbOperation Deserialize(ref System.IO.BinaryReader stream)
        {
            LevelDbOperation levelDbOperation = new LevelDbOperation();

            //tableid
            levelDbOperation.tableid = (byte)stream.ReadByte();
            //key
            var isnull = stream.ReadByte();

            if (isnull != 1)
            {
                levelDbOperation.key = null;
            }
            else
            {
                byte[] bytes_keyL = new byte[4];
                stream.Read(bytes_keyL, 0, 4);
                var    keyL      = BitConverter.ToInt32(bytes_keyL, 0);
                byte[] bytes_key = new byte[keyL];
                stream.Read(bytes_key, 0, keyL);
                levelDbOperation.key = bytes_key;
            }

            //value
            isnull = stream.ReadByte();
            if (isnull != 1)
            {
                levelDbOperation.value = null;
            }
            else
            {
                byte[] bytes_valueL = new byte[4];
                stream.Read(bytes_valueL, 0, 4);
                var    valueL      = BitConverter.ToInt32(bytes_valueL, 0);
                byte[] bytes_value = new byte[valueL];
                stream.Read(bytes_value, 0, valueL);
                levelDbOperation.value = bytes_value;
            }

            //state
            levelDbOperation.state = (byte)stream.ReadByte();

            ////height
            //byte[] bytes_height = new byte[4];
            //stream.Read(bytes_height,0,4);
            //levelDbOperation.height = (ulong)BitConverter.ToInt32(bytes_height,0);

            return(levelDbOperation);
        }
Пример #2
0
        public static byte[] Serialize(LevelDbOperation levelDbOperation)
        {
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                // xie tableid
                ms.WriteByte(levelDbOperation.tableid);


                // 写 key
                if (levelDbOperation.key != null)
                {
                    ms.WriteByte(1);
                    byte[] bytes_key  = levelDbOperation.key;
                    byte[] bytes_keyL = BitConverter.GetBytes(bytes_key.Length);
                    ms.Write(bytes_keyL, 0, 4);
                    ms.Write(bytes_key, 0, bytes_key.Length);
                }
                else
                {
                    ms.WriteByte(0);
                }


                //写 value
                if (levelDbOperation.value != null)
                {
                    ms.WriteByte(1);
                    byte[] bytes_value  = levelDbOperation.value;
                    byte[] bytes_valueL = BitConverter.GetBytes(bytes_value.Length);
                    ms.Write(bytes_valueL, 0, 4);
                    ms.Write(bytes_value, 0, bytes_value.Length);
                }
                else
                {
                    ms.WriteByte(0);
                }

                //state
                ms.WriteByte(levelDbOperation.state);

                ////写blockheight
                //byte[] bytes_height = BitConverter.GetBytes(levelDbOperation.height);
                //ms.Write(bytes_height,0,4);

                return(ms.ToArray());
            }
        }