1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel.Transactions
{
using System.Diagnostics.CodeAnalysis;
using System.Runtime;
using System.ServiceModel.Security;
using System.Transactions;
using Microsoft.Transactions.Wsat.Messaging;
class WsatTransactionInfo : TransactionInfo
{
WsatProxy wsatProxy;
CoordinationContext context;
RequestSecurityTokenResponse issuedToken;
public WsatTransactionInfo(WsatProxy wsatProxy,
CoordinationContext context,
RequestSecurityTokenResponse issuedToken)
{
this.wsatProxy = wsatProxy;
this.context = context;
this.issuedToken = issuedToken;
}
[SuppressMessage(FxCop.Category.Security, FxCop.Rule.AptcaMethodsShouldOnlyCallAptcaMethods, Justification = "The calls into CoordinationContext are safe.")]
public override Transaction UnmarshalTransaction()
{
Transaction tx;
if (WsatIncomingTransactionCache.Find(this.context.Identifier, out tx))
return tx;
tx = this.wsatProxy.UnmarshalTransaction(this);
// Cache extended information for subsequent marshal operations
WsatExtendedInformation info = new WsatExtendedInformation(context.Identifier, context.Expires);
info.TryCache(tx);
// Cache the unmarshalled transaction for subsequent unmarshal operations
WsatIncomingTransactionCache.Cache(this.context.Identifier, tx);
return tx;
}
public CoordinationContext Context
{
get { return this.context; }
}
public RequestSecurityTokenResponse IssuedToken
{
get { return this.issuedToken; }
}
}
}
|