Skip to content

Commit

Permalink
Return {ok,CAS::integer()} instead of ok for all store operations.
Browse files Browse the repository at this point in the history
This saves a roundtrip when you set/add an item that you'll want to modify later.

This is a backward-incompatible change, but it seems important enough and seems to be
a coding oversight as most of the work was already done (but thrown away) in store_callback().
  • Loading branch information
vincentdephily committed Nov 3, 2016
1 parent 4001902 commit 67b4f92
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 11 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ cberl:start_link(cberl_default, 5).
{ok, <0.33.0>}
% Poolname, Key, Expire - 0 for infinity, Value
cberl:set(cberl_default, <<"fkey">>, 0, <<"cberl">>).
ok
{ok,CAS}
cberl:get(cberl_default, <<"fkey">>).
{<<"fkey">>, ReturnedCasValue, <<"cberl">>}
```
Expand Down
2 changes: 1 addition & 1 deletion c_src/cb.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ ERL_NIF_TERM cb_store(ErlNifEnv* env, handle_t* handle, void* obj)
if (cb.error != LCB_SUCCESS) {
return return_lcb_error(env, cb.error);
}
return A_OK(env);
return enif_make_tuple2(env, A_OK(env), enif_make_uint64(env, cb.cas));
}

void* cb_mget_args(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
Expand Down
18 changes: 9 additions & 9 deletions src/cberl.erl
Original file line number Diff line number Diff line change
Expand Up @@ -73,32 +73,32 @@ stop(PoolPid) ->
%%%%%%%%%%%%%%%%%%%%%%%%

%% @equiv add(PoolPid, Key, Exp, Value, standard)
-spec add(pid(), key(), integer(), value()) -> ok | {error, _}.
-spec add(pid(), key(), integer(), value()) -> {ok,integer()} | {error, _}.
add(PoolPid, Key, Exp, Value) ->
add(PoolPid, Key, Exp, Value, standard).

%% @equiv store(PoolPid, add, Key, Value, TranscoderOpts, Exp, 0)
-spec add(pid(), key(), integer(), value(), atom()) -> ok | {error, _}.
-spec add(pid(), key(), integer(), value(), atom()) -> {ok,integer()} | {error, _}.
add(PoolPid, Key, Exp, Value, TranscoderOpts) ->
store(PoolPid, add, Key, Value, TranscoderOpts, Exp, 0).

%% @equiv replace(PoolPid, Key, Exp, Value, standard)
-spec replace(pid(), key(), integer(), value()) -> ok | {error, _}.
-spec replace(pid(), key(), integer(), value()) -> {ok,integer()} | {error, _}.
replace(PoolPid, Key, Exp, Value) ->
replace(PoolPid, Key, Exp, Value, standard).

%% @equiv store(PoolPid, replace, "", Key, Value, Exp)
-spec replace(pid(), key(), integer(), value(), atom()) -> ok | {error, _}.
-spec replace(pid(), key(), integer(), value(), atom()) -> {ok,integer()} | {error, _}.
replace(PoolPid, Key, Exp, Value, TranscoderOpts) ->
store(PoolPid, replace, Key, Value, TranscoderOpts, Exp, 0).

%% @equiv set(PoolPid, Key, Exp, Value, standard)
-spec set(pid(), key(), integer(), value()) -> ok | {error, _}.
-spec set(pid(), key(), integer(), value()) -> {ok,integer()} | {error, _}.
set(PoolPid, Key, Exp, Value) ->
set(PoolPid, Key, Exp, Value, standard).

%% @equiv store(PoolPid, set, "", Key, Value, Exp)
-spec set(pid(), key(), integer(), value(), atom()) -> ok | {error, _}.
-spec set(pid(), key(), integer(), value(), atom()) -> {ok,integer()} | {error, _}.
set(PoolPid, Key, Exp, Value, TranscoderOpts) ->
store(PoolPid, set, Key, Value, TranscoderOpts, Exp, 0).

Expand All @@ -113,7 +113,7 @@ set(PoolPid, Key, Exp, Value, TranscoderOpts) ->
append(PoolPid, _Cas, Key, Value) ->
append(PoolPid, Key, Value).

-spec append(pid(), key(), value()) -> ok | {error, _}.
-spec append(pid(), key(), value()) -> {ok,integer()} | {error, _}.
append(PoolPid, Key, Value) ->
store(PoolPid, append, Key, Value, none, 0, 0).

Expand All @@ -124,7 +124,7 @@ append(PoolPid, Key, Value) ->
prepend(PoolPid, _Cas, Key, Value) ->
prepend(PoolPid, Key, Value).

-spec prepend(pid(), key(), value()) -> ok | {error, _}.
-spec prepend(pid(), key(), value()) -> {ok,integer()} | {error, _}.
prepend(PoolPid, Key, Value) ->
store(PoolPid, prepend, Key, Value, none, 0, 0).

Expand Down Expand Up @@ -212,7 +212,7 @@ unlock(PoolPid, Key, Cas) ->
%% pass 0 for infinity
%% CAS
-spec store(pid(), operation_type(), key(), value(), atom(),
integer(), integer()) -> ok | {error, _}.
integer(), integer()) -> {ok,integer()} | {error, _}.
store(PoolPid, Op, Key, Value, TranscoderOpts, Exp, Cas) ->
execute(PoolPid, {store, Op, Key, Value,
TranscoderOpts, Exp, Cas}).
Expand Down

0 comments on commit 67b4f92

Please sign in to comment.