January 2019
Intermediate to advanced
376 pages
8h 49m
English
Here’s the code to make the cache code sequential:
| | Elixir code/StatefulProperties/elixir/pbt/lib/cache_fixed.ex |
| | defmodule Cache do |
| | use GenServer |
| | |
| | ## Public API ## |
| | def start_link(n) do |
| | GenServer.start_link(__MODULE__, n, name: __MODULE__) |
| | end |
| | |
| | def stop() do |
| | GenServer.stop(__MODULE__) |
| | end |
| | |
| | def find(key) do |
| | case :ets.match(:cache, {:_, {key, :"$1"}}) do |
| | [[val]] -> {:ok, val} |
| | [] -> {:error, :not_found} |
| | end |
| | end |
| | def cache(key, val) do |
| | GenServer.call(__MODULE__, {:cache, key, val}) |
| | end |
| | |
| | def flush() do |
| | GenServer.call(__MODULE__, :flush) |
| | end |
| | |
| | ## GenServer callbacks ## |
| | def init(n) do |
| | :ets.new(:cache, [:public, |
Read now
Unlock full access