-module(crew_ffi). -export([identity/1, scheduler_count/0, system_time/0]). -export([get_counter/1, set_counter/2, increment_counter/2, decrement_counter/2]). identity(X) -> X. scheduler_count() -> erlang:system_info(schedulers_online). system_time() -> os:system_time(millisecond). get_counter(Name) -> case persistent_term:get(Name, undefined) of undefined -> 0; Counter -> counters:get(Counter, 1) end. set_counter(Name, Value) -> case persistent_term:get(Name, undefined) of undefined -> Counter = counters:new(1, []), counters:put(Counter, 1, Value), persistent_term:put(Name, Counter); Counter -> counters:put(Counter, 1, Value) end. increment_counter(Name, Incr) -> counters:add(persistent_term:get(Name), 1, Incr). decrement_counter(Name, Decr) -> counters:sub(persistent_term:get(Name), 1, Decr).