public unsafe void WriteObject(BinSerializer bs) { bs.Write(WaitHandle.ToInt64()); bs.Write(TxnPtr.ToInt64()); bs.Write(Require.RaftGroupId); bs.Write(Require.SchemaVersion); bs.Write((byte)Require.DataCF); bs.Write(Require.Merge); bs.Write(Require.ReturnExists); bs.Write(Require.KeySize.ToInt32()); var span = new ReadOnlySpan <byte>(Require.KeyPtr.ToPointer(), Require.KeySize.ToInt32()); bs.Stream.Write(span); bs.Write(Require.RefsSize.ToInt32()); if (Require.RefsSize.ToInt32() > 0) { span = new ReadOnlySpan <byte>(Require.RefsPtr.ToPointer(), Require.RefsSize.ToInt32()); bs.Stream.Write(span); } int dataSize = NativeBytes.GetSize(Require.DataPtr); bs.Write(dataSize); span = new ReadOnlySpan <byte>((Require.DataPtr + 4).ToPointer(), dataSize); bs.Stream.Write(span); }
public unsafe void WriteObject(BinSerializer bs) { bs.Write(TxnPtr.ToInt64()); bs.Write(WaitHandle.ToInt64()); bs.Write(PartitionInfo.Flags); bs.Write(PartitionInfo.KeySize.ToInt32()); var span = new ReadOnlySpan <byte>(PartitionInfo.KeyPtr.ToPointer(), PartitionInfo.KeySize.ToInt32()); bs.Stream.Write(span); }
public void WriteObject(BinSerializer bs) { bs.Write((byte)Source); bs.Write((byte)Protocol); long hv = WaitHandle.ToInt64(); unsafe { var span = new Span <byte>(&hv, 8); bs.Stream.Write(span); } //注意: 根据类型不同的序列化方式,暂只支持Bin及Json if (Protocol == InvokeProtocol.Json) { //注意: 不catch异常,序列化错误由Channel发送处理 Result.SerializeAsInvokeResponse(bs.Stream, SourceMsgId, Error != InvokeResponseError.None); } else { bs.Write(SourceMsgId); bs.Write((byte)Error); Result.WriteObject(bs); } }