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); }
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()}"); }