| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/ataxia_server.erl')
| -rw-r--r-- | src/ataxia_server.erl | 28 | 
1 files changed, 17 insertions, 11 deletions
| diff --git a/src/ataxia_server.erl b/src/ataxia_server.erl index 39cdf16..d4d1671 100644 --- a/src/ataxia_server.erl +++ b/src/ataxia_server.erl @@ -10,10 +10,10 @@  -export  (     [ -      add_at/5, -      add/4, -      reserve/3, +      add_at/6, +      add/5,        reserve/4, +      reserve_at/5,        fetch/3,        update/4, @@ -200,11 +200,12 @@ fetch_if (DB, User, ID, Cond) ->        ataxia_id:type(),        ataxia_security:permission(),        ataxia_security:permission(), +      ataxia_lock:type(),        any()     )     -> ({'aborted', any()} | 'ok'). -add_at (DB, ID, ReadPerm, WritePerm, Value) -> -   Item = ataxia_entry:new(ID, ReadPerm, WritePerm, Value), +add_at (DB, ID, ReadPerm, WritePerm, Lock, Value) -> +   Item = ataxia_entry:new(ID, ReadPerm, WritePerm, Lock, Value),     case mnesia:transaction(fun add_new_item/2, [DB, Item]) of        {atomic, ok} -> ok;        {aborted, Val} -> {aborted, Val} @@ -215,25 +216,27 @@ add_at (DB, ID, ReadPerm, WritePerm, Value) ->        atom(),        ataxia_security:permission(),        ataxia_security:permission(), +      ataxia_lock:type(),        any()     )     -> ({'aborted', any()} | {'ok', ataxia_id:type()}). -add (DB, ReadPerm, WritePerm, Value) -> +add (DB, ReadPerm, WritePerm, Lock, Value) ->     ID = ataxia_id_manager:allocate(DB), -   case add_at(DB, ID, ReadPerm, WritePerm, Value) of +   case add_at(DB, ID, ReadPerm, WritePerm, Lock, Value) of        ok -> {ok, ID};        {aborted, Val} -> {aborted, Val}     end. --spec reserve +-spec reserve_at     (        atom(),        ataxia_security:permission(),        ataxia_security:permission(), +      ataxia_lock:type(),        ataxia_id:type()     )     -> ({'aborted', any()} | 'ok'). -reserve (DB, ReadPerm, WritePerm, ID) -> +reserve_at (DB, ReadPerm, WritePerm, Lock, ID) ->     % TODO: spawn or inform janitor     add_at     ( @@ -241,6 +244,7 @@ reserve (DB, ReadPerm, WritePerm, ID) ->        ID,        ataxia_security:add_access(ataxia_security:janitor(), ReadPerm),        ataxia_security:add_access(ataxia_security:janitor(), WritePerm), +      Lock, % TODO: allow the janitor there.        reserved     ). @@ -248,16 +252,18 @@ reserve (DB, ReadPerm, WritePerm, ID) ->     (        atom(),        ataxia_security:permission(), -      ataxia_security:permission() +      ataxia_security:permission(), +      ataxia_lock:type()     )     -> ({'aborted', any()} | {'ok', ataxia_id:type()}). -reserve (DB, ReadPerm, WritePerm) -> +reserve (DB, ReadPerm, WritePerm, Lock) ->     % TODO: spawn or inform janitor     add     (        DB,        ataxia_security:add_access(ataxia_security:janitor(), ReadPerm),        ataxia_security:add_access(ataxia_security:janitor(), WritePerm), +      Lock, % TODO: allow the janitor there.        reserved     ). | 


