コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }