protected virtual void UpdateStatusOfTransaction(NodeTransaction transaction, ITransactionManager transactionManager, INodeEndpointClientFactory nodeEndpointClientFactory) { try { AppendAuditLogEvent("Attempting to update status of local transaction id \"{0}\" that has endpoint transaction id \"{1}\" and current endpoint transaction status of \"{2}\" at url \"{3}\" and endpoint version \"{4}\" ...", transaction.Id, transaction.NetworkId, transaction.NetworkEndpointStatus, transaction.NetworkEndpointUrl, transaction.NetworkEndpointVersion); CommonTransactionStatusCode statusCode; using (INodeEndpointClient endpointClient = nodeEndpointClientFactory.Make(transaction.NetworkEndpointUrl, transaction.NetworkEndpointVersion)) { statusCode = endpointClient.GetStatus(transaction.NetworkId); AppendAuditLogEvent("Successfully got an endpoint transaction status of \"{0}\"", statusCode.ToString()); if (statusCode != transaction.NetworkEndpointStatus) { if (OnTransactionStatusChanged(transaction, endpointClient, statusCode)) { AppendAuditLogEvent("Updating status of local transaction id \"{0}\" from \"{1}\" to \"{2}\"", transaction.Id, transaction.NetworkEndpointStatus, statusCode); transactionManager.SetNetworkIdStatus(transaction.Id, statusCode); } } } } catch (Exception e) { AppendAuditLogEvent("Failed to get status of transaction: {0}", ExceptionUtils.GetDeepExceptionMessage(e)); } }