public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var remainingLength = stream.ReadUShort();

            _capabilityBytes = new byte[remainingLength];
            stream.Read(_capabilityBytes, 0, remainingLength);
        }
Beispiel #2
0
        public static DoneProcToken Create(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var t = new DoneProcToken();

            t.Read(stream, env, previous);
            return(t);
        }
Beispiel #3
0
        public static OptionCommandToken Create(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var t = new OptionCommandToken();

            t.Read(stream, env, previous);
            return(t);
        }
        public static ServerCapabilityToken Create(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var t = new ServerCapabilityToken();

            t.Read(stream, env, previous);
            return(t);
        }
Beispiel #5
0
 public void Write(Stream stream, DbEnvironment env)
 {
     Logger.Instance?.WriteLine($"Write {Type}");
     stream.WriteByte((byte)Type);
     stream.WriteShort((short)_capabilityBytes.Length);
     stream.Write(_capabilityBytes);
 }
Beispiel #6
0
        public void Write(Stream stream, DbEnvironment env)
        {
            Logger.Instance?.WriteLine($"-> {Type}: {Formats.Length} parameters");
            stream.WriteByte((byte)Type);
            var paramCount = (short)Formats.Length;

            using (var ms = new MemoryStream())
            {
                foreach (var format in Formats)
                {
                    format.WriteForParameter(ms, env.Encoding, Type);
                }
                ms.Seek(0, SeekOrigin.Begin);
                var formatBytes = ms.ToArray();

                //length
                var remainingLength = 2 + formatBytes.Length;
                if (Type == TokenType.TDS_PARAMFMT)
                {
                    stream.WriteShort((short)remainingLength);
                }
                else
                {
                    stream.WriteUInt((uint)remainingLength);
                }
                stream.WriteShort(paramCount);
                stream.Write(formatBytes, 0, formatBytes.Length);
            }
        }
 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}");
 }
Beispiel #8
0
        public static ParametersToken Create(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var t = new ParametersToken();

            t.Read(stream, env, previous);
            return(t);
        }
 public void Write(Stream stream, DbEnvironment env)
 {
     Logger.Instance?.WriteLine($"-> {Type}: {Status} {MessageId}");
     stream.WriteByte((byte)Type);
     stream.WriteByte(3);
     stream.WriteByte((byte)Status);
     stream.WriteShort((short)MessageId);
 }
        public void AssertHandlesTextSizeChange()
        {
            var environment = new DbEnvironment();
            var handler     = new EnvChangeTokenHandler(environment, string.Empty);

            handler.Handle(OptionCommandToken.CreateSetTextSize(9999));
            Assert.AreEqual(9999, environment.TextSize);
        }
Beispiel #11
0
 public void Write(Stream stream, DbEnvironment env)
 {
     Logger.Instance?.WriteLine($"Write {Type}");
     foreach (var token in _tokens)
     {
         token.Write(stream, env);
     }
 }
Beispiel #12
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);
        }
Beispiel #13
0
 public void Write(Stream stream, DbEnvironment env)
 {
     Logger.Instance?.WriteLine($"-> {Type}: {Parameters.Length} parameters");
     stream.WriteByte((byte)Type);
     foreach (var parameter in Parameters)
     {
         ValueWriter.Write(parameter.Value, stream, parameter.Format, env.Encoding);
     }
 }
        public void Read(Stream stream, DbEnvironment env, IFormatToken previous)
        {
            var remainingLength = CalculateRemainingLength(stream);

            for (uint i = 0; i < remainingLength; i++)
            {
                stream.ReadByte();
            }
        }
        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();
            }
        }
Beispiel #16
0
        public void Write(Stream stream, DbEnvironment env)
        {
            Logger.Instance?.WriteLine($"Write {Type}: '{CommandText}'");
            stream.WriteByte((byte)Type);
            var commandText = env.Encoding.GetBytes(CommandText);

            stream.WriteInt(1 + commandText.Length);
            stream.WriteByte((byte)(HasParameters ? 1 : 0));
            stream.Write(commandText, 0, commandText.Length);
        }
        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}");
        }
        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();
        }
Beispiel #19
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();
            }
        }
Beispiel #20
0
 public void Write(Stream stream, DbEnvironment env)
 {
     Logger.Instance?.Write($"-> {Type}: {Command}, {Option},");
     foreach (var b in Arguments)
     {
         Logger.Instance?.Write($" {b:x2}");
     }
     stream.WriteByte((byte)Type);
     stream.WriteShort((short)(3 + Arguments.Length));
     stream.WriteByte((byte)Command);
     stream.WriteByte((byte)Option);
     stream.WriteBytePrefixedByteArray(Arguments);
 }
        public void Write(Stream stream, DbEnvironment env)
        {
            Logger.Instance?.WriteLine($"-> {Type}: {ProcedureName}");

            var rpcNameBytes = env.Encoding.GetBytes(ProcedureName);
            var rpcLength    = (byte)rpcNameBytes.Length;

            stream.WriteByte((byte)Type);
            stream.WriteShort((short)(rpcLength + 3));
            stream.WriteByte(rpcLength);
            stream.Write(rpcNameBytes, 0, rpcLength);
            stream.WriteShort((short)(HasParameters
                ? DbRpcOptions.TDS_RPC_PARAMS
                : DbRpcOptions.TDS_RPC_UNUSED));
        }
Beispiel #22
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();
        }
        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");
        }
        public void Write(Stream stream, DbEnvironment env)
        {
            Logger.Instance?.WriteLine($"Write {Type}");
            stream.WriteByte((byte)Type);
            //we can't write directly to the stream because we need to know the length up-front
            using (var ms = new MemoryStream())
            {
                foreach (var c in Changes)
                {
                    c.Write(ms, env.Encoding);
                }

                ms.Seek(0, SeekOrigin.Begin);
                stream.WriteShort((short)ms.Length);
                ms.CopyTo(stream);
            }
        }
        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}");
                    }
                }
            }
        }
Beispiel #26
0
        /// <summary>
        /// コンストラクタ、DB接続環境とテーブル名を指定して初期化する
        /// </summary>
        /// <param name="environment">DB接続環境</param>
        /// <param name="name">DB上のテーブル名</param>
        public TableDef(DbEnvironment environment, string name)
        {
            this.Environment = environment;
            this.Name        = name;
            this.ColumnMap   = new ColumnMap();

            // プロパティと列をバインドする
            Mediator.Table = this;
            try {
                this.Columns = TypewiseCache <TColumns> .Creator();

                // 全プロパティを一度呼び出す事でバインドされる
                AllColumnsBinder(this.Columns);
            } finally {
                Mediator.Table = null;
            }
        }
        public void AssertHandlesDbEnvChange()
        {
            var environment = new DbEnvironment();
            var handler     = new EnvChangeTokenHandler(environment, string.Empty);

            handler.Handle(new EnvironmentChangeToken()
            {
                Changes = new[]
                {
                    new EnvironmentChangeToken.EnvironmentChange()
                    {
                        Type     = EnvironmentChangeToken.ChangeType.TDS_ENV_DB,
                        NewValue = "MyDB"
                    }
                }
            });
            Assert.AreEqual("MyDB", environment.Database);
        }
        public void AssertHandlesPacketSizeChange()
        {
            var environment = new DbEnvironment();
            var handler     = new EnvChangeTokenHandler(environment, string.Empty);

            handler.Handle(new EnvironmentChangeToken()
            {
                Changes = new[]
                {
                    new EnvironmentChangeToken.EnvironmentChange()
                    {
                        Type     = EnvironmentChangeToken.ChangeType.TDS_ENV_PACKSIZE,
                        NewValue = "512"
                    }
                }
            });
            Assert.AreEqual(512, environment.PacketSize);
        }
        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();
            }
        }
        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}");
        }