Rhino.Queues.Storage.GlobalActions.RemoveReversalsMoveCompletedMessagesAndFinishSubQueueMove C# (CSharp) Метод

RemoveReversalsMoveCompletedMessagesAndFinishSubQueueMove() публичный Метод

public RemoveReversalsMoveCompletedMessagesAndFinishSubQueueMove ( System.Guid transactionId ) : void
transactionId System.Guid
Результат void
        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));
        }