summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/ataxia_client.erl')
-rw-r--r--src/ataxia_client.erl34
1 files changed, 29 insertions, 5 deletions
diff --git a/src/ataxia_client.erl b/src/ataxia_client.erl
index dec16e6..739320a 100644
--- a/src/ataxia_client.erl
+++ b/src/ataxia_client.erl
@@ -12,7 +12,8 @@
[
add/4,
add_at/5,
- reserve/2,
+ reserve/3,
+ reserve/4,
fetch/3,
update/4,
@@ -102,18 +103,41 @@ add (DB, ReadPerm, WritePerm, Value) ->
-spec reserve
(
atom(),
+ ataxia_security:permission(),
+ ataxia_security:permission()
+ )
+ -> ({'ok', ataxia_id:type()} | {'aborted', any()}).
+reserve (DB, ReadPerm, WritePerm) ->
+ DBNode = get_random_db_node(),
+
+ Reply = rpc:call(DBNode, ataxia_server, reserve, [DB, ReadPerm, WritePerm]),
+
+ io:format
+ (
+ "~nataxia_client:reserve(~p) ! ~p -> ~p.~n",
+ [{DB, ReadPerm, WritePerm}, DBNode, Reply]
+ ),
+
+ Reply.
+
+-spec reserve
+ (
+ atom(),
+ ataxia_security:permission(),
+ ataxia_security:permission(),
ataxia_id:type()
)
- -> ('ok' | 'unavailable').
-reserve (DB, ID) ->
+ -> ('ok' | {'aborted', any()}).
+reserve (DB, ReadPerm, WritePerm, ID) ->
DBNode = get_db_node_for(ID),
- Reply = rpc:call(DBNode, ataxia_server, reserve, [DB, ID]),
+ Reply =
+ rpc:call(DBNode, ataxia_server, reserve, [DB, ReadPerm, WritePerm, ID]),
io:format
(
"~nataxia_client:reserve(~p) ! ~p -> ~p.~n",
- [{DB, ID}, DBNode, Reply]
+ [{DB, ReadPerm, WritePerm, ID}, DBNode, Reply]
),
Reply.