/// <summary> /// Send packet asynchronously /// </summary> /// <param name="packet">SNI packet</param> /// <param name="callback">Completion callback</param> /// <returns>SNI error code</returns> private uint InternalSendAsync(SNIPacket packet, SNIAsyncCallback callback) { SNIPacket encapsulatedPacket = null; lock (this) { if (_sequenceNumber >= _sendHighwater) { return(TdsEnums.SNI_QUEUE_FULL); } encapsulatedPacket = GetSMUXEncapsulatedPacket(packet); if (callback != null) { encapsulatedPacket.SetCompletionCallback(callback); } else { encapsulatedPacket.SetCompletionCallback(HandleSendComplete); } return(_connection.SendAsync(encapsulatedPacket, callback)); } }
/// <summary> /// Send packet asynchronously /// </summary> /// <param name="packet">SNI packet</param> /// <param name="callback">Completion callback</param> /// <returns>True if completed successfully, otherwise false</returns> private bool InternalSendAsync(SNIPacket packet, SNIAsyncCallback callback) { SNIPacket encapsulatedPacket = null; lock (this) { if (_sequenceNumber >= _sendHighwater) { return(false); } encapsulatedPacket = GetSMUXEncapsulatedPacket(packet); if (callback != null) { encapsulatedPacket.SetCompletionCallback(callback); } else { encapsulatedPacket.SetCompletionCallback(HandleSendComplete); } SNIError sniError; bool completedSync = _connection.SendAsync(encapsulatedPacket, callback, true, out sniError); Debug.Assert(!completedSync && (sniError == null), "Should not have completed synchronously"); return(true); } }
/// <summary> /// Send packet asynchronously /// </summary> /// <param name="packet">SNI packet</param> /// <param name="callback">Completion callback</param> /// <returns>SNI error code</returns> private uint InternalSendAsync(SNIPacket packet, SNIAsyncCallback callback) { Debug.Assert(packet.ReservedHeaderSize == SNISMUXHeader.HEADER_LENGTH, "mars handle attempting to send muxed packet without mux reservation in InternalSendAsync"); lock (this) { if (_sequenceNumber >= _sendHighwater) { return(TdsEnums.SNI_QUEUE_FULL); } SNIPacket muxedPacket = SetPacketSMUXHeader(packet); muxedPacket.SetCompletionCallback(callback ?? HandleSendComplete); return(_connection.SendAsync(muxedPacket, callback)); } }