summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2010-04-29 22:44:11 +0100
committerMatthias Radestock <matthias@lshift.net>2010-04-29 22:44:11 +0100
commita03fe938e8c81b7b3fd407852330ab30de934129 (patch)
tree11e740a6a479f4a7a000bccee33182b12b184f72 /src
parentdd764737b0d8440c5a538cb0e1a572bc23f2cc32 (diff)
downloadrabbitmq-server-git-a03fe938e8c81b7b3fd407852330ab30de934129.tar.gz
cosmetic changes and a little bit of refactoring on the file handle cache
Diffstat (limited to 'src')
-rw-r--r--src/file_handle_cache.erl48
1 files changed, 22 insertions, 26 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl
index 4d1c78a335..b9b94e1149 100644
--- a/src/file_handle_cache.erl
+++ b/src/file_handle_cache.erl
@@ -449,7 +449,7 @@ is_writer(Mode) -> lists:member(write, Mode).
append_to_write(Mode) ->
case lists:member(append, Mode) of
- true -> [write | lists:subtract(Mode, [append, write])];
+ true -> [write | Mode -- [append, write]];
false -> Mode
end.
@@ -505,6 +505,11 @@ get_or_reopen(Ref) ->
{ok, Handle}
end.
+put_handle(Ref, Handle = #handle { last_used_at = Then }) ->
+ Now = now(),
+ age_tree_update(Then, Now, Ref),
+ put({Ref, fhc_handle}, Handle #handle { last_used_at = Now }).
+
with_age_tree(Fun) ->
put(fhc_age_tree, Fun(case get(fhc_age_tree) of
undefined -> gb_trees:empty();
@@ -552,11 +557,6 @@ age_tree_change() ->
Tree
end).
-put_handle(Ref, Handle = #handle { last_used_at = Then }) ->
- Now = now(),
- age_tree_update(Then, Now, Ref),
- put({Ref, fhc_handle}, Handle #handle { last_used_at = Now }).
-
open1(Path, Mode, Options, Ref, Offset, NewOrReopen) ->
Mode1 = case NewOrReopen of
new -> Mode;
@@ -599,21 +599,18 @@ close1(Ref, Handle, SoftOrHard) ->
{ok, #handle { hdl = Hdl, offset = Offset, is_dirty = IsDirty,
path = Path, is_read = IsReader, is_write = IsWriter,
last_used_at = Then } = Handle1 } ->
- Handle2 =
- case Hdl of
- closed ->
- Handle1;
- _ ->
- ok = case IsDirty of
- true -> file:sync(Hdl);
- false -> ok
- end,
- ok = file:close(Hdl),
- age_tree_delete(Then),
- Handle1 #handle { hdl = closed,
- trusted_offset = Offset,
- is_dirty = false }
- end,
+ Handle2 = case Hdl of
+ closed -> Handle1;
+ _ -> ok = case IsDirty of
+ true -> file:sync(Hdl);
+ false -> ok
+ end,
+ ok = file:close(Hdl),
+ age_tree_delete(Then),
+ Handle1 #handle { hdl = closed,
+ trusted_offset = Offset,
+ is_dirty = false }
+ end,
case SoftOrHard of
hard -> #file { reader_count = RCount,
has_writer = HasWriter } = File =
@@ -852,10 +849,9 @@ ulimit() ->
end.
ensure_mref(Pid, State = #fhc_state { client_mrefs = ClientMRefs }) ->
- State #fhc_state { client_mrefs = ensure_mref(Pid, ClientMRefs) };
-ensure_mref(Pid, ClientMRefs) ->
case dict:find(Pid, ClientMRefs) of
- {ok, _MRef} -> ClientMRefs;
- error -> dict:store(Pid, erlang:monitor(process, Pid),
- ClientMRefs)
+ {ok, _MRef} -> State;
+ error -> MRef = erlang:monitor(process, Pid),
+ State #fhc_state {
+ client_mrefs = dict:store(Pid, MRef, ClientMRefs) }
end.