aboutsummaryrefslogtreecommitdiff
path: root/apps/dreki/src/dreki_config.erl
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dreki/src/dreki_config.erl')
-rw-r--r--apps/dreki/src/dreki_config.erl58
1 files changed, 58 insertions, 0 deletions
diff --git a/apps/dreki/src/dreki_config.erl b/apps/dreki/src/dreki_config.erl
new file mode 100644
index 0000000..69df2d6
--- /dev/null
+++ b/apps/dreki/src/dreki_config.erl
@@ -0,0 +1,58 @@
+-module(dreki_config).
+-include_lib("kernel/include/logger.hrl").
+-include_lib("partisan/include/partisan.hrl").
+-include("dreki_plum.hrl").
+
+-export([init/1]).
+
+-define(CONFIG, [
+ %% All stolen from bondy as partisan isn't that well documented, eh.
+ {partisan, [
+ {broadcast_mods, [plum_db, partisan_plumtree_backend]},
+ {channels, [data, rpc, membership]},
+ {connect_disterl, false},
+ {exchange_tick_period, timer:minutes(1)},
+ {lazy_tick_period, timer:seconds(5)},
+ {parallelism, 4},
+ {membership_strategy, partisan_full_membership_strategy},
+ {partisan_peer_service_manager,
+ partisan_pluggable_peer_service_manager},
+ {pid_encoding, false},
+ {ref_encoding, false},
+ {binary_padding, false},
+ {disable_fast_forward, false},
+ %% Broadcast options
+ {broadcast, false},
+ {tree_refresh, 1000},
+ {relay_ttl, 5}
+ ]},
+
+ %% Same!
+ {plum_db, [
+ {aae_enabled, true},
+ {wait_for_aae_exchange, true},
+ {store_open_retries_delay, 2000},
+ {store_open_retry_limit, 30},
+ {data_exchange_timeout, 60000},
+ {hashtree_timer, 10000},
+ {data_dir, "data/plumdb"},
+ {partitions, 8},
+ {prefixes, ?PLUM_DB_PREFIXES}
+ ]}
+]).
+
+-define(PT, dreki_config_cache).
+
+init(_Args) ->
+ persistent_term:put(?PT, application:get_all_env(dreki)),
+ ok = set_app_configs(?CONFIG),
+ ?LOG_INFO(#{message => "Configured Dreki and dependencies"}),
+ ok = partisan_config:init(),
+ ok.
+
+set_app_configs(Configs) ->
+ lists:foreach(fun ({App, Params}) ->
+ [application:set_env(App, Key, Value) || {Key, Value} <- Params]
+ end, Configs),
+ ok.
+