1st April Post – The multi purpose method
Since it appears to be customary, I decided that I need to make a few posts for April 1st. Here is the second of them.
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); Api.JetSetIndexRange(session, txs, SetIndexRangeGrbit.RangeInclusive | SetIndexRangeGrbit.RangeUpperLimit); do { var queue = Api.RetrieveColumnAsString(session, txs, txsColumns["queue"], Encoding.Unicode); var bookmarkData = Api.RetrieveColumn(session, txs, txsColumns["bookmark_data"]); var bookmarkSize = Api.RetrieveColumnAsInt32(session, txs, txsColumns["bookmark_size"]).Value; var actions = GetQueue(queue); var bookmark = new MessageBookmark { Bookmark = bookmarkData, QueueName = queue, Size = bookmarkSize }; if (actions.GetMessageStatus(bookmark) == MessageStatus.Processing) actions.MoveToHistory(bookmark); else actions.SetMessageStatus(bookmark, MessageStatus.ReadyToDeliver); Api.JetDelete(session, txs); } while (Api.TryMoveNext(session, txs)); }
And yes, it is from real code, and it is going to production soon.
Comments
Do you loose a little bit of hope every time you come across code like this (and your previous post)?
What are we doing so wrong that software is continually written so poorly as to make a grown developer cry ( or mumble and rant under his breath)?
Comment preview