View Source locus_loader (locus v2.3.9)

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

Summary

Types

-type blob_format() :: tgz | tarball | gzip | gzipped_mmdb | mmdb | unknown.
-type cacher_msg() :: locus_filesystem_store:msg().
Link to this type

error_retry_behaviour/0

View Source
-type error_retry_behaviour() ::
    {backoff, milliseconds_interval()} | {exponential_backoff, exponential_backoff_params()}.
Link to this type

event_cache_attempt_finished/0

View Source
-type 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
-type exponential_backoff_params() ::
    #{min_interval := milliseconds_interval(),
      max_interval := milliseconds_interval(),
      growth_base := milliseconds_interval(),
      growth_exponent := number()}.
-type fetcher_opt() :: locus_maxmind_download:opt() | locus_http_download:opt().
-type 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
-type maxmind_origin_params() :: #{license_key := unicode:unicode_binary(), date => calendar:date()}.
Link to this type

milliseconds_interval/0

View Source
-type milliseconds_interval() :: pos_integer().
-type msg() ::
    {event, event()} |
    {load_success, source(), calendar:datetime(), locus_mmdb:database()} |
    {load_failure, source(), Reason :: term()}.
-type opt() :: loader_opt() | fetcher_opt().
-type origin() ::
    {maxmind, atom()} |
    {http, locus_http_download:url()} |
    {filesystem, locus_filesystem_load:path()} |
    locus:custom_fetcher().
-type provider_source() :: {maxmind, atom()}.
-type settings() ::
    #settings{update_period :: pos_integer(),
              error_retry_behaviour :: error_retry_behaviour(),
              error_retry_behaviour_applies_after_readiness :: boolean(),
              use_cache :: boolean(),
              database_cache_file :: file:filename() | undefined}.
-opaque state()
Link to this type

uniformly_distributed_update_period/0

View Source
-type uniformly_distributed_update_period() :: #{min := pos_integer(), max := pos_integer()}.
-type update_period() :: pos_integer() | uniformly_distributed_update_period().