public Task WriteAsPacketsAsync( Stream stream, ushort packetLength, ushort spid, CancellationToken cancellationToken, TDSStatus status = TDSStatus.Normal, TDSMessageType?overrideMessageType = null) { return(TDSPacket.WriteMessageAsync(stream, packetLength, spid, this, cancellationToken, status, overrideMessageType)); }
public static async Task WriteMessageAsync( Stream stream, ushort packetLength, ushort spid, TDSMessage message, CancellationToken cancellationToken, TDSStatus status = TDSStatus.Normal, TDSMessageType?overrideMessageType = null) { status &= ~TDSStatus.EndOfMessage; message.EnsurePayload(); var payload = message.Payload; var packet = new byte[Math.Min(payload.Length + HeaderLength, packetLength)]; int payloadOffset = 0; int maxPacketPayload = packetLength - HeaderLength; var messageType = overrideMessageType ?? message.MessageType; byte packetId = 1; while (payloadOffset < payload.Length) { ushort thisPayloadLength = (ushort)Math.Min(payload.Length - payloadOffset, maxPacketPayload); ushort thisPacketLength = (ushort)(thisPayloadLength + HeaderLength); if (payloadOffset + thisPayloadLength >= payload.Length) { status |= TDSStatus.EndOfMessage; } packet[0] = (byte)messageType; packet[1] = (byte)status; packet[2] = (byte)((thisPacketLength >> 8) & 0xff); packet[3] = (byte)(thisPacketLength & 0xff); packet[4] = (byte)((spid >> 8) & 0xff); packet[5] = (byte)(spid & 0xff); packet[6] = packetId++; packet[7] = 0; Buffer.BlockCopy(payload, payloadOffset, packet, HeaderLength, thisPayloadLength); await stream.WriteAsync(packet, 0, thisPacketLength, cancellationToken); if (DumpPackets) { log.DebugFormat("Wrote {0} packet. Data:\r\n{1}", messageType, packet.FormatAsHex()); } payloadOffset += thisPayloadLength; } }
public static Task WriteMessageAsync( Stream stream, ushort packetLength, ushort spid, TDSMessage message, TDSStatus status = TDSStatus.Normal, TDSMessageType?overrideMessageType = null) { return(WriteMessageAsync(stream, packetLength, spid, message, CancellationToken.None, status, overrideMessageType)); }
public static void WriteMessage( Stream stream, ushort packetLength, ushort spid, TDSMessage message, TDSStatus status = TDSStatus.Normal, TDSMessageType?overrideMessageType = null) { WriteMessageAsync(stream, packetLength, spid, message, status, overrideMessageType).Wait(); }
public void WriteAsPackets(Stream stream, ushort packetLength, ushort spid, TDSStatus status = TDSStatus.Normal, TDSMessageType?overrideMessageType = null) { TDSPacket.WriteMessage(stream, packetLength, spid, this, status, overrideMessageType); }