public uint UnpackInt(PropertyInfo info, Bitstream stream) { var flags = info.Flags; if (flags.HasFlag(PropertyInfo.MultiFlag.EncodedAgainstTickcount)) { if (flags.HasFlag(PropertyInfo.MultiFlag.Unsigned)) { return(stream.ReadVarUInt()); } else { uint value = stream.ReadVarUInt(); return(unchecked ((uint)((-(value & 1)) ^ (value >> 1)))); } } else { byte numBits = info.NumBits; uint isUnsigned = Convert.ToUInt32(flags.HasFlag(PropertyInfo.MultiFlag.Unsigned)); uint signer = (0x80000000 >> (32 - numBits)) & unchecked ((uint)(isUnsigned - 1)); uint value = stream.ReadBits(numBits) ^ signer; return(value - signer); } }
private void HandleMessage(Bitstream stream) { uint type = stream.ReadVarUInt(); uint length = stream.ReadVarUInt(); byte[] bytes = new byte[length]; stream.Read(bytes, 0, (int)length); receivedInBand.Enqueue(new Message { Type = type, Data = bytes, }); }
public ulong UnpackInt64(PropertyInfo info, Bitstream stream) { if (info.Flags.HasFlag(PropertyInfo.MultiFlag.EncodedAgainstTickcount)) { return(stream.ReadVarUInt()); } var negate = false; var secondBits = (byte)(info.NumBits - 32); if (!info.Flags.HasFlag(PropertyInfo.MultiFlag.Unsigned)) { --secondBits; if (stream.ReadBool()) { negate = true; } } ulong a = stream.ReadBits(32); ulong b = stream.ReadBits(secondBits); var value = (b << 32) | a; if (negate) { value = unchecked ((ulong)((long)value * -1)); } return(value); }
public uint UnpackInt(PropertyInfo info, Bitstream stream) { var flags = info.Flags; if (flags.HasFlag(PropertyInfo.MultiFlag.EncodedAgainstTickcount)) { if (flags.HasFlag(PropertyInfo.MultiFlag.Unsigned)) { return stream.ReadVarUInt(); } else { uint value = stream.ReadVarUInt(); return unchecked((uint) ((-(value & 1)) ^ (value >> 1))); } } else { byte numBits = info.NumBits; uint isUnsigned = Convert.ToUInt32(flags.HasFlag(PropertyInfo.MultiFlag.Unsigned)); uint signer = (0x80000000 >> (32 - numBits)) & unchecked((uint) (isUnsigned - 1)); uint value = stream.ReadBits(numBits) ^ signer; return value - signer; } }
private uint ReadFieldNumber(uint lastField, Bitstream stream) { if (stream.ReadBool()) { return(unchecked (lastField + 1)); } var value = stream.ReadVarUInt(); if (value == 0x3FFF) { return(uint.MaxValue); } return(unchecked (lastField + value + 1)); }
public ulong UnpackInt64(PropertyInfo info, Bitstream stream) { if (info.Flags.HasFlag(PropertyInfo.MultiFlag.EncodedAgainstTickcount)) { log.DebugFormat( "{0}.{1} is encoded against tick count", info.DtName, info.VarName); return(stream.ReadVarUInt()); } else { bool negate = false; byte secondBits = (byte)(info.NumBits - 32); if (!info.Flags.HasFlag(PropertyInfo.MultiFlag.Unsigned)) { --secondBits; if (stream.ReadBool()) { negate = true; } } Preconditions.CheckArgument(info.NumBits >= secondBits); ulong a = stream.ReadBits(32); ulong b = stream.ReadBits(secondBits); ulong value = (b << 32) | a; if (negate) { value = unchecked ((ulong)((long)value * -1)); } return(value); } }
public ulong UnpackInt64(PropertyInfo info, Bitstream stream) { if (info.Flags.HasFlag(PropertyInfo.MultiFlag.EncodedAgainstTickcount)) { log.DebugFormat( "{0}.{1} is encoded against tick count", info.DtName, info.VarName); return stream.ReadVarUInt(); } else { bool negate = false; byte secondBits = (byte) (info.NumBits - 32); if (!info.Flags.HasFlag(PropertyInfo.MultiFlag.Unsigned)) { --secondBits; if (stream.ReadBool()) { negate = true; } } Preconditions.CheckArgument(info.NumBits >= secondBits); ulong a = stream.ReadBits(32); ulong b = stream.ReadBits(secondBits); ulong value = (b << 32) | a; if (negate) { value = unchecked((ulong) ((long) value * -1)); } return value; } }
private uint ReadFieldNumber(uint lastField, Bitstream stream) { if (stream.ReadBool()) { return unchecked(lastField + 1); } else { uint value = stream.ReadVarUInt(); if (value == 0x3FFF) { return UInt32.MaxValue; } else { return unchecked(lastField + value + 1); } } }