summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2009-11-24 23:55:55 +0000
committerMatthias Radestock <matthias@lshift.net>2009-11-24 23:55:55 +0000
commitfa446fd4fc67e8e6ccc96d6fcb0bdb05deec55fc (patch)
tree2c2eded7d72b004dd0e77b4bdcf5c2e6b5c586ce /src
parentcd2918c5851f8cba7f69ec3df17f805d3ddfc0b0 (diff)
downloadrabbitmq-server-git-fa446fd4fc67e8e6ccc96d6fcb0bdb05deec55fc.tar.gz
minor refactoring
Diffstat (limited to 'src')
-rw-r--r--src/file_handle_cache.erl38
1 files changed, 18 insertions, 20 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl
index df7e656462..d4a2b00f73 100644
--- a/src/file_handle_cache.erl
+++ b/src/file_handle_cache.erl
@@ -238,9 +238,24 @@ internal_append(_Data, [#handle { is_write = false }]) ->
{error, not_open_for_writing};
internal_append(Data, [Handle]) ->
case maybe_seek(eof, Handle) of
- {{ok, _Offset}, Handle1 = #handle { at_eof = true }} ->
- {Result, Handle2} = write_to_buffer(Data, Handle1),
- {Result, [Handle2]};
+ {{ok, _Offset}, Handle1 = #handle { hdl = Hdl, offset = Offset,
+ write_buffer_size_limit = 0,
+ at_eof = true }} ->
+ Offset1 = Offset + iolist_size(Data),
+ {file:write(Hdl, Data),
+ [Handle1 #handle { is_dirty = true, offset = Offset1 }]};
+ {{ok, _Offset}, Handle1 = #handle { write_buffer = WriteBuffer,
+ write_buffer_size = Size,
+ write_buffer_size_limit = Limit,
+ at_eof = true }} ->
+ Size1 = Size + iolist_size(Data),
+ Handle2 = Handle1 #handle { write_buffer = [ Data | WriteBuffer ],
+ write_buffer_size = Size1 },
+ case Limit /= infinity andalso Size1 > Limit of
+ true -> {Result, Handle3} = write_buffer(Handle2),
+ {Result, [Handle3]};
+ false -> {ok, [Handle2]}
+ end;
{{error, _} = Error, Handle1} ->
{Error, [Handle1]}
end.
@@ -529,23 +544,6 @@ needs_seek( true, CurOffset, DesiredOffset) %% same as {bof, DO}
needs_seek(_AtEoF, _CurOffset, _DesiredOffset) ->
{false, true}.
-write_to_buffer(Data, Handle = #handle { hdl = Hdl, offset = Offset,
- write_buffer_size_limit = 0 }) ->
- Offset1 = Offset + iolist_size(Data),
- {file:write(Hdl, Data),
- Handle #handle { is_dirty = true, offset = Offset1 }};
-write_to_buffer(Data, Handle =
- #handle { write_buffer = WriteBuffer,
- write_buffer_size = Size,
- write_buffer_size_limit = Limit }) ->
- Size1 = Size + iolist_size(Data),
- Handle1 = Handle #handle { write_buffer = [ Data | WriteBuffer ],
- write_buffer_size = Size1 },
- case Limit /= infinity andalso Size1 > Limit of
- true -> write_buffer(Handle1);
- false -> {ok, Handle1}
- end.
-
write_buffer(Handle = #handle { write_buffer = [] }) ->
{ok, Handle};
write_buffer(Handle = #handle { hdl = Hdl, offset = Offset,