static void OnFfiResultIpcReqErrorCb(IntPtr userData, IntPtr result, string msg) { var tcs = BindingUtils.FromHandlePtr <TaskCompletionSource <IpcReq> >(userData); var ffiResult = Marshal.PtrToStructure <FfiResult>(result); tcs.SetResult(new IpcReqError(ffiResult.ErrorCode, ffiResult.Description, msg)); }
static void OnDecodeIpcReqShareMDataCb(IntPtr userData, uint reqId, IntPtr authReq, IntPtr metadataPtr, UIntPtr metadataLen) { var tcs = BindingUtils.FromHandlePtr <TaskCompletionSource <IpcReq> >(userData); var shareMdReq = new ShareMDataReq(Marshal.PtrToStructure <ShareMDataReqNative>(authReq)); var metadataResponseList = BindingUtils.CopyToObjectList <MetadataResponse>(metadataPtr, (int)metadataLen); tcs.SetResult(new ShareMDataIpcReq(reqId, shareMdReq, metadataResponseList)); }
// ReSharper disable once UnusedMember.Local static void OnIpcReqEncodeCb(IntPtr userData, IntPtr result, string msg) { var tcs = BindingUtils.FromHandlePtr <TaskCompletionSource <string> >(userData); var ffiResult = Marshal.PtrToStructure <FfiResult>(result); if (ffiResult.ErrorCode != 0 && ffiResult.ErrorCode != -200) { Task.Run(() => { tcs.SetException(ffiResult.ToException()); }); return; } Task.Run(() => { tcs.SetResult(msg); }); }
static void OnDecodeIpcReqContainersCb(IntPtr userData, uint reqId, IntPtr authReq) { var tcs = BindingUtils.FromHandlePtr <TaskCompletionSource <IpcReq> >(userData); tcs.SetResult(new ContainersIpcReq(reqId, new ContainersReq(Marshal.PtrToStructure <ContainersReqNative>(authReq)))); }
static void OnDecodeIpcReqUnregisteredCb(IntPtr userData, uint reqId, IntPtr extraData, UIntPtr size) { var tcs = BindingUtils.FromHandlePtr <TaskCompletionSource <IpcReq> >(userData); tcs.SetResult(new UnregisteredIpcReq(reqId, extraData, (ulong)size)); }