Пример #1
0
        public CommAreaGroupDescriptor(
            DrdaStreamReader reader)
        {
            if (reader.ReadUInt8() == 0xFF)
            {
                return;
            }

            SqlCode  = reader.ReadUInt32();
            SqlState = reader.ReadString(5);
            var sqlErrProc = reader.ReadString(8);

            if (reader.ReadUInt8() != 0xFF)
            {
                RowsFetched = reader.ReadUInt64();
                RowsUpdated = reader.ReadUInt32();

                var sqlErrs = reader.ReadBytes(12); // 3 * sizeof(UInt32)
                var sqlWarn = reader.ReadBytes(11); // 11 * sizeof(Byte)

                var rdbName = reader.ReadUInt16();

                SqlMessage = reader.ReadVcmVcs();
            }

            if (reader.ReadUInt8() != 0xFF)
            {
                // WORKWORK
            }
        }
        public static String ReadVarString(
            this DrdaStreamReader reader)
        {
            var size  = reader.ReadUInt16();
            var bytes = reader.ReadBytes(size);

            return(Encoding.UTF8.GetString(bytes));
        }
        private static String ReadVarString(
            this DrdaStreamReader reader,
            Byte hiByte)
        {
            var size  = (hiByte << 8) | reader.ReadUInt8();
            var bytes = reader.ReadBytes((UInt32)size);

            return(Encoding.UTF8.GetString(bytes));
        }
Пример #4
0
 public BytesParameter(
     DrdaStreamReader reader,
     UInt32 byteArraySize,
     CodePoint codePoint)
     : this(
         codePoint,
         reader.ReadBytes(
             byteArraySize - BaseSize))
 {
 }
Пример #5
0
        internal void Process(
            QueryContext context)
        {
            using var stream = new MemoryStream(_messageBytes, false);

            var reader = new DrdaStreamReader(stream);

            while (stream.Position < stream.Length)
            {
                var length = reader.ReadUInt8();
                var type   = reader.ReadUInt8();
                var id     = reader.ReadUInt8();

                // TODO: olegra - store full parsing tree here later

                if (id != 0xD0)
                {
                    reader.ReadBytes((UInt32)length - 3);
                    continue;
                }

                var triples = new Triple[length / 3 - 1];
                for (var index = 0; index < triples.Length; ++index)
                {
                    switch (type)
                    {
                    case 117:     // GDA
                    case 118:     // NGDA
                        triples[index] = new Triple(
                            reader.ReadUInt8(),
                            reader.ReadUInt16());
                        break;

                    case 113:     // RLO
                        // TODO: olegra - skip for now
                        reader.ReadUInt8();
                        reader.ReadUInt16();
                        break;
                    }
                }

                for (var index = 0; index < triples.Length; ++index)
                {
                    context.Columns[index].TripletType     = triples[index].Type;
                    context.Columns[index].TripletDataSize = triples[index].Size;
                }
            }
        }