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 | 2c9b872861a2e40eaa5cbf46be8754bfee70d4f1 (patch) | |
| tree | c86caba5b10f9d93d0bacf2503b7079884009b20 | |
| parent | 8d0186ff787188dfe525baa8cfff1d300428b4a3 (diff) | |
| download | rabbitmq-server-git-2c9b872861a2e40eaa5cbf46be8754bfee70d4f1.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 74dc7eaf06..7583230903 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(), |
