| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-06-07 12:47:34 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-06-07 12:47:34 +0200 | 
| commit | 9b55ecea81edbc12196a5818077fd38421f8f1a8 (patch) | |
| tree | c6d590615695cacbb5a2a3f21fe20639292d134e /src/shared | |
| parent | d99f1e8b0efedf1286ab15c656a0ea874823865f (diff) | |
Now it seems to work perfectly.
Getting both nodes to start made some unexpected issues about the
hostnames appear, despite both using either "-name" or "-sname".
Diffstat (limited to 'src/shared')
| -rw-r--r-- | src/shared/io/sh_database.erl | 7 | ||||
| -rw-r--r-- | src/shared/util/sh_array_util.erl | 105 | 
2 files changed, 112 insertions, 0 deletions
| diff --git a/src/shared/io/sh_database.erl b/src/shared/io/sh_database.erl index 8b52f9e..233e37d 100644 --- a/src/shared/io/sh_database.erl +++ b/src/shared/io/sh_database.erl @@ -19,8 +19,15 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec get_db_node () -> node().  get_db_node () -> list_to_atom("db_node@" ++ net_adm:localhost()). +-spec do_remote_operation (atom(), list(any())) -> +   ( +      {'badrpc', any()} +      | {'aborted', any()} +      | {'atomic', ({'ok', any()} | 'ok' | 'not_found')} +   ).  do_remote_operation (Op, Params) ->     rpc:call(get_db_node(), db_access, Op, Params). diff --git a/src/shared/util/sh_array_util.erl b/src/shared/util/sh_array_util.erl new file mode 100644 index 0000000..5f58b36 --- /dev/null +++ b/src/shared/util/sh_array_util.erl @@ -0,0 +1,105 @@ +-module(sh_array_util). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export +( +   [ +      any/2, +      none/2, +      all/2, + +      mapiff/3 +   ] +). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec any_internals +   ( +      fun((any()) -> boolean()), +      array:array(any()), +      non_neg_integer() +   ) +   -> boolean(). +any_internals (_, _, 0) -> +   false; +any_internals (Fun, Array, PrevIX) -> +   IX = (PrevIX - 1), +   case Fun(array:get(IX, Array)) of +      true -> true; +      _ -> any_internals(Fun, Array, IX) +   end. + +-spec all_internals +   ( +      fun((any()) -> boolean()), +      array:array(any()), +      non_neg_integer() +   ) +   -> boolean(). +all_internals (_, _, 0) -> +   true; +all_internals (Fun, Array, PrevIX) -> +   IX = (PrevIX - 1), +   case Fun(array:get(IX, Array)) of +      true -> any_internals(Fun, Array, IX); +      _ -> false +   end. + +-spec mapiff_internals +   ( +      fun((any()) -> boolean()), +      fun((any()) -> any()), +      array:array(any()), +      list(non_neg_integer()), +      non_neg_integer() +   ) +   -> {array:array(any()), list(non_neg_integer())}. +mapiff_internals (_, _, Array, IXList, 0) -> +   {Array, IXList}; +mapiff_internals (Cond, Map, Array, IXList, PrevIX) -> +   IX = (PrevIX - 1), +   Elem = array:get(IX, Array), + +   case Cond(Elem) of +      false -> mapiff_internals(Cond, Map, Array, IXList, IX); +      _ -> +         mapiff_internals +         ( +            Cond, +            Map, +            array:set(IX, Map(Elem), Array), +            [IX|IXList], +            IX +         ) +   end. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec any (fun((any()) -> boolean()), array:array(any())) -> boolean(). +any (Fun, Array) -> +   any_internals(Fun, Array, array:size(Array)). + +-spec all (fun((any()) -> boolean()), array:array(any())) -> boolean(). +all (Fun, Array) -> +   all_internals(Fun, Array, array:size(Array)). + +-spec none (fun((any()) -> boolean()), array:array(any())) -> boolean(). +none (Fun, Array) -> +   not any(Fun, Array). + +-spec mapiff +   ( +      fun((any()) -> boolean()), +      fun((any()) -> any()), +      array:array(any()) +   ) +   -> {array:array(any()), list(non_neg_integer())}. +mapiff (Cond, Map, Array) -> +   mapiff_internals(Cond, Map, Array, [], array:size(Array)). | 


