Current section

Files

Jump to
themis src themis@internal@erlang@ets.erl
Raw

src/themis@internal@erlang@ets.erl

-module(themis@internal@erlang@ets).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/2, info/1, insert/3, insert_many/2, insert_raw/2, insert_new_raw/2, lookup/2, counter_increment/2, match_metric/2, match_record/2, counter_increment_by/3]).
-export_type([table_builder/0, table/0, table_type/0, table_info/0, table_access/0, tid/0]).
-type table_builder() :: {table_builder, table_type(), table_access()}.
-type table() :: any().
-type table_type() :: set | ordered_set | bag | duplicate_bag.
-type table_info() :: {table_info,
tid(),
boolean(),
boolean(),
boolean(),
boolean(),
integer(),
gleam@erlang@process:pid_(),
gleam@option:option(gleam@erlang@process:pid_()),
gleam@erlang@atom:atom_(),
integer(),
gleam@erlang@atom:atom_(),
boolean(),
table_type(),
integer(),
table_access()}.
-type table_access() :: public | protected | private.
-type tid() :: any().
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 49).
-spec new(table_builder(), binary()) -> table().
new(Builder, Name) ->
_pipe = erlang:binary_to_atom(Name),
themis_external:new(
_pipe,
erlang:element(2, Builder),
erlang:element(3, Builder)
).
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 54).
-spec info(table()) -> table_info().
info(Table) ->
R = themis_external:info(Table),
{table_info,
erlang:element(2, erlang:element(1, R)),
erlang:element(2, erlang:element(2, R)),
erlang:element(2, erlang:element(3, R)),
erlang:element(2, erlang:element(4, R)),
erlang:element(2, erlang:element(5, R)),
erlang:element(2, erlang:element(6, R)),
erlang:element(2, erlang:element(7, R)),
erlang:element(2, erlang:element(8, R)),
erlang:element(2, erlang:element(9, R)),
erlang:element(2, erlang:element(10, R)),
erlang:element(2, erlang:element(11, R)),
erlang:element(2, erlang:element(12, R)),
erlang:element(2, erlang:element(13, R)),
erlang:element(2, erlang:element(14, R)),
erlang:element(2, erlang:element(15, R))}.
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 75).
-spec insert(table(), any(), any()) -> boolean().
insert(Table, Key, Value) ->
ets:insert(
Table,
begin
_pipe = {Key, Value},
gleam_stdlib:identity(_pipe)
end
).
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 88).
-spec insert_many(table(), gleam@dict:dict(any(), any())) -> boolean().
insert_many(Table, To_insert) ->
Objects = begin
_pipe = maps:to_list(To_insert),
gleam_stdlib:identity(_pipe)
end,
ets:insert(Table, Objects).
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 95).
-spec insert_raw(table(), any()) -> boolean().
insert_raw(Table, Object) ->
ets:insert(Table, Object).
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 79).
-spec insert_new_raw(table(), gleam@dynamic:dynamic_()) -> {ok, nil} |
{error, nil}.
insert_new_raw(Table, Object) ->
R = ets:insert_new(Table, Object),
case begin
_pipe = R,
gleam@dynamic:bool(_pipe)
end of
{error, _} ->
{error, nil};
{ok, true} ->
{ok, nil};
{ok, false} ->
{error, nil}
end.
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 99).
-spec lookup(table(), any()) -> list(gleam@dynamic:dynamic_()).
lookup(Table, Key) ->
ets:lookup(Table, Key).
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 117).
-spec counter_increment(table(), any()) -> nil.
counter_increment(Table, Key) ->
themis_external:counter_increment_by(Table, Key, 1),
nil.
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 122).
-spec match_metric(table(), any()) -> list(gleam@dynamic:dynamic_()).
match_metric(Table, Kind) ->
themis_external:match_metric(Table, Kind).
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 126).
-spec match_record(table(), binary()) -> list(gleam@dynamic:dynamic_()).
match_record(Table, Name) ->
themis_external:match_record(Table, Name).
-file("/git/Themis/src/themis/internal/erlang/ets.gleam", 106).
-spec counter_increment_by(table(), any(), themis@number:number_()) -> nil.
counter_increment_by(Table, Key, By) ->
case By of
{dec, Val} ->
themis_external:counter_increment_by_decimal(Table, Key, Val);
{int, Val@1} ->
themis_external:counter_increment_by(Table, Key, Val@1);
na_n ->
erlang:error(#{gleam_error => panic,
message => <<"can not increment a counter by NaN"/utf8>>,
module => <<"themis/internal/erlang/ets"/utf8>>,
function => <<"counter_increment_by"/utf8>>,
line => 110});
neg_inf ->
erlang:error(#{gleam_error => panic,
message => <<"can not increment a counter by -Inf"/utf8>>,
module => <<"themis/internal/erlang/ets"/utf8>>,
function => <<"counter_increment_by"/utf8>>,
line => 111});
pos_inf ->
erlang:error(#{gleam_error => panic,
message => <<"can not increment a counter by +Inf"/utf8>>,
module => <<"themis/internal/erlang/ets"/utf8>>,
function => <<"counter_increment_by"/utf8>>,
line => 112})
end,
nil.