View Source locus_loader (locus v2.3.6)

Loads and unpacks databases while managing any associated assets (e.g. reading from and writing to cache)

Link to this section Summary

Link to this section Types

Specs

blob_format() :: tgz | tarball | gzip | gzipped_mmdb | mmdb | unknown.

Specs

cacher_msg() :: locus_filesystem_store:msg().
Link to this type

error_retry_behaviour/0

View Source

Specs

error_retry_behaviour() ::
    {backoff, milliseconds_interval()} | {exponential_backoff, exponential_backoff_params()}.

Specs

Link to this type

event_cache_attempt_finished/0

View Source

Specs

event_cache_attempt_finished() ::
    {cache_attempt_finished, locus_filesystem_store:path(), ok} |
    {cache_attempt_finished, locus_filesystem_store:path(), {error, term()}}.
Link to this type

exponential_backoff_params/0

View Source

Specs

exponential_backoff_params() ::
    #{min_interval := milliseconds_interval(),
      max_interval := milliseconds_interval(),
      growth_base := milliseconds_interval(),
      growth_exponent := number()}.

Specs

Specs

Specs

Specs

loader_opt() ::
    {update_period, milliseconds_interval()} |
    {error_retries, error_retry_behaviour()} |
    no_cache |
    {database_cache_file, file:filename()}.
Link to this type

maxmind_origin_params/0

View Source

Specs

maxmind_origin_params() :: #{license_key := unicode:unicode_binary(), date => calendar:date()}.
Link to this type

milliseconds_interval/0

View Source

Specs

milliseconds_interval() :: pos_integer().

Specs

msg() ::
    {event, event()} |
    {load_success, source(), calendar:datetime(), locus_mmdb:database()} |
    {load_failure, source(), Reason :: term()}.

Specs

opt() :: loader_opt() | fetcher_opt().

Specs

origin() ::
    {maxmind, atom()} |
    {http, locus_http_download:url()} |
    {filesystem, locus_filesystem_load:path()} |
    locus:custom_fetcher().

Specs

provider_source() :: {maxmind, atom()}.

Specs

settings() :: #settings{}.

Specs

Specs

state() :: #state{}.
Link to this type

uniformly_distributed_update_period/0

View Source

Specs

uniformly_distributed_update_period() :: #{min := pos_integer(), max := pos_integer()}.

Specs

update_period() :: pos_integer() | uniformly_distributed_update_period().