Exemple #1
0
        public TdsToken ReadToken(TdsResponseStream stream, Encoding encoder, FormatToken lastFormat)
        {
            var tokenType = (TokenType)stream.Read();

            TdsToken        token = null;
            TokenDescriptor desc;

            if (_tokenDescriptors.TryGetValue(tokenType, out desc))
            {
                if (desc.Builder == null)
                {
                    token = CreateNotImplementedToken(desc, stream);
                }
                else
                {
                    //_logger?.LogTrace($"Building token of type {tokenType}");
                    token = desc.Builder(desc, stream, encoder, lastFormat);
                    _logger?.LogTrace(token.ToString());
                }
            }
            else
            {
                _logger?.LogError($"Unknown token of type {tokenType}");
                throw new Exception($"Unknown token of type {tokenType}");
            }

            return(token);
        }
Exemple #2
0
        private void EnvChangeRecived(TdsToken token)
        {
            var change = (EnvChangeToken)token;

            foreach (var c in change.Changes)
            {
                switch (c.Type)
                {
                case EnvChangeToken.EnvType.TDS_ENV_DB:
                    Database = c.NewValue;
                    _logger?.LogInformation($"Database changed from {c.OldValue} to {c.NewValue}");
                    break;

                case EnvChangeToken.EnvType.TDS_ENV_LANG:
                    Language = c.NewValue;
                    _logger?.LogInformation($"Language changed from {c.OldValue} to {c.NewValue}");
                    break;

                case EnvChangeToken.EnvType.TDS_ENV_CHARSET:
                    Encoder = GetEncoder(c.NewValue);
                    _logger?.LogInformation($"Charset changed from {c.OldValue} to {c.NewValue} ({Encoder.WebName})");
                    break;

                case EnvChangeToken.EnvType.TDS_ENV_PACKSIZE:
                    PacketSize = int.Parse(c.NewValue);
                    _logger?.LogInformation($"Packet size changed from {c.OldValue} to {c.NewValue}");
                    break;

                default:
                    _logger?.LogWarning($"Unknown env change {c.Type} from {c.OldValue} to {c.NewValue}");
                    break;
                }
            }
        }
Exemple #3
0
        public IEnumerable <TdsToken> GetResponseStream()
        {
            FormatToken format = null;

            while (true)
            {
                if (!ResponseAtEnd)
                {
                    TdsToken token = _tokenBuilder.ReadToken(_res, Encoder, format);

                    if (_tokenHandlers.TryGetValue(token.GetType(), out var handler))
                    {
                        handler(token);
                    }

                    if (token is FormatToken)
                    {
                        format = (FormatToken)token;
                    }

                    ResponseAtEnd = token.IsEndOfResponse();
                    yield return(token);
                }
                else
                {
                    yield break;
                }
            }
        }
Exemple #4
0
        private void TextMsgRecived(TdsToken token)
        {
            var msg = (TextMessageToken)token;

            if (msg.Severity > 10)
            {
                _logger?.LogError($"Server error: {msg.GetMessage()}");
                ResponseMessages.Add(msg);
                ResponseIsError = true;
            }
            else
            {
                _logger?.LogInformation($"Server info: {msg.GetMessage()}");
                ResponseMessages.Add(msg);
            }
        }