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); }
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; } } }
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; } } }
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); } }