コード例 #1
0
        private unsafe void ProcessCommitTran(IMessageChannel channel, MessageChunk *first)
        {
            var req = new CommitTranRequire();

            req.FastReadFrom(first);
            channel.ReturnMessageChunks(first);
            NativeApi.CommitTransaction(req.TxnPtr, req.WaitHandle, channel.RemoteRuntimeId);
        }
コード例 #2
0
ファイル: AppStoreApi.cs プロジェクト: enjoycode/appbox.clr
        public async ValueTask CommitTransactionAsync(IntPtr txnPtr)
        {
            var ts  = taskPool.Allocate();
            var req = new CommitTranRequire(txnPtr, ts.GCHandlePtr);

            channel.SendMessage(ref req);
            var msg = await ts.WaitAsync();

            taskPool.Free(ts);
            if (msg.Data1 == IntPtr.Zero)
            {
                return;
            }
            throw new Exception($"Commit error: {msg.Data1.ToInt32()}");
        }