summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@lshift.net>2009-10-30 13:39:08 +0000
committerMatthew Sackman <matthew@lshift.net>2009-10-30 13:39:08 +0000
commit2c8ccb231bd7dcc635bc8e2b6c866a052c33c0fb (patch)
tree5c1bd1d20451ec63948f98fd1b02a6bf0d8586ae /src
parent62e8bcdaaa9855f6c016bb0f8e5520066059584a (diff)
downloadrabbitmq-server-git-2c8ccb231bd7dcc635bc8e2b6c866a052c33c0fb.tar.gz
Added specs to fhc
Diffstat (limited to 'src')
-rw-r--r--src/file_handle_cache.erl35
1 files changed, 34 insertions, 1 deletions
diff --git a/src/file_handle_cache.erl b/src/file_handle_cache.erl
index d2b0ba2e6b..fe4e90774d 100644
--- a/src/file_handle_cache.erl
+++ b/src/file_handle_cache.erl
@@ -32,7 +32,7 @@
-module(file_handle_cache).
-export([open/3, close/1, read/2, append/2, sync/1, position/2, truncate/1,
- last_sync_offset/1]).
+ last_sync_offset/1, append_write_buffer/1]).
%%----------------------------------------------------------------------------
@@ -60,6 +60,30 @@
}).
%%----------------------------------------------------------------------------
+%% Specs
+
+-ifdef(use_specs).
+
+-type(ref() :: any()).
+-type(error() :: {'error', any()}).
+-type(ok_or_error() :: ('ok' | error())).
+-type(position() :: ('bof' | 'eof' | {'bof',integer()} | {'eof',integer()}
+ | {'cur',integer()} | integer())).
+
+-spec(open/3 :: (string(), [any()], [any()]) -> ({'ok', ref()} | error())).
+-spec(close/1 :: (ref()) -> ('ok' | error())).
+-spec(read/2 :: (ref(), integer()) ->
+ ({'ok', ([char()]|binary())} | eof | error())).
+-spec(append/2 :: (ref(), iodata()) -> ok_or_error()).
+-spec(sync/1 :: (ref()) -> ok_or_error()).
+-spec(position/2 :: (ref(), position()) -> ok_or_error()).
+-spec(truncate/1 :: (ref()) -> ok_or_error()).
+-spec(last_sync_offset/1 :: (ref()) -> ({'ok', integer()} | error())).
+-spec(append_write_buffer/1 :: (ref()) -> ok_or_error()).
+
+-endif.
+
+%%----------------------------------------------------------------------------
%% Public API
open(Path, Mode, Options) ->
@@ -247,6 +271,15 @@ last_sync_offset(Ref) ->
Error -> Error
end.
+append_write_buffer(Ref) ->
+ case get_or_reopen(Ref) of
+ {ok, Handle} ->
+ {Result, Handle1} = write_buffer(Handle),
+ put({Ref, fhc_handle}, Handle1),
+ Result;
+ Error -> Error
+ end.
+
%%----------------------------------------------------------------------------
%% Internal functions
%%----------------------------------------------------------------------------