コード例 #1
0
        public static DoneProcToken Create(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var t = new DoneProcToken();

            t.Read(stream, env, previous);
            return(t);
        }
コード例 #2
0
        private IEnumerable <IToken> ParseInternal(Stream stream, DbEnvironment env)
        {
            IFormatToken previousFormatToken = null;

            while (stream.Position < stream.Length)
            {
                var tokenType = (TokenType)stream.ReadByte();

                if (Readers.ContainsKey(tokenType))
                {
                    var t = Readers[tokenType](stream, env, previousFormatToken);

                    if (t is IFormatToken token)
                    {
                        Logger.Instance?.WriteLine($"**Set new format token**");
                        previousFormatToken = token;
                    }

                    yield return(t);
                }
                else
                {
                    Logger.Instance?.WriteLine($"!!! Hit unknown token type {tokenType} !!!");
                    var t = new CatchAllToken(tokenType);
                    t.Read(stream, env, previousFormatToken);
                    yield return(t);
                }
            }
        }
コード例 #3
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var remainingLength = stream.ReadUShort();

            _capabilityBytes = new byte[remainingLength];
            stream.Read(_capabilityBytes, 0, remainingLength);
        }
コード例 #4
0
        public static ServerCapabilityToken Create(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var t = new ServerCapabilityToken();

            t.Read(stream, env, previous);
            return(t);
        }
コード例 #5
0
        public static OptionCommandToken Create(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var t = new OptionCommandToken();

            t.Read(stream, env, previous);
            return(t);
        }
コード例 #6
0
 public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
 {
     Status           = (DoneProcStatus)stream.ReadUShort();
     TransactionState = (TranState)stream.ReadUShort();
     Count            = stream.ReadInt();
     Logger.Instance?.WriteLine($"<- {Status}, {TransactionState}, {Count}");
 }
コード例 #7
0
        public static ParametersToken Create(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var t = new ParametersToken();

            t.Read(stream, env, previous);
            return(t);
        }
コード例 #8
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var remainingLength = stream.ReadInt();
            var status          = stream.ReadByte();

            HasParameters = (status & 1) > 0;
            CommandText   = stream.ReadString(remainingLength - 1, env.Encoding);
        }
コード例 #9
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var remainingLength = CalculateRemainingLength(stream);

            for (uint i = 0; i < remainingLength; i++)
            {
                stream.ReadByte();
            }
        }
コード例 #10
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            //var remainingLength = stream.ReadShort();
            var remainingLength = CalculateRemainingLength(Type, stream);

            for (ulong i = 0; i < remainingLength; i++)
            {
                stream.ReadByte();
            }
        }
コード例 #11
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previousFormatToken)
        {
            var remainingLength = stream.ReadShort();

            using (var ts = new ReadablePartialStream(stream, remainingLength))
            {
                Command   = (CommandType)ts.ReadByte();
                Option    = (OptionType)ts.ReadByte();
                Arguments = ts.ReadByteLengthPrefixedByteArray();
            }
        }
コード例 #12
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previousFormatToken)
        {
            var remainingLength = stream.ReadByte();

            using (var ts = new ReadablePartialStream(stream, remainingLength))
            {
                Status    = (MsgStatus)ts.ReadByte();
                MessageId = (MsgId)ts.ReadShort();
            }
            Logger.Instance?.WriteLine($"<- {Type}: {Status} {MessageId}");
        }
コード例 #13
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previousFormatToken)
        {
            Logger.Instance?.WriteLine($"<- {Type}");
            var values = new List <object>();

            foreach (var format in previousFormatToken.Formats)
            {
                values.Add(ValueReader.Read(stream, format, env));
            }
            Values = values.ToArray();
        }
コード例 #14
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var parameters = new List <Parameter>();

            foreach (var format in previous.Formats)
            {
                var p = new Parameter
                {
                    Format = format,
                    Value  = ValueReader.Read(stream, format, env)
                };
                parameters.Add(p);
            }
            Parameters = parameters.ToArray();
        }
コード例 #15
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var parameters = new List <Parameter>();

            foreach (var format in previous.Formats)
            {
                var p = new Parameter
                {
                    Format = format,
                    Value  = ValueReader.Read(stream, format, env)
                };
                parameters.Add(p);
            }
            Parameters = parameters.ToArray();
            Logger.Instance?.WriteLine($"<- {Type}: {Parameters.Length} parameters");
        }
コード例 #16
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            Logger.Instance?.WriteLine($"<- {Type}");
            var remainingLength = stream.ReadUShort();

            using (var ts = new ReadablePartialStream(stream, remainingLength))
            {
                for (var i = 0; i < previous.Formats.Length; i++)
                {
                    var customFormatInfo = ts.ReadByteLengthPrefixedString(env.Encoding);
                    if (!string.IsNullOrWhiteSpace(customFormatInfo))
                    {
                        Logger.Instance?.WriteLine($"  <- Fmt: {customFormatInfo}");
                    }
                }
            }
        }
コード例 #17
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var remainingLength = stream.ReadUShort();

            using (var ts = new ReadablePartialStream(stream, remainingLength))
            {
                Status = (LoginStatus)ts.ReadByte();
                var versionBuffer = new byte[4];
                ts.Read(versionBuffer, 0, 4);
                TdsVersion = $"{versionBuffer[0]}.{versionBuffer[1]}.{versionBuffer[2]}.{versionBuffer[3]}";

                ProgramName = ts.ReadByteLengthPrefixedString(env.Encoding);

                ts.Read(versionBuffer, 0, 4);
                ProgramVersion = $"{versionBuffer[0]}.{versionBuffer[1]}.{versionBuffer[2]}"; //Sybase driver only reports the first 3 version numbers, eg: 15.0.0
            }
            Logger.Instance?.WriteLine($"<- {Type}: TDS {TdsVersion}, {ProgramName} {ProgramVersion}");
        }
コード例 #18
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previousFormatToken)
        {
            Logger.Instance?.WriteLine($"<- {Type}");
            var remainingLength = stream.ReadUInt();

            using (var ts = new ReadablePartialStream(stream, remainingLength))
            {
                var formats     = new List <FormatItem>();
                var columnCount = ts.ReadUShort();

                for (var i = 0; i < columnCount; i++)
                {
                    formats.Add(FormatItem.ReadForRow(ts, env.Encoding, Type));
                }

                Formats = formats.ToArray();
            }
        }
コード例 #19
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previousFormatToken)
        {
            var remainingLength = Type == TokenType.TDS_PARAMFMT
                ? stream.ReadUShort()
                : stream.ReadUInt();

            using (var ts = new ReadablePartialStream(stream, remainingLength))
            {
                var paramCount = ts.ReadUShort();
                var formats    = new List <FormatItem>();

                for (var i = 0; i < paramCount; i++)
                {
                    formats.Add(FormatItem.ReadForParameter(ts, env.Encoding, Type));
                }

                Formats = formats.ToArray();
            }
        }
コード例 #20
0
        public IEnumerable <IToken> Read(TokenReceiveStream stream, DbEnvironment env)
        {
            IFormatToken previousFormatToken = null;

            while (stream.DataAvailable)
            {
                var rawTokenType = (byte)stream.ReadByte();
                var tokenType    = (TokenType)rawTokenType;

                if (Readers.ContainsKey(tokenType))
                {
                    var t = Readers[tokenType](stream, env, previousFormatToken);

                    if (t is IFormatToken token)
                    {
                        Logger.Instance?.WriteLine($"**Set new format token**");
                        previousFormatToken = token;
                    }

                    yield return(t);
                }
                else
                {
                    Logger.Instance?.WriteLine($"!!! Hit unknown token type {tokenType} !!!");
                    var t = new CatchAllToken(rawTokenType);
                    t.Read(stream, env, previousFormatToken);
                    yield return(t);
                }

                if (stream.IsCancelled)
                {
                    Logger.Instance?.WriteLine($"{nameof(TokenReceiveStream)} - received cancel status flag");

                    yield return
                        (new DoneToken
                    {
                        Count = 0,
                        Status = DoneToken.DoneStatus.TDS_DONE_ATTN
                    });
                }
            }
        }
コード例 #21
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var remainingLength = stream.ReadUShort();

            using (var ts = new ReadablePartialStream(stream, remainingLength))
            {
                MessageNumber = ts.ReadInt();
                State         = ts.ReadByte();          // Already checked remainingLength so can use non-checking version
                Severity      = ts.ReadByte();
                var sqlStateLen = ts.ReadByte();
                SqlState = new byte[sqlStateLen];
                ts.Read(SqlState, 0, sqlStateLen);
                Status            = (EedStatus)ts.ReadByte();
                TransactionStatus = (TranState)ts.ReadUShort();
                Message           = ts.ReadShortLengthPrefixedString(env.Encoding);
                ServerName        = ts.ReadByteLengthPrefixedString(env.Encoding);
                ProcedureName     = ts.ReadByteLengthPrefixedString(env.Encoding);
                LineNumber        = ts.ReadUShort();
            }
        }
コード例 #22
0
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var remainingLength = stream.ReadShort();

            using (var ts = new ReadablePartialStream(stream, remainingLength))
            {
                var changes = new List <EnvironmentChange>();

                while (ts.Position < ts.Length)
                {
                    var change = new EnvironmentChange
                    {
                        Type     = (ChangeType)ts.ReadByte(),
                        NewValue = ts.ReadByteLengthPrefixedString(env.Encoding),
                        OldValue = ts.ReadByteLengthPrefixedString(env.Encoding)
                    };
                    changes.Add(change);
                }
                Changes = changes.ToArray();
            }
        }
コード例 #23
0
 public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
 {
     throw new NotImplementedException();
 }
コード例 #24
0
 public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
 {
     Status = stream.ReadInt();
     Logger.Instance?.WriteLine($"<- {Type}: {Status}");
 }