diff options
| author | Matthias Radestock <matthias@lshift.net> | 2010-05-15 18:23:36 +0100 |
|---|---|---|
| committer | Matthias Radestock <matthias@lshift.net> | 2010-05-15 18:23:36 +0100 |
| commit | 932a2e493670b85f536fa1b5b0fdc7e0b1168ee0 (patch) | |
| tree | 41fbae45cb4544c0311b9be7dfc3b353a3d681d3 /src | |
| parent | 998ced84c1b0eb4d1531806a95bfdeaa84b7dd10 (diff) | |
| download | rabbitmq-server-git-932a2e493670b85f536fa1b5b0fdc7e0b1168ee0.tar.gz | |
refactor: more concise journal_plus_segment
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_queue_index.erl | 50 |
1 files changed, 23 insertions, 27 deletions
diff --git a/src/rabbit_queue_index.erl b/src/rabbit_queue_index.erl index c1e7fed74f..d793ffca28 100644 --- a/src/rabbit_queue_index.erl +++ b/src/rabbit_queue_index.erl @@ -865,38 +865,34 @@ journal_plus_segment(JEntries, SegEntries) -> undefined -> not_found; SObj = {_, _, _} -> SObj end, - journal_plus_segment(JObj, SegEntry, RelSeq, SegEntriesOut) + case journal_plus_segment1(JObj, SegEntry) of + undefined -> array:reset(RelSeq, SegEntriesOut); + Obj -> array:set(RelSeq, Obj, SegEntriesOut) + end end, SegEntries, JEntries). %% Here, the Out is the Seg Array which we may be adding to (for %% items only in the journal), modifying (bits in both), or erasing %% from (ack in journal, not segment). -journal_plus_segment({{_Guid, _IsPersistent}, no_del, no_ack} = Obj, - not_found, - RelSeq, Out) -> - array:set(RelSeq, Obj, Out); -journal_plus_segment({{_Guid, _IsPersistent}, del, no_ack} = Obj, - not_found, - RelSeq, Out) -> - array:set(RelSeq, Obj, Out); -journal_plus_segment({{_Guid, _IsPersistent}, del, ack}, - not_found, - RelSeq, Out) -> - array:reset(RelSeq, Out); - -journal_plus_segment({no_pub, del, no_ack}, - {{_Guid, _IsPersistent} = Pub, no_del, no_ack}, - RelSeq, Out) -> - array:set(RelSeq, {Pub, del, no_ack}, Out); - -journal_plus_segment({no_pub, del, ack}, - {{_Guid, _IsPersistent}, no_del, no_ack}, - RelSeq, Out) -> - array:reset(RelSeq, Out); -journal_plus_segment({no_pub, no_del, ack}, - {{_Guid, _IsPersistent}, del, no_ack}, - RelSeq, Out) -> - array:reset(RelSeq, Out). +journal_plus_segment1({{_Guid, _IsPersistent}, no_del, no_ack} = Obj, + not_found) -> + Obj; +journal_plus_segment1({{_Guid, _IsPersistent}, del, no_ack} = Obj, + not_found) -> + Obj; +journal_plus_segment1({{_Guid, _IsPersistent}, del, ack}, + not_found) -> + undefined; + +journal_plus_segment1({no_pub, del, no_ack}, + {{_Guid, _IsPersistent} = Pub, no_del, no_ack}) -> + {Pub, del, no_ack}; +journal_plus_segment1({no_pub, del, ack}, + {{_Guid, _IsPersistent}, no_del, no_ack}) -> + undefined; +journal_plus_segment1({no_pub, no_del, ack}, + {{_Guid, _IsPersistent}, del, no_ack}) -> + undefined. %% Remove from the journal entries for a segment, items that are %% duplicates of entries found in the segment itself. Used on start up |
