На связи @ontofractal. GenStage продюсеры теперь создают ивенты с следующей формой: %Golos.Event{data: ..., metadata: ...}` где данные соответствуют стракту нового блока или операции, а метаданные включают информацию о времени, блоке, источнике, блокчейне, была ли операция обработана и т.д.
Продюсер структурированных операций соответствует спецификации GenStage, что позволяет подключиться к пайплайну ивентов на любом этапе: блоки, операции или munged операции.
Репозитории и документация
Changelog
В этом релизе много обратно несовместимых изменений.
- форма ивентов изменена с tuple на map с ключами
data
иmetadata
- во всех ответах API ключи изменены на атомы вместо строк
- добавлен стракт %Golos.Block{}
- добавлен стракт %Golos.Event{}
- Golos.Stages.Ops.ProducerConsumer -> Golos.Stages.RawOps
- Golos.Stages.StructuredOps.ProducerConsumer -> Golos.Stages.MungedOps
- строки timestamp теперь парсятся в NaiveDateTime
- обновлен пример для новой формы ивентов
Пример 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
Дорожная карта
ExGolos находится в активной разработке.
- Улучшить документацию
- Добавить оставшиеся стракты
- Добавить возможность броадкаста транзакций
Больше об Elixir
Elixir -- функциональный язык программирования созданный на основе Erlang/OTP. Его основные преимущества: удобные примитивы параллелизации и одновременности(concurrency) вычислений, устойчивость к сбоям и относительно простое создание распределенных кластеров.
@elixir-golos Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за количество голосов
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
gidlark, litrbooh, t3ran13, ianboil, strecoza, sergiy, anela, tristamoff, genyakuc, orezaku, asuleymanov, rous, olgabobkovafoto, master-set, vika-teplo, aleksandra, alextrade, myhardmoney, bammbuss, rimash, generationg, ogion, invy11
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"