Packages
avrora
0.25.0
0.30.2
0.30.1
0.30.0
0.29.2
0.29.1
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.2
0.24.1
0.24.0
0.23.0
0.22.0
0.21.1
0.21.0
0.20.0
0.19.0
0.18.1
0.18.0
0.17.0
0.16.0
0.15.0
0.14.1
0.14.0
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.1
0.8.0
0.7.1
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.1
0.3.0
0.2.2
0.2.1
0.2.0
0.1.1-beta
0.1.0-beta
An Elixir library for working with Avro messages conveniently. It supports local schema files and Confluent® schema registry.
Current section
Files
Jump to
Current section
Files
lib/avrora/avro_schema_store.ex
defmodule Avrora.AvroSchemaStore do
@moduledoc """
A host process and a wrapper for :avro_schema_store produced tables.
It is used only to create new tables and no other functionality is coverd.
This process will be in the same supervision tree as `Avrora.Storage.Memory`
with a stragety `one for all`.
See more:
- https://github.com/Strech/avrora/issues/21
- https://elixirforum.com/t/do-we-need-a-process-for-ets-tables/22705
"""
use GenServer
def start_link(opts \\ []) do
{name_opts, _} = Keyword.split(opts, [:name])
opts = Keyword.merge([name: __MODULE__], name_opts)
GenServer.start_link(__MODULE__, [], opts)
end
@impl true
def init(_state \\ []), do: {:ok, []}
@impl true
def handle_call({:new}, _from, state), do: {:reply, :avro_schema_store.new(), state}
@doc """
Creates a new Erlang Term Store.
## Examples:
iex> {:ok, _} = Avrora.AvroSchemaStore.start_link()
iex> Avrora.AvroSchemaStore.new() |> :ets.info() |> Keyword.get(:size)
0
"""
def new, do: new(__MODULE__)
@doc false
@spec new(pid() | atom()) :: reference()
def new(pid), do: GenServer.call(pid, {:new})
end