Packages
tai
0.0.7
0.0.75
0.0.74
0.0.73
0.0.72
0.0.71
0.0.70
0.0.69
0.0.68
0.0.67
0.0.66
0.0.65
0.0.64
0.0.63
0.0.62
0.0.61
0.0.60
0.0.59
0.0.58
0.0.57
0.0.56
0.0.55
0.0.54
0.0.53
0.0.52
0.0.51
0.0.50
0.0.49
0.0.48
0.0.47
0.0.46
0.0.45
0.0.44
0.0.43
0.0.42
0.0.41
0.0.40
0.0.39
0.0.38
0.0.37
0.0.36
0.0.35
0.0.34
0.0.33
0.0.32
0.0.31
0.0.30
0.0.29
0.0.28
0.0.27
0.0.26
0.0.25
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
A composable, real time, market data and trade execution toolkit
Current section
Files
Jump to
Current section
Files
lib/tai/exchanges/order_book_feed_supervisor.ex
defmodule Tai.Exchanges.OrderBookFeedSupervisor do
@type adapter :: Tai.Exchanges.Adapter.t()
@type product :: Tai.Exchanges.Product.t()
use Supervisor
def start_link([adapter: adapter, trading_products: _] = state) do
Supervisor.start_link(__MODULE__, state, name: adapter.id |> to_name)
end
def init(
adapter: %Tai.Exchanges.Adapter{id: venue_id, adapter: adapter},
trading_products: trading_products
) do
order_book_specs =
trading_products
|> Enum.map(
&Supervisor.child_spec(
{Tai.Markets.OrderBook, feed_id: venue_id, symbol: &1.symbol},
id: "#{venue_id}_#{&1.symbol}"
)
)
symbols = Enum.map(trading_products, & &1.symbol)
feed_spec =
Supervisor.child_spec(
{adapter.order_book_feed, feed_id: venue_id, symbols: symbols},
id: Tai.Exchanges.OrderBookFeed.to_name(venue_id)
)
children = order_book_specs ++ [feed_spec]
Supervisor.init(children, strategy: :one_for_all)
end
def to_name(venue_id), do: :"#{__MODULE__}_#{venue_id}"
end