Wraps pointers to be freed with leveldb_free (e.g. returned by leveldb_get). Reference on safe handles: http://blogs.msdn.com/b/bclteam/archive/2006/06/23/644343.aspx.
Inheritance: System.Runtime.InteropServices.SafeHandle
Ejemplo n.º 1
0
        public NativeArray <T> GetRaw <T>(NativeArray key, ReadOptions options) where T : struct
        {
            IntPtr error;
            IntPtr length;

            var handle = new LevelDbFreeHandle();

            // TODO: Remove typecast to int
            var v = (Ptr <T>)LevelDbInterop.leveldb_get(
                Handle,
                options.Handle,
                key.BaseAddr,
                key.ByteLength,
                out length,
                out error);

            handle.SetHandle((IntPtr)v);

            // round down, truncating the array slightly if needed
            var count = (IntPtr)((ulong)length / Ptr <T> .SizeofT);

            return(new NativeArray <T>(v, count, handle));
        }