12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- #if !NETCF
- using System.Threading.Tasks;
- using System.Transactions;
- #endif
- namespace Apache.NMS
- {
- /// <summary>
- /// The INetTxSession interface extends the capability of Session by adding access to a NMS
- /// provider's support for the Distributed Transactions (optional). The transaction support
- /// leverages the .NET Frameworks System.Transactions API.
- ///
- /// The NMS Provider implements this interface by participating in the current ambient transaction
- /// as defined by the System.Transactions.Transaction.Current static member. Whenever a new
- /// Transaction is entered the NMS provider should enlist in that transaction. When there is no
- /// ambient transaction then the NMS Provider should allow the INetTxSession instance to behave
- /// as a session that is in Auto Acknowledge mode.
- ///
- /// Calling the Commit or Rollback methods on a INetTxSession instance should throw an exception
- /// as those operations are controlled by the Transaction Manager.
- ///
- /// The INetTxSession interface is optional. NMS providers are not required to support this
- /// interface. This interface is for use by NMS providers to support transactional environments.
- /// </summary>
- public interface INetTxSession : ISession
- {
- #if !NETCF
- /// <summary>
- /// Enlist the Session in the specified Transaction.
- ///
- /// If the Session is already enlisted in a Transaction or there is an Ambient
- /// Transaction and the given TX is not that Transaction then an exception should
- /// be thrown.
- /// </summary>
- void Enlist(Transaction tx);
-
- /// <summary>
- /// Enlist the Session in the specified Transaction.
- ///
- /// If the Session is already enlisted in a Transaction or there is an Ambient
- /// Transaction and the given TX is not that Transaction then an exception should
- /// be thrown.
- /// </summary>
- Task EnlistAsync(Transaction tx);
- bool EnlistsMsDtcNativeResource { get; set; }
- #endif
- }
- }
|