public override object ReadValue(HessianReader reader, HessianContext context, Type objectType, byte initialOctet) { var builder = new StringBuilder(); int len = 0; while (Constants.BC_STRING_CHUNK == initialOctet) { len = reader.ReadUInt16(); builder.Append(reader.ReadString(len)); initialOctet = reader.ReadByte(); } if (0x00 <= initialOctet && initialOctet <= 0x1f) { len = initialOctet; } else if (0x30 <= initialOctet && initialOctet <= 0x34) { var b0 = reader.ReadByte(); len = ((initialOctet - 0x30) << 8) + b0; } else if (Constants.BC_STRING == initialOctet) { len = reader.ReadUInt16(); } else { throw Exceptions.UnExpectedInitialOctet(this, initialOctet); } builder.Append(reader.ReadString(len)); return(builder.ToString()); }
public override object ReadValue(HessianReader reader, HessianContext context, Type objectType, byte initialOctet) { if (0x80 <= initialOctet && initialOctet <= 0xbf) { return(initialOctet - 0x90); } else if (0xc0 <= initialOctet && initialOctet <= 0xcf) { var b0 = reader.ReadByte(); return(((initialOctet - 0xc8) << 8) + b0); } else if (0xd0 <= initialOctet && initialOctet <= 0xd7) { var s = reader.ReadUInt16(); return(((initialOctet - 0xd4) << 16) + s); } else if (Constants.BC_INT == initialOctet) { return(reader.ReadInt32()); } else { throw Exceptions.UnExpectedInitialOctet(this, initialOctet); } }
public override object ReadValue(HessianReader reader, HessianContext context, Type objectType, byte initialOctet) { if (0xd8 <= initialOctet && initialOctet <= 0xef) { return((long)(initialOctet - 0xe0)); } else if (0xf0 <= initialOctet && initialOctet <= 0xff) { var b0 = reader.ReadByte(); return((long)(((initialOctet - 0xf8) << 8) + b0)); } else if (0x38 <= initialOctet && initialOctet <= 0x3f) { var s = reader.ReadUInt16(); return((long)(((initialOctet - 0x3c) << 16) + s)); } else if (Constants.BC_LONG_INT == initialOctet) { return((long)reader.ReadInt32()); } else if (Constants.BC_LONG == initialOctet) { return(reader.ReadInt64()); } else { throw Exceptions.UnExpectedInitialOctet(this, initialOctet); } }