/// <summary> /// Add TDS Login7 Option. /// </summary> /// <param name="optionName">Option Name</param> /// <param name="data">Option Data</param> public void AddOption(string optionName, string data) { if (optionName == null || data == null) { throw new ArgumentNullException(); } if (this.Options.Where(opt => opt.Name == optionName).Any()) { throw new Exception("Login7 option already set!"); } if (optionName != "Password" && optionName != "ChangePassword") { LoggingUtilities.WriteLog($" Adding Login7 option {optionName} [{data}]."); } else { LoggingUtilities.WriteLog($" Adding Login7 option {optionName}."); } var option = TDSLogin7OptionFactory.CreateOption(optionName, data); this.Options.Add(option); }
/// <summary> /// Used to pack IPackageable to a stream. /// </summary> /// <param name="stream">MemoryStream in which IPackageable is packet into.</param> public void Pack(MemoryStream stream) { LittleEndianUtilities.WriteUInt(stream, this.Length); LittleEndianUtilities.WriteUInt(stream, this.TDSVersion); LittleEndianUtilities.WriteUInt(stream, this.PacketSize); LittleEndianUtilities.WriteUInt(stream, this.ClientProgVer); LittleEndianUtilities.WriteUInt(stream, this.ClientPID); LittleEndianUtilities.WriteUInt(stream, this.ConnectionID); this.OptionFlags1.Pack(stream); this.OptionFlags2.Pack(stream); this.TypeFlags.Pack(stream); this.OptionFlags3.Pack(stream); LittleEndianUtilities.WriteUInt(stream, this.ClientTimeZone); LittleEndianUtilities.WriteUInt(stream, this.ClientLCID); TDSLogin7OptionFactory.WriteOptionsToStream(stream, this.Options, this.ClientID); }
/// <summary> /// Used to unpack IPackageable from a stream. /// </summary> /// <param name="stream">MemoryStream from which to unpack IPackageable.</param> /// <returns>Returns true if successful.</returns> public bool Unpack(MemoryStream stream) { LittleEndianUtilities.ReadUInt(stream); this.TDSVersion = LittleEndianUtilities.ReadUInt(stream); this.PacketSize = LittleEndianUtilities.ReadUInt(stream); this.ClientProgVer = LittleEndianUtilities.ReadUInt(stream); this.ClientPID = LittleEndianUtilities.ReadUInt(stream); this.ConnectionID = LittleEndianUtilities.ReadUInt(stream); this.OptionFlags1.Unpack(stream); this.OptionFlags2.Unpack(stream); this.TypeFlags.Unpack(stream); this.OptionFlags3.Unpack(stream); this.ClientTimeZone = Convert.ToUInt32(LittleEndianUtilities.ReadUInt(stream)); this.ClientLCID = LittleEndianUtilities.ReadUInt(stream); var result = TDSLogin7OptionFactory.ReadOptionsFromStream(stream); this.ClientID = result.Item2; this.Options = result.Item1; return(true); }