private XATransactionId[] TryRecoverBrokerTXIds()
{
Tracer.Debug("Checking for Recoverable Transactions on Broker.");
TransactionInfo info = new TransactionInfo();
info.ConnectionId = this.session.Connection.ConnectionId;
info.Type = (int)TransactionType.Recover;
this.connection.CheckConnected();
DataArrayResponse response = this.connection.SyncRequest(info) as DataArrayResponse;
if (response != null && response.Data.Length > 0)
{
Tracer.DebugFormat("Broker reports there are {0} recoverable XA Transactions", response.Data.Length);
List<XATransactionId> recovered = new List<XATransactionId>();
foreach (DataStructure ds in response.Data)
{
XATransactionId xid = ds as XATransactionId;
if (xid != null)
{
recovered.Add(xid);
}
}
return recovered.ToArray();
}
return new XATransactionId[0];
}