diff options
author | Matthew Sackman <matthew@rabbitmq.com> | 2010-08-22 16:56:54 +0100 |
---|---|---|
committer | Matthew Sackman <matthew@rabbitmq.com> | 2010-08-22 16:56:54 +0100 |
commit | 7be2ad6fb09f600414bb0651410eaf9fad7ea7f8 (patch) | |
tree | c86caba5b10f9d93d0bacf2503b7079884009b20 | |
parent | cdff40937a5ec864818aaf8d14465217719b7962 (diff) | |
download | rabbitmq-server-7be2ad6fb09f600414bb0651410eaf9fad7ea7f8.tar.gz |
Use foldr instead of foldl to avoid having to do extra reverses
-rw-r--r-- | src/file_handle_cache.erl | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl index 74dc7eaf..75832309 100644 --- a/src/file_handle_cache.erl +++ b/src/file_handle_cache.erl @@ -565,17 +565,15 @@ reopen([{Ref, NewOrReopen, Handle} | RefNewOrReopenHdls], Tree, RefHdls) -> end. partition_handles(RefNewOrReopens) -> - {OpenHdls, ClosedHdls} = - lists:foldl( - fun ({Ref, NewOrReopen}, {Open, Closed}) -> - case get({Ref, fhc_handle}) of - #handle { hdl = closed } = Handle -> - {Open, [{Ref, NewOrReopen, Handle} | Closed]}; - #handle {} = Handle -> - {[{Ref, Handle} | Open], Closed} - end - end, {[], []}, RefNewOrReopens), - {lists:reverse(OpenHdls), lists:reverse(ClosedHdls)}. + lists:foldr( + fun ({Ref, NewOrReopen}, {Open, Closed}) -> + case get({Ref, fhc_handle}) of + #handle { hdl = closed } = Handle -> + {Open, [{Ref, NewOrReopen, Handle} | Closed]}; + #handle {} = Handle -> + {[{Ref, Handle} | Open], Closed} + end + end, {[], []}, RefNewOrReopens). put_handle(Ref, Handle = #handle { last_used_at = Then }) -> Now = now(), |