Packages

A wrapper for the os_mon functionality

Current section

Files

Jump to
gleam_os_mon src gleam@os_mon@disk.erl
Raw

src/gleam@os_mon@disk.erl

-module(gleam@os_mon@disk).
-compile(no_auto_import).
-export([set_almost_full_threshold/1, get_almost_full_threshold/0, get_check_interval/0, set_check_interval/1, get_disk_data/0]).
-export_type([errors/0, disk/0]).
-type errors() :: {value_too_small, integer()} |
{value_too_large, integer()} |
{crash, gleam@erlang:crash()}.
-type disk() :: {disk, binary(), integer(), integer()}.
-spec set_almost_full_threshold(integer()) -> {ok, integer()} |
{error, errors()}.
set_almost_full_threshold(Percent) ->
case Percent of
_@1 when Percent < 0 ->
{error, {value_too_small, Percent}};
_@2 when Percent > 100 ->
{error, {value_too_large, Percent}};
_@3 ->
case gleam_erlang_ffi:rescue(
fun() ->
disksup:set_almost_full_threshold(
gleam@int:to_float(Percent)
/ 100.0
)
end
) of
{ok, _@4} ->
{ok, Percent};
{error, Err} ->
{error, {crash, Err}}
end
end.
-spec get_almost_full_threshold() -> integer().
get_almost_full_threshold() ->
disksup:get_almost_full_threshold().
-spec get_check_interval() -> integer().
get_check_interval() ->
disksup:get_check_interval() div 60000.
-spec set_check_interval(integer()) -> {ok, integer()} | {error, errors()}.
set_check_interval(Minutes) ->
case Minutes of
_@1 when Minutes =< 0 ->
{error, {value_too_small, Minutes}};
_@2 ->
case gleam_erlang_ffi:rescue(
fun() -> disksup:set_check_interval(Minutes) end
) of
{ok, _@3} ->
{ok, Minutes};
{error, Err} ->
{error, {crash, Err}}
end
end.
-spec get_disk_data() -> gleam@map:map_(binary(), disk()).
get_disk_data() ->
gleam@list:fold(
disksup:get_disk_data(),
gleam@map:new(),
fun(Sum, Entry) ->
{Id@1, Kbyte@1, Capacity@1} = case Entry of
{Id, Kbyte, Capacity} -> {Id, Kbyte, Capacity};
_try ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _try,
module => <<"gleam/os_mon/disk"/utf8>>,
function => <<"get_disk_data"/utf8>>,
line => 87})
end,
gleam@map:insert(Sum, Id@1, {disk, Id@1, Kbyte@1, Capacity@1})
end
).