本文整理汇总了C#中System.ByteBuffer.Complete方法的典型用法代码示例。如果您正苦于以下问题:C# ByteBuffer.Complete方法的具体用法?C# ByteBuffer.Complete怎么用?C# ByteBuffer.Complete使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.ByteBuffer
的用法示例。
在下文中一共展示了ByteBuffer.Complete方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Encode
public static ByteBuffer Encode(FrameType type, ushort channel, Transfer transfer,
ByteBuffer payload, int maxFrameSize, out int payloadSize)
{
int bufferSize = cmdBufferSize + payload.Length;
if (bufferSize > maxFrameSize)
{
bufferSize = maxFrameSize;
}
bool more = false; // estimate it first
if (payload.Length > bufferSize - 32)
{
transfer.More = more = true;
}
ByteBuffer buffer = new ByteBuffer(bufferSize, false);
EncodeFrame(buffer, type, channel, transfer);
if (more && payload.Length <= buffer.Size)
{
// guessed it wrong. correct it
transfer.More = false;
buffer.Reset();
EncodeFrame(buffer, type, channel, transfer);
}
payloadSize = Math.Min(payload.Length, buffer.Size);
AmqpBitConverter.WriteBytes(buffer, payload.Buffer, payload.Offset, payloadSize);
payload.Complete(payloadSize);
AmqpBitConverter.WriteInt(buffer.Buffer, 0, buffer.Length);
return buffer;
}
示例2: ReadByte
public static sbyte ReadByte(ByteBuffer buffer)
{
buffer.Validate(false, FixedWidth.Byte);
sbyte data = (sbyte)buffer.Buffer[buffer.Offset];
buffer.Complete(FixedWidth.Byte);
return data;
}
示例3: Decode
public void Decode(ByteBuffer buffer)
{
byte[] bytes = new byte[16];
Buffer.BlockCopy(buffer.Buffer, buffer.Offset, bytes, 0, bytes.Length);
this.uuid = new Guid(bytes);
buffer.Complete(bytes.Length);
}
示例4: ReadUByte
public static byte ReadUByte(ByteBuffer buffer)
{
buffer.EnsureLength(FixedWidth.UByte);
byte data = buffer.Buffer[buffer.Offset];
buffer.Complete(FixedWidth.UByte);
return data;
}
示例5: ReadUInt
public static uint ReadUInt(ByteBuffer buffer)
{
buffer.Validate(false, FixedWidth.UInt);
uint data = ReadUInt(buffer.Buffer, buffer.Offset, buffer.Length);
buffer.Complete(FixedWidth.UInt);
return data;
}
示例6: Decode
public static ArraySegment<byte> Decode(ByteBuffer buffer, FormatCode formatCode)
{
if (formatCode == 0 && (formatCode = AmqpEncoding.ReadFormatCode(buffer)) == FormatCode.Null)
{
return AmqpConstants.EmptyBinary;
}
int count;
AmqpEncoding.ReadCount(buffer, formatCode, FormatCode.Binary8, FormatCode.Binary32, out count);
ArraySegment<byte> value = new ArraySegment<byte>(buffer.Buffer, buffer.Offset, count);
buffer.Complete(count);
return value;
}
示例7: ReadShort
public static short ReadShort(ByteBuffer buffer)
{
buffer.Validate(false, FixedWidth.Short);
short data;
fixed (byte* p = &buffer.Buffer[buffer.Offset])
{
byte* d = (byte*)&data;
d[0] = p[1];
d[1] = p[0];
}
buffer.Complete(FixedWidth.Short);
return data;
}
示例8: ReadUShort
public static ushort ReadUShort(ByteBuffer buffer)
{
buffer.EnsureLength(FixedWidth.UShort);
ushort data;
fixed (byte* p = &buffer.Buffer[buffer.Offset])
{
byte* d = (byte*)&data;
d[0] = p[1];
d[1] = p[0];
}
buffer.Complete(FixedWidth.UShort);
return data;
}
示例9: ReadInt
public static int ReadInt(ByteBuffer buffer)
{
buffer.EnsureLength(FixedWidth.Int);
int data;
fixed (byte* p = &buffer.Buffer[buffer.Offset])
{
byte* d = (byte*)&data;
d[0] = p[3];
d[1] = p[2];
d[2] = p[1];
d[3] = p[0];
}
buffer.Complete(FixedWidth.Int);
return data;
}
示例10: TryDecodeNull
protected bool TryDecodeNull(ByteBuffer buffer)
{
buffer.Validate(false, FixedWidth.FormatCode);
byte formatCode = buffer.Buffer[buffer.Offset];
if (formatCode == FormatCode.Null)
{
buffer.Complete(FixedWidth.FormatCode);
return true;
}
else
{
return false;
}
}
示例11: DecodeHeader
void DecodeHeader(ByteBuffer buffer)
{
this.Size = (int)AmqpBitConverter.ReadUInt(buffer);
this.DataOffset = AmqpBitConverter.ReadUByte(buffer);
this.Type = (FrameType)AmqpBitConverter.ReadUByte(buffer);
this.Channel = AmqpBitConverter.ReadUShort(buffer);
// skip extended header
buffer.Complete(this.DataOffset * 4 - Frame.HeaderSize);
}
示例12: Decode
public static Frame Decode(ByteBuffer buffer, bool fullBody = true)
{
Frame frame = new Frame();
frame.RawBuffer = buffer.Array;
// Header
frame.size = (int)AmqpBitConverter.ReadUInt(buffer);
frame.dataOffset = AmqpBitConverter.ReadUByte(buffer);
frame.Type = (FrameType)AmqpBitConverter.ReadUByte(buffer);
frame.Channel = AmqpBitConverter.ReadUShort(buffer);
// skip extended header
buffer.Complete(frame.dataOffset * 4 - Frame.HeaderSize);
// Command
if (buffer.Length > 0)
{
frame.Command = (Performative)AmqpCodec.CreateAmqpDescribed(buffer);
if (fullBody)
{
frame.Command.DecodeValue(buffer);
}
}
return frame;
}
示例13: ReadDouble
public static double ReadDouble(ByteBuffer buffer)
{
buffer.EnsureLength(FixedWidth.Double);
double data;
fixed (byte* p = &buffer.Buffer[buffer.Offset])
{
byte* d = (byte*)&data;
d[0] = p[7];
d[1] = p[6];
d[2] = p[5];
d[3] = p[4];
d[4] = p[3];
d[5] = p[2];
d[6] = p[1];
d[7] = p[0];
}
buffer.Complete(FixedWidth.Double);
return data;
}
示例14: ReadUuid
public static Guid ReadUuid(ByteBuffer buffer)
{
buffer.EnsureLength(FixedWidth.Uuid);
Guid data;
fixed (byte* p = &buffer.Buffer[buffer.Offset])
{
byte* d = (byte*)&data;
d[0] = p[3];
d[1] = p[2];
d[2] = p[1];
d[3] = p[0];
d[4] = p[5];
d[5] = p[4];
d[6] = p[7];
d[7] = p[6];
*((ulong*)&d[8]) = *((ulong*)&p[8]);
}
buffer.Complete(FixedWidth.Uuid);
return data;
}
示例15: ReadObject
public override object ReadObject(ByteBuffer buffer)
{
FormatCode formatCode = AmqpEncoding.ReadFormatCode(buffer);
if (formatCode == FormatCode.Null)
{
return null;
}
int size;
int count;
int encodeWidth;
Collection effectiveType;
this.Initialize(buffer, formatCode, out size, out count, out encodeWidth, out effectiveType);
int offset = buffer.Offset;
object container = effectiveType.CreateInstance();
if (count > 0)
{
effectiveType.ReadMembers(buffer, container, ref count);
if (count > 0)
{
// skip unknow members: todo: support IExtensibleDataObject
buffer.Complete(size - (buffer.Offset - offset) - encodeWidth);
}
}
return container;
}