Esempio n. 1
0
        public static int Uncompress(byte[] src, int src_offset, int src_size, byte[] dst, int dst_offset, int dst_size)
        {
            unsafe
            {
                fixed(byte *srcPtr = src)
                fixed(byte *dstPtr = dst)
                {
                    var ptrSrc = new IntPtr((void *)srcPtr) + src_offset;
                    var ptrDst = new IntPtr((void *)dstPtr) + dst_offset;
                    var size   = new UIntPtr((uint)dst_size);
                    var status = Libsnappy._snappy_uncompress(ptrSrc, new UIntPtr((uint)src_size), ptrDst, ref size);

                    if (status == SnappyStatusEnum.SNAPPY_OK)
                    {
                        return((int)size.ToUInt32());
                    }

                    throw new SnappyException(status);
                }
            }
        }