// Write mars header data, not including the mars header length private void WriteMarsHeaderData(TdsParserStateObject stateObj, SqlInternalTransaction transaction) { // Function to send over additional payload header data for Yukon and beyond only. // These are not necessary - can have local started in distributed. // Debug.Assert(!(null != sqlTransaction && null != distributedTransaction), "Error to have local (api started) and distributed transaction at the same time!"); // Debug.Assert(!(null != _userStartedLocalTransaction && null != distributedTransaction), "Error to have local (started outside of the api) and distributed transaction at the same time!"); // We may need to update the mars header length if mars header is changed in the future WriteShort(TdsEnums.HEADERTYPE_MARS, stateObj); if (null != transaction && SqlInternalTransaction.NullTransactionId != transaction.TransactionId) { WriteLong(transaction.TransactionId, stateObj); WriteInt(stateObj.IncrementAndObtainOpenResultCount(transaction), stateObj); } else { WriteLong(SqlInternalTransaction.NullTransactionId, stateObj); WriteInt(stateObj.IncrementAndObtainOpenResultCount(null), stateObj); } }
private void WriteMarsHeader(TdsParserStateObject stateObj, SqlInternalTransaction transaction) { this.WriteUnsignedInt(0x16, stateObj); this.WriteUnsignedInt(0x12, stateObj); this.WriteShort(2, stateObj); if ((transaction != null) && (0L != transaction.TransactionId)) { this.WriteLong(transaction.TransactionId, stateObj); this.WriteInt(stateObj.IncrementAndObtainOpenResultCount(transaction), stateObj); } else { this.WriteLong(this._retainedTransactionId, stateObj); this.WriteInt(stateObj.IncrementAndObtainOpenResultCount(null), stateObj); } }