Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
 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);
     }
 }