Exemple #1
0
        protected override int GetBodyLengthFromHeader(IBufferStream bufferStream, int length)
        {
            bufferStream.Skip(FixedHeaderTryConst.KEYSIZE);
            byte[] bodySizeBuf = new byte[FixedHeaderTryConst.BODYSIZE_LEN];
            //注意 Read方法的第二个参数,目标数组的偏移
            bufferStream.Read(bodySizeBuf, 0, FixedHeaderTryConst.BODYSIZE_LEN);

            return(PackageBodyOperator.GetBodyLen(bodySizeBuf));
            //throw new NotImplementedException();
        }
Exemple #2
0
        public override StringPackageInfo ResolvePackage(IBufferStream bufferStream)
        {
            //throw new NotImplementedException();
            string key = bufferStream.ReadString(FixedHeaderTryConst.KEYSIZE, Encoding.UTF8);

            byte[] buffer = new byte[FixedHeaderTryConst.BODYSIZE_LEN];
            bufferStream.Read(buffer, 0, FixedHeaderTryConst.BODYSIZE_LEN);
            int    bodySize = PackageBodyOperator.GetBodyLen(buffer);
            string body     = bufferStream.ReadString(bodySize, Encoding.UTF8);

            return(new StringPackageInfo(key, body, null));
        }
        public static ArraySegment <byte> CreatePackage(string key, string body)
        {
            byte[] buffer = new byte[FixedHeaderTryConst.HEARSIZE + body.Length];

            Buffer.BlockCopy(Encoding.UTF8.GetBytes(key), 0, buffer, 0, key.Length);

            /*
             * buffer[FixedHeaderTryConst.KEYSIZE] = (byte)(body.Length / ConstValues._16MaxValue);
             * buffer[FixedHeaderTryConst.KEYSIZE + 1] = (byte)((body.Length % ConstValues._16MaxValue) / ConstValues._8MaxValue);
             * buffer[FixedHeaderTryConst.KEYSIZE + 2] = (byte)(body.Length % ConstValues._8MaxValue);
             */
            PackageBodyOperator.FillBodyLen(buffer, FixedHeaderTryConst.KEYSIZE, body.Length);

            Buffer.BlockCopy(Encoding.UTF8.GetBytes(body), 0, buffer, FixedHeaderTryConst.HEARSIZE, body.Length);

            return(new ArraySegment <byte>(buffer));
        }
 //offset = 0
 protected override int GetBodyLengthFromHeader(byte[] header, int offset, int length)
 {
     return(PackageBodyOperator.GetBodyLen(header, offset + FixedHeaderTryConst.KEYSIZE));
 }