Packages
ex_esdb
0.0.5-alpha
0.11.0
0.10.0
0.9.0
0.8.0
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14-alpha
0.0.13-alpha
0.0.12-alpha
0.0.11-alpha
0.0.10-alpha
0.0.9-alpha
0.0.8-alpha
0.0.6-alpha
0.0.5-alpha
0.0.4-alpha
0.0.3-alpha
0.0.2-alfa
0.0.1-alfa
ExESDB is a reincarnation of rabbitmq/khepri, specialized for use as a BEAM-native event store.
Current section
Files
Jump to
Current section
Files
lib/repl/event_stream_monitor.ex
defmodule ExESDB.Repl.EventStreamMonitor do
@moduledoc false
use GenServer
require Logger
alias Phoenix.PubSub, as: PubSub
defp subscribe(store) do
:ex_esdb_pubsub
|> PubSub.subscribe("#{store}")
end
@impl true
def handle_info({:event_seen, event}, state) do
IO.puts "Seen event #{inspect event}"
{:noreply, state}
end
@impl true
def handle_info(unknown, state) do
IO.puts "Unknown message #{inspect unknown}"
{:noreply, state}
end
@impl true
def init(%{store_id: store} = args) do
Logger.info("#{Colors.store_theme(self())} => Starting monitor for #{inspect(store, pretty: true)}")
store
|> subscribe
{:ok, args}
end
def start_link(args) do
GenServer.start_link(
__MODULE__,
args,
name: __MODULE__
)
end
def child_spec(args) do
%{
id: __MODULE__,
start: {__MODULE__, :start_link, [args]},
restart: :permanent,
shutdown: 5000,
type: :worker,
}
end
end