Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <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);
 }
Ejemplo n.º 3
0
        /// <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);
        }