示例#1
0
        public char ReadChar()
        {
            InitializeReading();

            try
            {
                long startingPos = this.byteBuffer.Position;
                try
                {
                    int type = this.dataIn.ReadByte();

                    if (type == PrimitiveMap.CHAR_TYPE)
                    {
                        return(this.dataIn.ReadChar());
                    }
                    else if (type == PrimitiveMap.NULL)
                    {
                        this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
                        throw new NMSException("Cannot convert Null type to a char");
                    }
                    else
                    {
                        this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
                        throw new MessageFormatException("Value is not a Char type.");
                    }
                }
                catch (FormatException e)
                {
                    this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
                    throw NMSExceptionSupport.CreateMessageFormatException(e);
                }
            }
            catch (EndOfStreamException e)
            {
                throw NMSExceptionSupport.CreateMessageEOFException(e);
            }
            catch (IOException e)
            {
                throw NMSExceptionSupport.CreateMessageFormatException(e);
            }
        }
示例#2
0
        public Object ReadObject()
        {
            InitializeReading();

            long startingPos = this.byteBuffer.Position;

            try
            {
                int type = this.dataIn.ReadByte();

                if (type == PrimitiveMap.BIG_STRING_TYPE)
                {
                    return(this.dataIn.ReadString32());
                }
                else if (type == PrimitiveMap.STRING_TYPE)
                {
                    return(this.dataIn.ReadString16());
                }
                else if (type == PrimitiveMap.LONG_TYPE)
                {
                    return(this.dataIn.ReadInt64());
                }
                else if (type == PrimitiveMap.INTEGER_TYPE)
                {
                    return(this.dataIn.ReadInt32());
                }
                else if (type == PrimitiveMap.SHORT_TYPE)
                {
                    return(this.dataIn.ReadInt16());
                }
                else if (type == PrimitiveMap.FLOAT_TYPE)
                {
                    return(this.dataIn.ReadSingle());
                }
                else if (type == PrimitiveMap.DOUBLE_TYPE)
                {
                    return(this.dataIn.ReadDouble());
                }
                else if (type == PrimitiveMap.CHAR_TYPE)
                {
                    return(this.dataIn.ReadChar());
                }
                else if (type == PrimitiveMap.BYTE_TYPE)
                {
                    return(this.dataIn.ReadByte());
                }
                else if (type == PrimitiveMap.BOOLEAN_TYPE)
                {
                    return(this.dataIn.ReadBoolean());
                }
                else if (type == PrimitiveMap.BYTE_ARRAY_TYPE)
                {
                    int    length = this.dataIn.ReadInt32();
                    byte[] data   = new byte[length];
                    this.dataIn.Read(data, 0, length);
                    return(data);
                }
                else if (type == PrimitiveMap.NULL)
                {
                    return(null);
                }
                else
                {
                    this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
                    throw new MessageFormatException("Value is not a known type.");
                }
            }
            catch (FormatException e)
            {
                this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
                throw NMSExceptionSupport.CreateMessageFormatException(e);
            }
            catch (EndOfStreamException e)
            {
                throw NMSExceptionSupport.CreateMessageEOFException(e);
            }
            catch (IOException e)
            {
                throw NMSExceptionSupport.CreateMessageFormatException(e);
            }
        }
示例#3
0
        public string ReadString()
        {
            InitializeReading();

            long startingPos = this.byteBuffer.Position;

            try
            {
                int type = this.dataIn.ReadByte();

                switch (type)
                {
                case PrimitiveMap.BIG_STRING_TYPE:
                    return(this.dataIn.ReadString32());

                case PrimitiveMap.STRING_TYPE:
                    return(this.dataIn.ReadString16());

                case PrimitiveMap.LONG_TYPE:
                    return(this.dataIn.ReadInt64().ToString());

                case PrimitiveMap.INTEGER_TYPE:
                    return(this.dataIn.ReadInt32().ToString());

                case PrimitiveMap.SHORT_TYPE:
                    return(this.dataIn.ReadInt16().ToString());

                case PrimitiveMap.FLOAT_TYPE:
                    return(this.dataIn.ReadSingle().ToString());

                case PrimitiveMap.DOUBLE_TYPE:
                    return(this.dataIn.ReadDouble().ToString());

                case PrimitiveMap.CHAR_TYPE:
                    return(this.dataIn.ReadChar().ToString());

                case PrimitiveMap.BYTE_TYPE:
                    return(this.dataIn.ReadByte().ToString());

                case PrimitiveMap.BOOLEAN_TYPE:
                    return(this.dataIn.ReadBoolean().ToString());

                case PrimitiveMap.NULL:
                    return(null);

                default:
                    this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
                    throw new MessageFormatException("Value is not a known type.");
                }
            }
            catch (FormatException e)
            {
                this.byteBuffer.Seek(startingPos, SeekOrigin.Begin);
                throw NMSExceptionSupport.CreateMessageFormatException(e);
            }
            catch (EndOfStreamException e)
            {
                throw NMSExceptionSupport.CreateMessageEOFException(e);
            }
            catch (IOException e)
            {
                throw NMSExceptionSupport.CreateMessageFormatException(e);
            }
        }