本文整理汇总了C#中System.Transactions.PreparingEnlistment类的典型用法代码示例。如果您正苦于以下问题:C# PreparingEnlistment类的具体用法?C# PreparingEnlistment怎么用?C# PreparingEnlistment使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
PreparingEnlistment类属于System.Transactions命名空间,在下文中一共展示了PreparingEnlistment类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
try
{
log.Debug("Prepare {0}, Messages {1}. Sending the message batch.", TransactionId, Messages.Count);
if (_onprepare != null) _onprepare(this);
preparingEnlistment.Prepared();
}
catch (Exception ex)
{
log.Error("Error preparing transaction {0} ({1} messages): {2}", TransactionId, Messages.Count, ex);
preparingEnlistment.ForceRollback(ex);
TransactionOpen = false;
if (_onrollback != null)
{
try
{
_onrollback(this);
}
catch (Exception e2)
{
log.Error("Error performing rollback after a failed prepare: {0}", e2);
}
}
}
}
示例2: PrepareAsyncResult
void IEnlistmentNotification.Prepare(PreparingEnlistment preparingEnlistment)
{
bool success = false;
try
{
IAsyncResult result = new PrepareAsyncResult(this, TransactionContext.handleEndPrepare, preparingEnlistment);
if (result.CompletedSynchronously)
{
PrepareAsyncResult.End(result);
preparingEnlistment.Prepared();
}
success = true;
}
//we need to swollow the TransactionException as it could because another party aborting it
catch (TransactionException)
{
}
finally
{
if (!success)
{
preparingEnlistment.ForceRollback();
}
}
}
示例3: Prepare
/// <summary>
/// Notifies an enlisted object that a transaction is being prepared for commitment.
/// </summary>
/// <param name="preparingEnlistment">A <see cref="T:System.Transactions.PreparingEnlistment"/> object used to send a response to the transaction manager.</param>
public void Prepare(PreparingEnlistment preparingEnlistment)
{
try
{
onTxComplete();
ctx.CreateFile(TransactionRecoveryInformationFileName, stream =>
{
var writer = new BinaryWriter(stream);
writer.Write(session.ResourceManagerId.ToString());
writer.Write(transaction.LocalIdentifier);
writer.Write(session.DatabaseName ?? "");
writer.Write(preparingEnlistment.RecoveryInformation());
});
session.PrepareTransaction(transaction.LocalIdentifier);
}
catch (Exception e)
{
logger.ErrorException("Could not prepare distributed transaction", e);
try
{
session.Rollback(transaction.LocalIdentifier);
DeleteFile();
}
catch (Exception e2)
{
logger.ErrorException("Could not roll back transaction after prepare failed", e2);
}
preparingEnlistment.ForceRollback(e);
return;
}
preparingEnlistment.Prepared();
}
示例4: Prepare
/// <summary>
/// Notifies an enlisted object that a transaction is being prepared for commitment.
/// </summary>
/// <param name="preparingEnlistment">A <see cref="T:System.Transactions.PreparingEnlistment"/> object used to send a response to the transaction manager.</param>
public void Prepare(PreparingEnlistment preparingEnlistment)
{
onTxComplete();
try
{
using (var machineStoreForApplication = IsolatedStorageFile.GetMachineStoreForDomain())
{
var name = TransactionRecoveryInformationFileName;
using (var file = machineStoreForApplication.CreateFile(name + ".temp"))
using(var writer = new BinaryWriter(file))
{
writer.Write(session.ResourceManagerId.ToString());
writer.Write(PromotableRavenClientEnlistment.GetLocalOrDistributedTransactionId(transaction).ToString());
writer.Write(session.DatabaseName ?? "");
writer.Write(preparingEnlistment.RecoveryInformation());
file.Flush(true);
}
machineStoreForApplication.MoveFile(name + ".temp", name);
}
}
catch (Exception e)
{
logger.ErrorException("Could not prepare distributed transaction", e);
preparingEnlistment.ForceRollback(e);
return;
}
preparingEnlistment.Prepared();
}
示例5: Prepare
/// <summary>
/// Notifies an enlisted object that a transaction is being prepared for commitment.
/// </summary>
/// <param name="preparingEnlistment">A <see cref="T:System.Transactions.PreparingEnlistment"/> object used to send a response to the transaction manager.</param>
public void Prepare(PreparingEnlistment preparingEnlistment)
{
onTxComplete();
session.StoreRecoveryInformation(session.ResourceManagerId, PromotableRavenClientEnlistment.GetLocalOrDistributedTransactionId(transaction),
preparingEnlistment.RecoveryInformation());
preparingEnlistment.Prepared();
}
示例6: Prepare
public virtual void Prepare(PreparingEnlistment preparingEnlistment)
{
Trace.WriteIf(Tracing.Is.TraceVerbose, string.Empty);
if (null == preparingEnlistment)
{
return;
}
try
{
Operation.Info = Convert.ToBase64String(preparingEnlistment.RecoveryInformation());
if (ConfigureOperation() &&
Operation.Do())
{
Trace.WriteIf(Tracing.Is.TraceVerbose, "preparingEnlistment.Prepared()");
preparingEnlistment.Prepared();
return;
}
Trace.WriteIf(Tracing.Is.TraceVerbose, "preparingEnlistment.ForceRollback()");
preparingEnlistment.ForceRollback();
}
catch (Exception exception)
{
Trace.TraceError("{0}", exception);
preparingEnlistment.ForceRollback(exception);
}
}
示例7: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
if (_transaction.IsValid(false) == false)
preparingEnlistment.ForceRollback();
else
preparingEnlistment.Prepared();
}
示例8: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
lock (_sharedLock)
{
if (PrepareCommitAction != null) PrepareCommitAction();
}
preparingEnlistment.Done();
}
示例9: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
DeveelDbException error;
if (!transaction.IsOpen(out error)) {
preparingEnlistment.ForceRollback(error);
} else {
preparingEnlistment.Prepared();
}
}
示例10: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
byte[] recoveryInformation = preparingEnlistment.RecoveryInformation();
var ravenJObject = new RavenJObject
{
{Constants.NotForReplication, true}
};
database.PutStatic("transactions/recoveryInformation/" + txId, null, new MemoryStream(recoveryInformation), ravenJObject);
preparingEnlistment.Prepared();
}
示例11: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
_assertNotDisposed();
_logger.Debug("Preparing enlistment with id: {0}", Id);
var information = preparingEnlistment.RecoveryInformation();
_queueStorage.Global(actions =>
{
actions.RegisterRecoveryInformation(Id, information);
});
preparingEnlistment.Prepared();
_logger.Debug("Prepared enlistment with id: {0}", Id);
}
示例12: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
try
{
transaction.Commit();
preparingEnlistment.Prepared();
}
catch (Exception ex)
{
preparingEnlistment.ForceRollback(ex);
}
}
示例13: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
try
{
_transaction.IsValid();
}
catch(Exception e)
{
preparingEnlistment.ForceRollback(e);
return;
}
preparingEnlistment.Prepared();
}
示例14: Prepare
public void Prepare(PreparingEnlistment preparingEnlistment)
{
if (commit)
{
preparingEnlistment.Prepared();
}
else
{
preparingEnlistment.ForceRollback();
// Rollback is not called after 'Rollback' vote
this.WasRollback = true;
preparingEnlistment.Done();
}
}
示例15: Prepare
/// <summary>
/// Notifies an enlisted object that a transaction is being prepared for commitment.
/// </summary>
/// <param name="preparingEnlistment">A <see cref="T:System.Transactions.PreparingEnlistment"/> object used to send a response to the transaction manager.</param>
public void Prepare( PreparingEnlistment preparingEnlistment )
{
Status = TxfmStatus.InPrepare;
// TODO: Write to recovery log.
foreach( var operation in operations )
{
operation.Commit();
}
preparingEnlistment.Prepared();
Status = TxfmStatus.InTransaction;
}