예제 #1
0
        private byte[] ReadStringBytes()
        {
            var sizeBytes = _io.ReadBytes(IntSizeX2);
            var totalSize = ByteArrayConverter.ByteArrayToInt(sizeBytes);

            // Use offset of int size to read real size
            var stringSize = ByteArrayConverter.ByteArrayToInt(sizeBytes, OdbType.Integer.Size);
            var bytes      = ReadBytes(stringSize);

            // Reads extra bytes
            ReadBytes(totalSize - stringSize);

            var bytes2 = new byte[stringSize + IntSizeX2];

            for (var i = 0; i < IntSizeX2; i++)
            {
                bytes2[i] = sizeBytes[i];
            }

            for (var i = 0; i < bytes.Length; i++)
            {
                bytes2[i + 8] = bytes[i];
            }

            return(bytes2);
        }
예제 #2
0
        public void WriteString(string s, bool writeInTransaction, int totalSpace)
        {
            var bytes = ByteArrayConverter.StringToByteArray(s, totalSpace);

            if (!writeInTransaction)
            {
                _io.WriteBytes(bytes);
            }
            else
            {
                _session.GetTransaction().ManageWriteAction(_io.CurrentPosition, bytes);
                EnsureSpaceFor(bytes.Length, OdbType.String);
            }
        }
예제 #3
0
        public void WriteBigDecimal(Decimal d, bool writeInTransaction)
        {
            var bytes = ByteArrayConverter.DecimalToByteArray(d);

            if (!writeInTransaction)
            {
                _io.WriteBytes(bytes);
            }
            else
            {
                _session.GetTransaction().ManageWriteAction(_io.CurrentPosition, bytes);
                EnsureSpaceFor(bytes.Length, OdbType.Decimal);
            }
        }
예제 #4
0
 public bool ReadBoolean()
 {
     return(ByteArrayConverter.ByteArrayToBoolean(ReadBooleanBytes()));
 }
예제 #5
0
 public string ReadString()
 {
     return(ByteArrayConverter.ByteArrayToString(ReadStringBytes()));
 }
예제 #6
0
 public DateTime ReadDate()
 {
     return(ByteArrayConverter.ByteArrayToDate(ReadDateBytes()));
 }
예제 #7
0
 public Decimal ReadBigDecimal()
 {
     return(ByteArrayConverter.ByteArrayToDecimal(ReadBigDecimalBytes()));
 }
예제 #8
0
 public double ReadDouble()
 {
     return(ByteArrayConverter.ByteArrayToDouble(ReadDoubleBytes()));
 }
예제 #9
0
 public ulong ReadULong()
 {
     return(ByteArrayConverter.ByteArrayToULong(ReadULongBytes()));
 }
예제 #10
0
 public float ReadFloat()
 {
     return(ByteArrayConverter.ByteArrayToFloat(ReadFloatBytes()));
 }
예제 #11
0
 public long ReadLong()
 {
     return(ByteArrayConverter.ByteArrayToLong(ReadLongBytes()));
 }
예제 #12
0
 public uint ReadUInt()
 {
     return(ByteArrayConverter.ByteArrayToUInt(ReadUIntBytes()));
 }
예제 #13
0
 public int ReadInt()
 {
     return(ByteArrayConverter.ByteArrayToInt(ReadIntBytes()));
 }
예제 #14
0
 public ushort ReadUShort()
 {
     return(ByteArrayConverter.ByteArrayToUShort(ReadUShortBytes()));
 }
예제 #15
0
 public char ReadChar()
 {
     return(ByteArrayConverter.ByteArrayToChar(ReadCharBytes()));
 }