Ejemplo n.º 1
0
 /** <inheritDoc /> */
 public void ReadBinary(IBinaryReader reader)
 {
     Byte         = reader.ReadByte("Byte");
     ByteArray    = reader.ReadByteArray("ByteArray");
     Char         = reader.ReadChar("Char");
     CharArray    = reader.ReadCharArray("CharArray");
     Short        = reader.ReadShort("Short");
     ShortArray   = reader.ReadShortArray("ShortArray");
     Int          = reader.ReadInt("Int");
     IntArray     = reader.ReadIntArray("IntArray");
     Long         = reader.ReadLong("Long");
     LongArray    = reader.ReadLongArray("LongArray");
     Boolean      = reader.ReadBoolean("Boolean");
     BooleanArray = reader.ReadBooleanArray("BooleanArray");
     Float        = reader.ReadFloat("Float");
     FloatArray   = reader.ReadFloatArray("FloatArray");
     Double       = reader.ReadDouble("Double");
     DoubleArray  = reader.ReadDoubleArray("DoubleArray");
     Decimal      = reader.ReadDecimal("Decimal");
     DecimalArray = reader.ReadDecimalArray("DecimalArray");
     Date         = reader.ReadTimestamp("Date");
     DateArray    = reader.ReadTimestampArray("DateArray");
     String       = reader.ReadString("String");
     StringArray  = reader.ReadStringArray("StringArray");
     Guid         = reader.ReadObject <Guid>("Guid");
     GuidArray    = reader.ReadGuidArray("GuidArray");
 }
Ejemplo n.º 2
0
            public void ReadBinary(IBinaryReader reader)
            {
                Assert.AreEqual(1, reader.ReadByte("Byte"));
                Assert.AreEqual(new byte[] { 1 }, reader.ReadByteArray("ByteArray"));
                Assert.AreEqual('1', reader.ReadChar("Char"));
                Assert.AreEqual(new[] { '1' }, reader.ReadCharArray("CharArray"));
                Assert.AreEqual(1, reader.ReadShort("Short"));
                Assert.AreEqual(new short[] { 1 }, reader.ReadShortArray("ShortArray"));
                Assert.AreEqual(1, reader.ReadInt("Int"));
                Assert.AreEqual(new[] { 1 }, reader.ReadIntArray("IntArray"));
                Assert.AreEqual(1, reader.ReadLong("Long"));
                Assert.AreEqual(new long[] { 1 }, reader.ReadLongArray("LongArray"));
                Assert.AreEqual(true, reader.ReadBoolean("Boolean"));
                Assert.AreEqual(new[] { true }, reader.ReadBooleanArray("BooleanArray"));
                Assert.AreEqual(1, reader.ReadFloat("Float"));
                Assert.AreEqual(new float[] { 1 }, reader.ReadFloatArray("FloatArray"));
                Assert.AreEqual(1, reader.ReadDouble("Double"));
                Assert.AreEqual(new double[] { 1 }, reader.ReadDoubleArray("DoubleArray"));
                Assert.AreEqual(1, reader.ReadDecimal("Decimal"));
                Assert.AreEqual(new decimal?[] { 1 }, reader.ReadDecimalArray("DecimalArray"));
                Assert.AreEqual(Date, reader.ReadTimestamp("Timestamp"));
                Assert.AreEqual(new DateTime?[] { Date }, reader.ReadTimestampArray("TimestampArray"));
                Assert.AreEqual("1", reader.ReadString("String"));
                Assert.AreEqual(new[] { "1" }, reader.ReadStringArray("StringArray"));
                Assert.AreEqual(Guid, reader.ReadGuid("Guid"));
                Assert.AreEqual(new Guid?[] { Guid }, reader.ReadGuidArray("GuidArray"));
                Assert.AreEqual(MyEnum.Bar, reader.ReadEnum <MyEnum>("Enum"));
                Assert.AreEqual(new[] { MyEnum.Bar }, reader.ReadEnumArray <MyEnum>("EnumArray"));

                var raw = reader.GetRawReader();

                Assert.AreEqual(1, raw.ReadByte());
                Assert.AreEqual(new byte[] { 1 }, raw.ReadByteArray());
                Assert.AreEqual('1', raw.ReadChar());
                Assert.AreEqual(new[] { '1' }, raw.ReadCharArray());
                Assert.AreEqual(1, raw.ReadShort());
                Assert.AreEqual(new short[] { 1 }, raw.ReadShortArray());
                Assert.AreEqual(1, raw.ReadInt());
                Assert.AreEqual(new[] { 1 }, raw.ReadIntArray());
                Assert.AreEqual(1, raw.ReadLong());
                Assert.AreEqual(new long[] { 1 }, raw.ReadLongArray());
                Assert.AreEqual(true, raw.ReadBoolean());
                Assert.AreEqual(new[] { true }, raw.ReadBooleanArray());
                Assert.AreEqual(1, raw.ReadFloat());
                Assert.AreEqual(new float[] { 1 }, raw.ReadFloatArray());
                Assert.AreEqual(1, raw.ReadDouble());
                Assert.AreEqual(new double[] { 1 }, raw.ReadDoubleArray());
                Assert.AreEqual(1, raw.ReadDecimal());
                Assert.AreEqual(new decimal?[] { 1 }, raw.ReadDecimalArray());
                Assert.AreEqual(Date, raw.ReadTimestamp());
                Assert.AreEqual(new DateTime?[] { Date }, raw.ReadTimestampArray());
                Assert.AreEqual("1", raw.ReadString());
                Assert.AreEqual(new[] { "1" }, raw.ReadStringArray());
                Assert.AreEqual(Guid, raw.ReadGuid());
                Assert.AreEqual(new Guid?[] { Guid }, raw.ReadGuidArray());
                Assert.AreEqual(MyEnum.Bar, raw.ReadEnum <MyEnum>());
                Assert.AreEqual(new[] { MyEnum.Bar }, raw.ReadEnumArray <MyEnum>());
            }
Ejemplo n.º 3
0
        /// <summary>
        /// Reads chars
        /// </summary>
        /// <param name="reader">this</param>
        /// <param name="length">Number of <see cref="char"/>s to read</param>
        /// <returns>All the chars</returns>
        public static char[] ReadChars(this IBinaryReader reader, int length)
        {
            var chars = new char[length];

            for (int i = 0; i < length; i++)
            {
                chars[i] = reader.ReadChar();
            }
            return(chars);
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Deserializes a value from input stream
 ///
 ///
 /// <exception cref="SerializationException"></exception>
 ///
 /// </summary>
 /// <param name="reader">The reader to use in order to get value</param>
 /// <returns>Deserializable value</returns>
 public char Deserialize(IBinaryReader reader)
 {
     try
     {
         if (this._capacity == VALUE_FOR_UNICODE_CHAR)
         {
             return(reader.ReadUnicodeChar(this._encoding));
         }
         if (this._capacity == VALUE_FOR_CHAR)
         {
             return(reader.ReadChar());
         }
     }
     catch (Exception exception)
     {
         Guard.Throw <SerializationException>(SerializerMessanger.UNEXPECTED_DESERIALIZATION_EXCEPTION_MESSAGE,
                                              exception);
     }
     return((char)0);
 }
Ejemplo n.º 5
0
        static string ReadResourceName(IBinaryReader reader, bool encrypted)
        {
            if (!encrypted)
            {
                return(reader.ReadString());
            }

            int len = reader.ReadInt32();

            if (len < 0)
            {
                throw new ApplicationException("Invalid string length");
            }
            var sb = new StringBuilder(len);

            for (int i = 0; i < len; i++)
            {
                sb.Append((char)Rol3(reader.ReadChar()));
            }
            return(sb.ToString());
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Reads an <see cref="T:System.Collections.ArrayList"/> objects from a specified <see cref="T:ExitGames.IO.IBinaryReader"/>
        /// </summary>
        /// <param name="reader">The <see cref="T:ExitGames.IO.IBinaryReader"/> to read from.</param>
        /// <param name="result">When this method returns true, contains the <see cref="T:System.Collections.ArrayList"/> that was read from the <see cref="T:ExitGames.IO.IBinaryReader"/>.</param>
        /// <returns>True if the value was successfully read; otherwise false.</returns>
        public static bool ReadVector(IBinaryReader reader, out object result)
        {
            short capacity = reader.ReadInt16();

            if (capacity == 0)
            {
                result = new ArrayList(0);
                return(true);
            }
            GpType gpType     = (GpType)((byte)reader.ReadChar());
            int    gpTypeSize = GpBinaryByteTypeConverter.GetGpTypeSize(gpType);

            if ((capacity < 0) || ((reader.BaseStream.Length - reader.BaseStream.Position) < (capacity * gpTypeSize)))
            {
                if (log.IsDebugEnabled)
                {
                    log.DebugFormat("Invalid length for vector of type {2}: length={0}, bytesLeft={1}", new object[] { capacity, reader.BaseStream.Length - reader.BaseStream.Position, gpType });
                }
                result = null;
                return(false);
            }
            ArrayList list = new ArrayList(capacity);

            for (int i = 0; i < capacity; i++)
            {
                object obj2;
                if (Read(reader, gpType, out obj2))
                {
                    list.Add(obj2);
                }
                else
                {
                    result = null;
                    return(false);
                }
            }
            result = list;
            return(true);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Reads a <see cref="Char"/> from the current position and increments <see cref="IBinaryReader.Position"/> by 2
 /// </summary>
 /// <param name="self">this</param>
 /// <returns>The char</returns>
 /// <exception cref="IOException">An I/O error occurs</exception>
 public static char ReadChar(this IBinaryReader self)
 {
     return(self.ReadChar(Encoding.UTF8));
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Reads a <see cref="Char"/> at offset <paramref name="offset"/>
 /// </summary>
 /// <param name="reader">this</param>
 /// <param name="offset">Offset</param>
 /// <param name="encoding">Encoding</param>
 /// <returns>The <see cref="Char"/></returns>
 public static char ReadCharAt(this IBinaryReader reader, long offset, Encoding encoding)
 {
     reader.Position = offset;
     return(reader.ReadChar(encoding));
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Reads a <see cref="Char"/> at offset <paramref name="offset"/>
 /// </summary>
 /// <param name="reader">this</param>
 /// <param name="offset">Offset</param>
 /// <returns>The <see cref="Char"/></returns>
 public static char ReadCharAt(this IBinaryReader reader, long offset)
 {
     reader.Position = offset;
     return(reader.ReadChar());
 }
Ejemplo n.º 10
0
            public void ReadBinary(IBinaryReader reader)
            {
                Assert.AreEqual(1, reader.ReadByte("Byte"));
                Assert.AreEqual(new byte[] {1}, reader.ReadByteArray("ByteArray"));
                Assert.AreEqual('1', reader.ReadChar("Char"));
                Assert.AreEqual(new[] {'1'}, reader.ReadCharArray("CharArray"));
                Assert.AreEqual(1, reader.ReadShort("Short"));
                Assert.AreEqual(new short[] {1}, reader.ReadShortArray("ShortArray"));
                Assert.AreEqual(1, reader.ReadInt("Int"));
                Assert.AreEqual(new[] {1}, reader.ReadIntArray("IntArray"));
                Assert.AreEqual(1, reader.ReadLong("Long"));
                Assert.AreEqual(new long[] {1}, reader.ReadLongArray("LongArray"));
                Assert.AreEqual(true, reader.ReadBoolean("Boolean"));
                Assert.AreEqual(new[] {true}, reader.ReadBooleanArray("BooleanArray"));
                Assert.AreEqual(1, reader.ReadFloat("Float"));
                Assert.AreEqual(new float[] {1}, reader.ReadFloatArray("FloatArray"));
                Assert.AreEqual(1, reader.ReadDouble("Double"));
                Assert.AreEqual(new double[] {1}, reader.ReadDoubleArray("DoubleArray"));
                Assert.AreEqual(1, reader.ReadDecimal("Decimal"));
                Assert.AreEqual(new decimal?[] {1}, reader.ReadDecimalArray("DecimalArray"));
                Assert.AreEqual(Date, reader.ReadTimestamp("Timestamp"));
                Assert.AreEqual(new DateTime?[] {Date}, reader.ReadTimestampArray("TimestampArray"));
                Assert.AreEqual("1", reader.ReadString("String"));
                Assert.AreEqual(new[] {"1"}, reader.ReadStringArray("StringArray"));
                Assert.AreEqual(Guid, reader.ReadGuid("Guid"));
                Assert.AreEqual(new Guid?[] {Guid}, reader.ReadGuidArray("GuidArray"));
                Assert.AreEqual(MyEnum.Bar, reader.ReadEnum<MyEnum>("Enum"));
                Assert.AreEqual(new[] {MyEnum.Bar}, reader.ReadEnumArray<MyEnum>("EnumArray"));

                var raw = reader.GetRawReader();

                Assert.AreEqual(1, raw.ReadByte());
                Assert.AreEqual(new byte[] { 1 }, raw.ReadByteArray());
                Assert.AreEqual('1', raw.ReadChar());
                Assert.AreEqual(new[] { '1' }, raw.ReadCharArray());
                Assert.AreEqual(1, raw.ReadShort());
                Assert.AreEqual(new short[] { 1 }, raw.ReadShortArray());
                Assert.AreEqual(1, raw.ReadInt());
                Assert.AreEqual(new[] { 1 }, raw.ReadIntArray());
                Assert.AreEqual(1, raw.ReadLong());
                Assert.AreEqual(new long[] { 1 }, raw.ReadLongArray());
                Assert.AreEqual(true, raw.ReadBoolean());
                Assert.AreEqual(new[] { true }, raw.ReadBooleanArray());
                Assert.AreEqual(1, raw.ReadFloat());
                Assert.AreEqual(new float[] { 1 }, raw.ReadFloatArray());
                Assert.AreEqual(1, raw.ReadDouble());
                Assert.AreEqual(new double[] { 1 }, raw.ReadDoubleArray());
                Assert.AreEqual(1, raw.ReadDecimal());
                Assert.AreEqual(new decimal?[] { 1 }, raw.ReadDecimalArray());
                Assert.AreEqual(Date, raw.ReadTimestamp());
                Assert.AreEqual(new DateTime?[] { Date }, raw.ReadTimestampArray());
                Assert.AreEqual("1", raw.ReadString());
                Assert.AreEqual(new[] { "1" }, raw.ReadStringArray());
                Assert.AreEqual(Guid, raw.ReadGuid());
                Assert.AreEqual(new Guid?[] { Guid }, raw.ReadGuidArray());
                Assert.AreEqual(MyEnum.Bar, raw.ReadEnum<MyEnum>());
                Assert.AreEqual(new[] { MyEnum.Bar }, raw.ReadEnumArray<MyEnum>());
            }
Ejemplo n.º 11
0
		static string ReadResourceName(IBinaryReader reader, bool encrypted) {
			if (!encrypted)
				return reader.ReadString();

			int len = reader.ReadInt32();
			if (len < 0)
				throw new ApplicationException("Invalid string length");
			var sb = new StringBuilder(len);
			for (int i = 0; i < len; i++)
				sb.Append((char)Rol3(reader.ReadChar()));
			return sb.ToString();
		}
Ejemplo n.º 12
0
 /** <inheritDoc /> */
 public void ReadBinary(IBinaryReader reader)
 {
     Byte = reader.ReadByte("Byte");
     ByteArray = reader.ReadByteArray("ByteArray");
     Char = reader.ReadChar("Char");
     CharArray = reader.ReadCharArray("CharArray");
     Short = reader.ReadShort("Short");
     ShortArray = reader.ReadShortArray("ShortArray");
     Int = reader.ReadInt("Int");
     IntArray = reader.ReadIntArray("IntArray");
     Long = reader.ReadLong("Long");
     LongArray = reader.ReadLongArray("LongArray");
     Boolean = reader.ReadBoolean("Boolean");
     BooleanArray = reader.ReadBooleanArray("BooleanArray");
     Float = reader.ReadFloat("Float");
     FloatArray = reader.ReadFloatArray("FloatArray");
     Double = reader.ReadDouble("Double");
     DoubleArray = reader.ReadDoubleArray("DoubleArray");
     Decimal = reader.ReadDecimal("Decimal");
     DecimalArray = reader.ReadDecimalArray("DecimalArray");
     Date = reader.ReadTimestamp("Date");
     DateArray = reader.ReadTimestampArray("DateArray");
     String = reader.ReadString("String");
     StringArray = reader.ReadStringArray("StringArray");
     Guid = reader.ReadObject<Guid>("Guid");
     GuidArray = reader.ReadGuidArray("GuidArray");
 }