Ejemplo n.º 1
0
        public static Task <List <(List <byte>, List <byte>, ulong)> > ForEachAsync(NativeHandle entH)
        {
            var tcs     = new TaskCompletionSource <List <(List <byte>, List <byte>, ulong)> >();
            var entries = new List <(List <byte>, List <byte>, ulong)>();

            MDataEntriesForEachCb forEachCb = (_, entryKeyPtr, entryKeyLen, entryValPtr, entryValLen, entryVersion) => {
                var entryKey = entryKeyPtr.ToList <byte>(entryKeyLen);
                var entryVal = entryValPtr.ToList <byte>(entryValLen);
                entries.Add((entryKey, entryVal, entryVersion));
            };

            ListBasedResultCb forEachResCb = (_, result) => {
                if (result.ErrorCode != 0)
                {
                    tcs.SetException(result.ToException());
                    return;
                }

                tcs.SetResult(entries);
            };

            AppBindings.MDataEntriesForEach(Session.AppPtr, entH, forEachCb, forEachResCb);

            return(tcs.Task);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
 public void MDataEntriesForEach(
     IntPtr appPtr,
     ulong entriesHandle,
     MDataEntriesForEachCb forEachCallback,
     IntPtr self,
     MDataEntriesForEachResCb resultCallback)
 {
     MDataEntriesForEachNative(appPtr, entriesHandle, forEachCallback, self, resultCallback);
 }
Ejemplo n.º 4
0
        public void MDataEntriesForEach(
            IntPtr appPtr,
            ulong entriesHandle,
            MDataEntriesForEachCb forEachCallback,
            ListBasedResultCb resultCallback)
        {
            var cbs = new List <object> {
                forEachCallback, resultCallback
            };

            MDataEntriesForEachNative(appPtr, entriesHandle, cbs.ToHandlePtr(), OnMDataEntriesForEachCb, OnListBasedResultCb);
        }
Ejemplo n.º 5
0
 public static extern void MDataEntriesForEachNative(
     IntPtr appPtr,
     ulong entriesHandle,
     MDataEntriesForEachCb forEachCallback,
     IntPtr self,
     MDataEntriesForEachResCb resultCallback);
Ejemplo n.º 6
0
 private static extern void MDataEntriesForEachNative(
     IntPtr appPtr,
     ulong entriesHandle,
     IntPtr self,
     MDataEntriesForEachCb forEachCallback,
     ListBasedResultCb resultCallback);