Esempio n. 1
0
        // 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);
     }
 }