public override void OnEvent(MsgEnlistTransactionEvent e) { CoordinatorEnlistment coordinator = e.Coordinator; if (!base.state.TransactionManager.Settings.NetworkInboundAccess) { base.ForwardEnlistmentEventToSubordinate(e); coordinator.StateMachine.ChangeState(base.state.States.CoordinatorInitializationFailed); } else { CoordinationContext currentContext = e.Body.CurrentContext; RegistrationProxy proxy = base.state.TryCreateRegistrationProxy(currentContext.RegistrationService); if (proxy == null) { coordinator.ContextManager.Fault = base.state.Faults.RegistrationProxyFailed; coordinator.StateMachine.ChangeState(base.state.States.CoordinatorInitializationFailed); } else { try { coordinator.SetRegistrationProxy(proxy); EnlistmentOptions options = coordinator.CreateEnlistmentOptions(currentContext.Expires, currentContext.ExpiresPresent, currentContext.IsolationLevel, currentContext.IsolationFlags, currentContext.Description); base.state.TransactionManagerSend.EnlistTransaction(coordinator, options, e); e.StateMachine.ChangeState(base.state.States.CoordinatorEnlisting); } finally { proxy.Release(); } } } }
public void SendFault(Microsoft.Transactions.Wsat.Messaging.RequestAsyncResult result, Fault fault) { if (DebugTrace.Warning) { DebugTrace.Trace(TraceLevel.Warning, "Sending {0} fault to registration participant", fault.Code.Name); } this.state.Perf.FaultsSentCountPerInterval.Increment(); RegistrationProxy.SendFaultResponse(result, fault); }
public void SendRegisterResponse(Microsoft.Transactions.Wsat.Protocol.TransactionEnlistment enlistment, Microsoft.Transactions.Wsat.Messaging.RequestAsyncResult result, ControlProtocol protocol, EndpointAddress coordinatorService) { RegisterResponse response = new RegisterResponse(this.state.ProtocolVersion) { CoordinatorProtocolService = coordinatorService }; if (DebugTrace.Info) { DebugTrace.TxTrace(TraceLevel.Info, enlistment.EnlistmentId, "Sending RegisterResponse for {0}", protocol); } RegistrationProxy.SendRegisterResponse(result, ref response); }