public bool Unpack(MemoryStream stream) { TraceID = BigEndianUtilities.ReadByteArray(stream, 16); ActivityID = BigEndianUtilities.ReadByteArray(stream, 16); ActivitySequence = BigEndianUtilities.ReadULong(stream); return(true); }
public void Pack(MemoryStream stream) { BigEndianUtilities.WriteUShort(stream, BuildNumber); stream.WriteByte(Minor); stream.WriteByte(Major); BigEndianUtilities.WriteUShort(stream, SubBuildNumber); }
public bool Unpack(MemoryStream stream) { BuildNumber = BigEndianUtilities.ReadUShort(stream); Minor = Convert.ToByte(stream.ReadByte()); Major = Convert.ToByte(stream.ReadByte()); SubBuildNumber = BigEndianUtilities.ReadUShort(stream); return(true); }
public void WriteByteArrayToMemoryStream() { var stream = new MemoryStream(); BigEndianUtilities.WriteByteArray(stream, new byte[] { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }); CollectionAssert.AreEqual(new byte[] { 0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01 }, stream.ToArray()); }
public void WriteULongToMemoryStream() { var stream = new MemoryStream(); BigEndianUtilities.WriteULong(stream, 0x0123456789abcdef); CollectionAssert.AreEqual(new byte[] { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, stream.ToArray()); }
public void WriteUIntToMemoryStream() { var stream = new MemoryStream(); BigEndianUtilities.WriteUInt(stream, 0x01234567); CollectionAssert.AreEqual(new byte[] { 0x01, 0x23, 0x45, 0x67 }, stream.ToArray()); }
/// <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) { stream.WriteByte((byte)this.Type); if (this.Type != TDSPreLoginOptionTokenType.Terminator) { BigEndianUtilities.WriteUShort(stream, this.Offset); BigEndianUtilities.WriteUShort(stream, this.Length); } }
public void Pack(MemoryStream stream) { stream.WriteByte((byte)Type); stream.WriteByte((byte)Status); BigEndianUtilities.WriteUShort(stream, Length); BigEndianUtilities.WriteUShort(stream, SPID); stream.WriteByte(Packet); stream.WriteByte(Window); }
/// <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) { stream.WriteByte((byte)this.Type); stream.WriteByte((byte)this.Status); BigEndianUtilities.WriteUShort(stream, this.Length); BigEndianUtilities.WriteUShort(stream, this.SPID); stream.WriteByte(this.Packet); stream.WriteByte(this.Window); }
public bool Unpack(MemoryStream stream) { Type = (TDSMessageType)stream.ReadByte(); Status = (TDSMessageStatus)stream.ReadByte(); Length = BigEndianUtilities.ReadUShort(stream); SPID = BigEndianUtilities.ReadUShort(stream); Packet = Convert.ToByte(stream.ReadByte()); Window = Convert.ToByte(stream.ReadByte()); return(true); }
public void ReadUIntFromMemoryStream() { var stream = new MemoryStream(); stream.Write(new byte[] { 0x01, 0x23, 0x45, 0x67 }); stream.Seek(0, SeekOrigin.Begin); var res = BigEndianUtilities.ReadUInt(stream); Assert.AreEqual((uint)0x01234567, res); }
public bool Unpack(MemoryStream stream) { Type = (TDSPreLoginOptionTokenType)stream.ReadByte(); if (Type != TDSPreLoginOptionTokenType.Terminator) { Offset = BigEndianUtilities.ReadUShort(stream); Length = BigEndianUtilities.ReadUShort(stream); } return(true); }
public void ReadByteArrayFromMemoryStream() { var stream = new MemoryStream(); stream.Write(new byte[] { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }); stream.Seek(0, SeekOrigin.Begin); var res = BigEndianUtilities.ReadByteArray(stream, 8); CollectionAssert.AreEqual(new byte[] { 0xef, 0xcd, 0xab, 0x89, 0x67, 0x45, 0x23, 0x01 }, res); }
public void ReadULongFromMemoryStream() { var stream = new MemoryStream(); stream.Write(new byte[] { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }); stream.Seek(0, SeekOrigin.Begin); var res = BigEndianUtilities.ReadULong(stream); Assert.AreEqual((ulong)0x0123456789abcdef, res); }
public void ReadUShortFromMemoryStream() { var stream = new MemoryStream(); stream.Write(new byte[] { 0x01, 0x23 }); stream.Seek(0, SeekOrigin.Begin); var res = BigEndianUtilities.ReadUShort(stream); Assert.AreEqual(0x0123, res); }
/// <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) { { TDSPreLoginOptionToken option; do { option = new TDSPreLoginOptionToken(); option.Unpack(stream); this.Options.Add(option); }while (option.Type != TDSPreLoginOptionTokenType.Terminator); } foreach (var option in this.Options) { switch (option.Type) { case TDSPreLoginOptionTokenType.Encryption: { this.Encryption = (TDSEncryptionOption)stream.ReadByte(); break; } case TDSPreLoginOptionTokenType.FedAuthRequired: { this.FedAuthRequired = stream.ReadByte() == 1; break; } case TDSPreLoginOptionTokenType.InstOpt: { this.Instance = new byte[option.Length]; stream.Read(this.Instance, 0, option.Length); break; } case TDSPreLoginOptionTokenType.MARS: { this.MARS = stream.ReadByte() == 1; break; } case TDSPreLoginOptionTokenType.NonceOpt: { this.Nonce = BigEndianUtilities.ReadByteArray(stream, 32); break; } case TDSPreLoginOptionTokenType.ThreadID: { this.ThreadID = BigEndianUtilities.ReadUInt(stream); break; } case TDSPreLoginOptionTokenType.TraceID: { this.TraceID = new TDSClientTraceID(); this.TraceID.Unpack(stream); break; } case TDSPreLoginOptionTokenType.Version: { this.ClientVersion = new TDSClientVersion(); this.ClientVersion.Unpack(stream); break; } case TDSPreLoginOptionTokenType.Terminator: { break; } } } this.Terminated = true; return(true); }
/// <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) { if (this.Options.Count == 0 || this.Options[0].Type != TDSPreLoginOptionTokenType.Version || this.Options[this.Options.Count - 1].Type != TDSPreLoginOptionTokenType.Terminator || !this.Terminated) { throw new InvalidOperationException(); } var offset = (ushort)(((this.Options.Count - 1) * ((2 * sizeof(ushort)) + sizeof(byte))) + sizeof(byte)); foreach (var option in this.Options) { option.Offset = offset; offset += option.Length; option.Pack(stream); } foreach (var option in this.Options) { switch (option.Type) { case TDSPreLoginOptionTokenType.Encryption: { stream.WriteByte((byte)this.Encryption); break; } case TDSPreLoginOptionTokenType.FedAuthRequired: { if (this.FedAuthRequired) { stream.WriteByte(0x01); } else { stream.WriteByte(0x00); } break; } case TDSPreLoginOptionTokenType.InstOpt: { if (this.Instance != null && this.Instance.Length != 0) { stream.Write(this.Instance, 0, this.Instance.Length); } else { stream.WriteByte(0x00); } break; } case TDSPreLoginOptionTokenType.MARS: { if (this.MARS) { stream.WriteByte(0x01); } else { stream.WriteByte(0x00); } break; } case TDSPreLoginOptionTokenType.NonceOpt: { BigEndianUtilities.WriteByteArray(stream, this.Nonce); break; } case TDSPreLoginOptionTokenType.ThreadID: { BigEndianUtilities.WriteUInt(stream, this.ThreadID); break; } case TDSPreLoginOptionTokenType.TraceID: { this.TraceID.Pack(stream); break; } case TDSPreLoginOptionTokenType.Version: { this.ClientVersion.Pack(stream); break; } } } }
public bool Unpack(MemoryStream stream) { { TDSPreLoginOptionToken option; do { option = new TDSPreLoginOptionToken(); option.Unpack(stream); Options.Add(option); }while (option.Type != TDSPreLoginOptionTokenType.Terminator); } foreach (var option in Options) { switch (option.Type) { case TDSPreLoginOptionTokenType.Encryption: { Encryption = (TDSEncryptionOption)stream.ReadByte(); break; } case TDSPreLoginOptionTokenType.FedAuthRequired: { FedAuthRequired = stream.ReadByte() == 1; break; } case TDSPreLoginOptionTokenType.InstOpt: { throw new NotSupportedException(); } case TDSPreLoginOptionTokenType.MARS: { MARS = stream.ReadByte() == 1; break; } case TDSPreLoginOptionTokenType.NonceOpt: { Nonce = BigEndianUtilities.ReadByteArray(stream, 32); break; } case TDSPreLoginOptionTokenType.ThreadID: { ThreadID = BigEndianUtilities.ReadULong(stream); break; } case TDSPreLoginOptionTokenType.TraceID: { TraceID = new TDSClientTraceID(); TraceID.Unpack(stream); break; } case TDSPreLoginOptionTokenType.Version: { ClientVersion = new TDSClientVersion(); ClientVersion.Unpack(stream); break; } case TDSPreLoginOptionTokenType.Terminator: { break; } } } Terminated = true; return(true); }
public void Pack(MemoryStream stream) { if (Options.Count == 0 || Options[0].Type != TDSPreLoginOptionTokenType.Version || Options[Options.Count - 1].Type != TDSPreLoginOptionTokenType.Terminator || !Terminated) { throw new InvalidOperationException(); } var offset = (ushort)((Options.Count - 1) * (2 * sizeof(ushort) + sizeof(byte)) + sizeof(byte)); foreach (var option in Options) { // ToDo option.Offset = offset; option.Pack(stream); } foreach (var option in Options) { switch (option.Type) { case TDSPreLoginOptionTokenType.Encryption: { stream.WriteByte((byte)Encryption); break; } case TDSPreLoginOptionTokenType.FedAuthRequired: { if (FedAuthRequired) { stream.WriteByte(0x01); } else { stream.WriteByte(0x00); } break; } case TDSPreLoginOptionTokenType.InstOpt: { throw new NotSupportedException(); } case TDSPreLoginOptionTokenType.MARS: { if (MARS) { stream.WriteByte(0x01); } else { stream.WriteByte(0x00); } break; } case TDSPreLoginOptionTokenType.NonceOpt: { BigEndianUtilities.WriteByteArray(stream, Nonce); break; } case TDSPreLoginOptionTokenType.ThreadID: { BigEndianUtilities.WriteULong(stream, ThreadID); break; } case TDSPreLoginOptionTokenType.TraceID: { TraceID.Pack(stream); break; } case TDSPreLoginOptionTokenType.Version: { ClientVersion.Pack(stream); break; } } } }
public void Pack(MemoryStream stream) { BigEndianUtilities.WriteByteArray(stream, TraceID); BigEndianUtilities.WriteByteArray(stream, ActivityID); BigEndianUtilities.WriteULong(stream, ActivitySequence); }