diff options
author | Matthias Radestock <matthias@rabbitmq.com> | 2011-08-17 05:11:03 +0100 |
---|---|---|
committer | Matthias Radestock <matthias@rabbitmq.com> | 2011-08-17 05:11:03 +0100 |
commit | efde7ce70136bf56042293f23549756bfd8a59bc (patch) | |
tree | d5fe71e02f2acf9561139a86cab00561b6c7695e | |
parent | ea6e8eeb41e6e5e1b4d0be9167f96728825d6250 (diff) | |
download | rabbitmq-server-efde7ce70136bf56042293f23549756bfd8a59bc.tar.gz |
refactor rabbit_tests:on_disk_capture/1bug24340
-rw-r--r-- | src/rabbit_tests.erl | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl index ef48a033..04b731e4 100644 --- a/src/rabbit_tests.erl +++ b/src/rabbit_tests.erl @@ -1768,26 +1768,20 @@ msg_store_client_init(MsgStore, Ref) -> rabbit_msg_store:client_init(MsgStore, Ref, undefined, undefined). on_disk_capture() -> - on_disk_capture({gb_sets:new(), undefined, undefined}). + on_disk_capture({gb_sets:new(), gb_sets:new(), undefined}). on_disk_capture({OnDisk, Awaiting, Pid}) -> + Pid1 = case Pid =/= undefined andalso gb_sets:is_empty(Awaiting) of + true -> Pid ! {self(), arrived}, undefined; + false -> Pid + end, receive - {await, MsgIds, Pid1} when Awaiting =:= undefined -> - Awaiting1 = gb_sets:subtract(MsgIds, OnDisk), - case gb_sets:is_empty(Awaiting1) of - true -> Pid1 ! {self(), arrived}, - on_disk_capture({OnDisk, undefined, undefined}); - false -> on_disk_capture({OnDisk, Awaiting1, Pid1}) - end; - {on_disk, MsgIds} when Awaiting =:= undefined -> - on_disk_capture({gb_sets:union(OnDisk, MsgIds), Awaiting, Pid}); + {await, MsgIds, Pid2} -> + true = Pid1 =:= undefined andalso gb_sets:is_empty(Awaiting), + on_disk_capture({OnDisk, gb_sets:subtract(MsgIds, OnDisk), Pid2}); {on_disk, MsgIds} -> - OnDisk1 = gb_sets:union(OnDisk, MsgIds), - Awaiting1 = gb_sets:subtract(Awaiting, MsgIds), - case gb_sets:is_empty(Awaiting1) of - true -> Pid ! {self(), arrived}, - on_disk_capture({OnDisk1, undefined, undefined}); - false -> on_disk_capture({OnDisk1, Awaiting1, Pid}) - end; + on_disk_capture({gb_sets:union(OnDisk, MsgIds), + gb_sets:subtract(Awaiting, MsgIds), + Pid1}); stop -> done end. |