elixir-golos
7 лет назадРелиз ExGolos v0.9: улучшения надежности и удобства работы с библиотекой
На связи @ontofractal. В этот релиз вошли улучшения и багфиксы за последние несколько месяцев. Из примечательных изменений: замена erlang вебсокет клиент на нативный для elixir websockex и парсинг ответов jsonrpc в нативные дататипы для elixir, например, NaiveDateTime для timestamp.
Репозитории и документация
Пример GenStage потребителя ивентов
defmodule Golos.Stage.MungedOps.ExampleConsumer do
use GenStage
alias Golos.MungedOps
require Logger
def start_link(args, options \\ []) do
GenStage.start_link(__MODULE__, args, options)
end
def init(state) do
Logger.info("Golos example consumer is initializing...")
{:consumer, state, subscribe_to: state[:subscribe_to]}
end
def handle_events(events, _from, state) do
for op <- events do
process_event(op)
end
{:noreply, [], state}
end
def process_event(%{data: %MungedOps.Reblog{} = op_data, metadata: op_metadata = %{block_height: h, timestamp: t}}) do
Logger.info """
Новый реблог:
#{inspect op_data} в блоке #{h}, время: #{t}
"""
end
def process_event(%{data: op_data, metadata: %{block_height: h, timestamp: t} = op_metadata}) do
Logger.info """
Новая операция:
#{inspect op_data} в блоке #{h}, время: #{t}
"""
end
end
Дорожная карта
- Улучшить документацию
- Добавить оставшиеся стракты
- Добавить возможность броадкаста транзакций
Больше об Elixir
Elixir -- функциональный язык программирования созданный на основе Erlang/OTP. Его основные преимущества: удобные примитивы параллелизации и одновременности(concurrency) вычислений, устойчивость к сбоям и относительно простое создание распределенных кластеров.