diff options
| author | Matthias Radestock <matthias@lshift.net> | 2009-11-24 23:55:55 +0000 |
|---|---|---|
| committer | Matthias Radestock <matthias@lshift.net> | 2009-11-24 23:55:55 +0000 |
| commit | fa446fd4fc67e8e6ccc96d6fcb0bdb05deec55fc (patch) | |
| tree | 2c2eded7d72b004dd0e77b4bdcf5c2e6b5c586ce /src | |
| parent | cd2918c5851f8cba7f69ec3df17f805d3ddfc0b0 (diff) | |
| download | rabbitmq-server-git-fa446fd4fc67e8e6ccc96d6fcb0bdb05deec55fc.tar.gz | |
minor refactoring
Diffstat (limited to 'src')
| -rw-r--r-- | src/file_handle_cache.erl | 38 |
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, |
