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 extern void DecodeIpcMessageNative(
     string encodedReq,
     IntPtr self,
     DecodeAuthCb authCb,
     DecodeUnregCb unregCb,
     DecodeContCb contCb,
     DecodeShareMDataCb shareMDataCb,
     DecodeRevokedCb revokedCb,
     ListBasedResultCb errorCb);
        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 void DecodeIpcMessage(
            string encodedReq,
            DecodeAuthCb authCb,
            DecodeUnregCb unregCb,
            DecodeContCb contCb,
            DecodeShareMDataCb shareMDataCb,
            DecodeRevokedCb revokedCb,
            ListBasedResultCb errorCb)
        {
            var cbs = new List <object> {
                authCb, unregCb, contCb, shareMDataCb, revokedCb, errorCb
            };

            DecodeIpcMessageNative(
                encodedReq,
                cbs.ToHandlePtr(),
                OnDecodeAuthCb,
                OnDecodeUnregCb,
                OnDecodeContCb,
                OnDecodeShareMDataCb,
                OnDecodeRevokedCb,
                OnListBasedResultCb);
        }
 public static extern void MDataEntriesForEachNative(
     IntPtr appPtr,
     ulong entriesHandle,
     IntPtr self,
     MDataEntriesForEachCb forEachCallback,
     ListBasedResultCb resultCallback);