summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2010-08-22 16:56:54 +0100
committerMatthew Sackman <matthew@rabbitmq.com>2010-08-22 16:56:54 +0100
commit7be2ad6fb09f600414bb0651410eaf9fad7ea7f8 (patch)
treec86caba5b10f9d93d0bacf2503b7079884009b20
parentcdff40937a5ec864818aaf8d14465217719b7962 (diff)
downloadrabbitmq-server-7be2ad6fb09f600414bb0651410eaf9fad7ea7f8.tar.gz
Use foldr instead of foldl to avoid having to do extra reverses
-rw-r--r--src/file_handle_cache.erl20
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(),