public void RemoveReversalsMoveCompletedMessagesAndFinishSubQueueMove(Guid transactionId)
{
Api.JetSetCurrentIndex(session, txs, "by_tx_id");
Api.MakeKey(session, txs, transactionId.ToByteArray(), MakeKeyGrbit.NewKey);
if (Api.TrySeek(session, txs, SeekGrbit.SeekEQ) == false)
return;
Api.MakeKey(session, txs, transactionId.ToByteArray(), MakeKeyGrbit.NewKey);
try
{
Api.JetSetIndexRange(session, txs, SetIndexRangeGrbit.RangeInclusive | SetIndexRangeGrbit.RangeUpperLimit);
}
catch (EsentErrorException e)
{
if (e.Error != JET_err.NoCurrentRecord)
throw;
return;
}
do
{
var queue = Api.RetrieveColumnAsString(session, txs, ColumnsInformation.TxsColumns["queue"], Encoding.Unicode);
var bookmarkData = Api.RetrieveColumn(session, txs, ColumnsInformation.TxsColumns["bookmark_data"]);
var bookmarkSize = Api.RetrieveColumnAsInt32(session, txs, ColumnsInformation.TxsColumns["bookmark_size"]).Value;
var actions = GetQueue(queue);
var bookmark = new MessageBookmark
{
Bookmark = bookmarkData,
QueueName = queue,
Size = bookmarkSize
};
switch (actions.GetMessageStatus(bookmark))
{
case MessageStatus.SubqueueChanged:
case MessageStatus.EnqueueWait:
actions.SetMessageStatus(bookmark, MessageStatus.ReadyToDeliver);
break;
default:
if (configuration.EnableProcessedMessageHistory)
actions.MoveToHistory(bookmark);
else
actions.Delete(bookmark);
break;
}
Api.JetDelete(session, txs);
} while (Api.TryMoveNext(session, txs));
}