Ejemplo n.º 1
0
 public static extern void MDataEntriesInsertNative(
     IntPtr appPtr,
     ulong entriesHandle,
     IntPtr keyPtr,
     IntPtr keyLen,
     IntPtr valuePtr,
     IntPtr valueLen,
     IntPtr self,
     MDataEntriesInsertCb callback);
Ejemplo n.º 2
0
 public void MDataEntriesInsert(
     IntPtr appPtr,
     ulong entriesHandle,
     IntPtr keyPtr,
     IntPtr keyLen,
     IntPtr valuePtr,
     IntPtr valueLen,
     IntPtr self,
     MDataEntriesInsertCb callback)
 {
     MDataEntriesInsertNative(appPtr, entriesHandle, keyPtr, keyLen, valuePtr, valueLen, self, callback);
 }
Ejemplo n.º 3
0
        public static Task MDataEntriesInsertAsync(ulong entriesH, List <byte> entKey, List <byte> entVal)
        {
            var tcs = new TaskCompletionSource <object>();

            MDataEntriesInsertCb callback = null;

            callback = (pVoid, result) => {
                if (result.ErrorCode != 0)
                {
                    tcs.SetException(result.ToException());
                    CallbackManager.Unregister(callback);
                    return;
                }

                tcs.SetResult(null);
                CallbackManager.Unregister(callback);
            };

            CallbackManager.Register(callback);

            var entKeyPtr = entKey.ToIntPtr();
            var entValPtr = entVal.ToIntPtr();

            NativeBindings.MDataEntriesInsert(
                Session.AppPtr,
                entriesH,
                entKeyPtr,
                (IntPtr)entKey.Count,
                entValPtr,
                (IntPtr)entVal.Count,
                Session.UserData,
                callback);

            Marshal.FreeHGlobal(entKeyPtr);
            Marshal.FreeHGlobal(entValPtr);

            return(tcs.Task);
        }