Beispiel #1
0
        public static Task <List <Tuple <List <byte>, List <byte>, ulong> > > MDataEntriesForEachAsync(ulong entH)
        {
            var tcs     = new TaskCompletionSource <List <Tuple <List <byte>, List <byte>, ulong> > >();
            var entries = new List <Tuple <List <byte>, List <byte>, ulong> >();

            MDataEntriesForEachCb forEachCb = null;

            forEachCb = (pVoid, entryKeyPtr, entryKeyLen, entryValPtr, entryValLen, entryVersion) => {
                var entryKey = entryKeyPtr.ToList <byte>(entryKeyLen);
                var entryVal = entryValPtr.ToList <byte>(entryValLen);
                entries.Add(Tuple.Create(entryKey, entryVal, entryVersion));
            };
            CallbackManager.Register(forEachCb);

            MDataEntriesForEachResCb forEachResCb = null;

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

                tcs.SetResult(entries);
                CallbackManager.Unregister(forEachCb);
                CallbackManager.Unregister(forEachResCb);
            };

            CallbackManager.Register(forEachResCb);
            NativeBindings.MDataEntriesForEach(Session.AppPtr, entH, forEachCb, Session.UserData, forEachResCb);

            return(tcs.Task);
        }
Beispiel #2
0
 public void MDataEntriesForEach(
     IntPtr appPtr,
     ulong entriesHandle,
     MDataEntriesForEachCb forEachCallback,
     IntPtr self,
     MDataEntriesForEachResCb resultCallback)
 {
     MDataEntriesForEachNative(appPtr, entriesHandle, forEachCallback, self, resultCallback);
 }
Beispiel #3
0
 public static extern void MDataEntriesForEachNative(
     IntPtr appPtr,
     ulong entriesHandle,
     MDataEntriesForEachCb forEachCallback,
     IntPtr self,
     MDataEntriesForEachResCb resultCallback);