示例#1
0
        /// <summary>
        /// 把大字节数组分割成指定容量等级的ByteListStream
        /// </summary>
        /// <param name="largeBuf"></param>
        /// <param name="level"></param>
        /// <returns></returns>
        public static ByteListStream Slice(byte[] largeBuf, ByteListPool.BufferLevel level)
        {
            ByteListStream bs         = new ByteListStream();
            int            countleave = largeBuf.Length;
            int            offset     = 0;

            while (countleave > 0)
            {
                byte[] buf = AllocBuf(level);
                int    len = Math.Min(countleave, buf.Length);
                Buffer.BlockCopy(largeBuf, offset, buf, 0, len);
                bs.Add(new ArraySegment <byte>(buf, 0, len));
                offset     += len;
                countleave -= len;
            }
            return(bs);
        }
示例#2
0
 ///// <summary>
 ///// 默认缓存容量是80M,设置缓存容量倍数 设置为2则缓存容量是160M
 ///// </summary>
 ///// <param name="multiple">倍数必须大于0</param>
 //public static void SetCacheMultipleAll(byte multiple) {
 //    BufPool.SetCacheMultipleAll(multiple);
 //}
 /// <summary>
 /// 设置指定缓存容量的 缓存倍数,如果编写程序中命中的缓存级别较大,可单独增加缓存数量
 /// </summary>
 /// <param name="level"></param>
 /// <param name="multiple"></param>
 public static void SetCacheMultiple(ByteListPool.BufferLevel level, byte multiple)
 {
     BufPool.SetCacheMultiple(level, multiple);
 }
示例#3
0
 /// <summary>
 /// 线程安全
 /// </summary>
 /// <param name="level"></param>
 /// <returns></returns>
 public static byte[] AllocBuf(ByteListPool.BufferLevel level)
 {
     lock (m_lockObj) {
         return(BufPool.GetBuf(level));
     }
 }