コード例 #1
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
        public static int mdb_del(IntPtr txn, uint dbi, byte[] key)
        {
            ValueStructure val = default(ValueStructure);

            using (var marshal = new MarshalValueStructure(key))
                return(check(LmdbMethods.mdb_del(txn, dbi, ref marshal.Key, ref val)));
        }
コード例 #2
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_cursor_get(IntPtr cursor, byte[] key, out ValueStructure keyStructure, out ValueStructure valueStructure, CursorOperation op)
 {
     valueStructure = default(ValueStructure);
     using (var marshal = new MarshalValueStructure(key))
     {
         keyStructure = marshal.Key;
         return(checkRead(LmdbMethods.mdb_cursor_get(cursor, ref keyStructure, ref valueStructure, op)));
     }
 }
コード例 #3
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
        public static int mdb_dbi_open(IntPtr txn, string name, DatabaseOpenFlags flags, out uint db)
        {
            var statusCode = LmdbMethods.mdb_dbi_open(txn, name, flags, out db);

            if (statusCode == MDB_NOTFOUND)
            {
                throw new LightningException($"Error opening database {name}: {mdb_strerror(statusCode)}", statusCode);
            }
            return(check(statusCode));
        }
コード例 #4
0
        public static int mdb_put(IntPtr txn, uint dbi, ArraySegment <byte> key, ArraySegment <byte> value, PutOptions flags)
        {
            fixed(byte *pKey = key.Array)
            fixed(byte *pValue = value.Array)
            {
                var k = new mdb_val(key.Count, pKey + key.Offset);
                var v = new mdb_val(value.Count, pValue + value.Offset);

                return(check(LmdbMethods.mdb_put(txn, dbi, ref k, ref v, flags)));
            }
        }
コード例 #5
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
        public static int mdb_cursor_get(IntPtr cursor, out byte[] key, out byte[] value, ref ValueStructure keyStructure, ref ValueStructure valueStructure, CursorOperation op)
        {
            key = value = null;
            var result = checkRead(LmdbMethods.mdb_cursor_get(cursor, ref keyStructure, ref valueStructure, op));

            if (result == 0)
            {
                key   = keyStructure.GetBytes();
                value = valueStructure.GetBytes();
            }
            return(result);
        }
コード例 #6
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_get(IntPtr txn, uint dbi, byte[] key, out byte[] data)
 {
     using (var marshal = new MarshalValueStructure(key))
     {
         ValueStructure value;
         var            result = checkRead(LmdbMethods.mdb_get(txn, dbi, ref marshal.Key, out value));
         if (result == MDB_NOTFOUND)
         {
             data = null;
             return(result);
         }
         data = value.GetBytes();
         return(result);
     }
 }
コード例 #7
0
        public static unsafe int mdb_put(IntPtr txn, uint dbi, ReadOnlySpan <byte> key, ReadOnlySpan <byte> value, PutOptions flags)
        {
            fixed(byte *addKey = &key.GetPinnableReference(), addVal = &value.GetPinnableReference())
            {
                var keyVs = new ValueStructure
                {
                    size = new IntPtr(key.Length),
                    data = new IntPtr(addKey),
                };

                var valueVs = new ValueStructure
                {
                    size = new IntPtr(value.Length),
                    data = new IntPtr(addVal),
                };

                return(check(LmdbMethods.mdb_put(txn, dbi, ref keyVs, ref valueVs, flags)));
            }
        }
コード例 #8
0
        public static unsafe int mdb_get(IntPtr txn, uint dbi, ReadOnlySpan <byte> key, out Span <byte> data)
        {
            fixed(byte *addKey = &key.GetPinnableReference())
            {
                var keyVs = new ValueStructure
                {
                    size = new IntPtr(key.Length),
                    data = new IntPtr(addKey),
                };

                ValueStructure value;
                var            result = checkRead(LmdbMethods.mdb_get(txn, dbi, ref keyVs, out value));

                if (result == MDB_NOTFOUND)
                {
                    data = Span <byte> .Empty;
                    return(result);
                }
                data = new Span <byte>(value.data.ToPointer(), value.size.ToInt32());
                return(result);
            }
        }
コード例 #9
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_cursor_del(IntPtr cursor, CursorDeleteOption flags)
 {
     return(check(LmdbMethods.mdb_cursor_del(cursor, flags)));
 }
コード例 #10
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_cursor_put(IntPtr cursor, byte[] key, byte[] value, CursorPutOptions flags)
 {
     using (var marshal = new MarshalValueStructure(key, value))
         return(check(LmdbMethods.mdb_cursor_put(cursor, ref marshal.Key, ref marshal.Value, flags)));
 }
コード例 #11
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_cursor_put(IntPtr cursor, ref ValueStructure key, ValueStructure[] data, CursorPutOptions flags)
 {
     return(check(LmdbMethods.mdb_cursor_put(cursor, ref key, data, flags)));
 }
コード例 #12
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_cursor_get(IntPtr cursor, out ValueStructure key, out ValueStructure value, CursorOperation op)
 {
     key = value = default(ValueStructure);
     return(checkRead(LmdbMethods.mdb_cursor_get(cursor, ref key, ref value, op)));
 }
コード例 #13
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_stat(IntPtr txn, uint dbi, out MDBStat stat)
 {
     return(check(LmdbMethods.mdb_stat(txn, dbi, out stat)));
 }
コード例 #14
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_sync(IntPtr env, bool force)
 {
     return(check(LmdbMethods.mdb_env_sync(env, force)));
 }
コード例 #15
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_cursor_get(IntPtr cursor, byte[] key, byte[] value, CursorOperation op)
 {
     using (var marshal = new MarshalValueStructure(key, value))
         return(checkRead(LmdbMethods.mdb_cursor_get(cursor, ref marshal.Key, ref marshal.Value, op)));
 }
コード例 #16
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_copy2(IntPtr env, string path, EnvironmentCopyFlags copyFlags)
 {
     return(check(LmdbMethods.mdb_env_copy2(env, path, copyFlags)));
 }
コード例 #17
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_cursor_renew(IntPtr txn, IntPtr cursor)
 {
     return(check(LmdbMethods.mdb_cursor_renew(txn, cursor)));
 }
コード例 #18
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static void mdb_env_close(IntPtr env)
 {
     LmdbMethods.mdb_env_close(env);
 }
コード例 #19
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_set_mapsize(IntPtr env, long size)
 {
     return(check(LmdbMethods.mdb_env_set_mapsize(env, new IntPtr(size))));
 }
コード例 #20
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_del(IntPtr txn, uint dbi, byte[] key, byte[] value)
 {
     using (var marshal = new MarshalValueStructure(key, value))
         return(check(LmdbMethods.mdb_del(txn, dbi, ref marshal.Key, ref marshal.Value)));
 }
コード例 #21
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_put(IntPtr txn, uint dbi, byte[] key, byte[] value, PutOptions flags)
 {
     using (var marshal = new MarshalValueStructure(key, value))
         return(check(LmdbMethods.mdb_put(txn, dbi, ref marshal.Key, ref marshal.Value, flags)));
 }
コード例 #22
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_info(IntPtr env, out MDBEnvInfo stat)
 {
     return(check(LmdbMethods.mdb_env_info(env, out stat)));
 }
コード例 #23
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_set_dupsort(IntPtr txn, uint dbi, CompareFunction cmp)
 {
     return(check(LmdbMethods.mdb_set_dupsort(txn, dbi, cmp)));
 }
コード例 #24
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_copy(IntPtr env, string path)
 {
     return(check(LmdbMethods.mdb_env_copy(env, path)));
 }
コード例 #25
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_create(out IntPtr env)
 {
     return(check(LmdbMethods.mdb_env_create(out env)));
 }
コード例 #26
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_stat(IntPtr env, out MDBStat stat)
 {
     return(check(LmdbMethods.mdb_env_stat(env, out stat)));
 }
コード例 #27
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_open(IntPtr env, string path, EnvironmentOpenFlags flags, UnixAccessMode mode)
 {
     return(check(LmdbMethods.mdb_env_open(env, path, flags, mode)));
 }
コード例 #28
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_cursor_open(IntPtr txn, uint dbi, out IntPtr cursor)
 {
     return(check(LmdbMethods.mdb_cursor_open(txn, dbi, out cursor)));
 }
コード例 #29
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static int mdb_env_get_maxreaders(IntPtr env, out uint readers)
 {
     return(check(LmdbMethods.mdb_env_get_maxreaders(env, out readers)));
 }
コード例 #30
0
ファイル: Lmdb.cs プロジェクト: xiongyingjie/Lightning.NET
 public static void mdb_cursor_close(IntPtr cursor)
 {
     LmdbMethods.mdb_cursor_close(cursor);
 }