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); }
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); }
public void MDataEntriesForEach( IntPtr appPtr, ulong entriesHandle, MDataEntriesForEachCb forEachCallback, IntPtr self, MDataEntriesForEachResCb resultCallback) { MDataEntriesForEachNative(appPtr, entriesHandle, forEachCallback, self, resultCallback); }
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); }
public static extern void MDataEntriesForEachNative( IntPtr appPtr, ulong entriesHandle, MDataEntriesForEachCb forEachCallback, IntPtr self, MDataEntriesForEachResCb resultCallback);
private static extern void MDataEntriesForEachNative( IntPtr appPtr, ulong entriesHandle, IntPtr self, MDataEntriesForEachCb forEachCallback, ListBasedResultCb resultCallback);