Packages
kujira
0.1.39
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.74
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Elixir interfaces to Kujira dApps, for building indexers, APIs and bots
Current section
Files
Jump to
Current section
Files
lib/kujira/invalidator.ex
defmodule Kujira.Invalidator do
@moduledoc """
A process that Kujira.Node runs, subscribed to new blocks and exceuting cache invalidations for all registered modules
"""
defp execute(invalidations) do
for i <- invalidations do
case i do
%{arguments: nil} ->
Memoize.invalidate(i.module, i.function)
i ->
Memoize.invalidate(i.module, i.function, i.arguments)
end
end
end
end
defmodule Kujira.Invalidation do
@moduledoc """
An invalidation requested by `Kujira.Invalidate.invalidations/1`
"""
defstruct [:module, :function, :args]
@type t :: %__MODULE__{module: module(), function: atom(), args: [any()] | nil}
end
defprotocol Kujira.Invalidate do
@moduledoc """
Specification for a module to be registered with Kujira.Invalidator
N.B: This is blocked until the upgrade to Cosmos SDK 0.50, an the associated upgrade to Cometbft 0.38. Currently BlockResult is unavailable over gRPC and so block events can't be scanned for required invalidations
"""
alias Cosmos.Base.Tendermint.V1beta1.Block
@spec invalidations(Block.t()) :: [Kujira.Invalidation.t()]
def invalidations(block)
end