Current section
Files
Jump to
Current section
Files
lib/event_relay.ex
defmodule EventRelay do
@moduledoc """
Documentation for `EventRelay`.
"""
require Logger
alias ERWeb.Grpc.Eventrelay.Events.Stub
alias EventRelay.Context
alias EventRelay.Event
def channel(opts) do
EventRelay.Channel.new(opts)
end
def call(func, context, topic, args) do
apply(__MODULE__, func, [context, topic, args])
end
def publish_events(%Context{channel: channel} = _context, topic, events) do
events =
Enum.map(events, fn event ->
event = Event.encode_data(event)
struct(ERWeb.Grpc.Eventrelay.NewEvent, event)
end)
request = %ERWeb.Grpc.Eventrelay.PublishEventsRequest{
topic: topic,
durable: true,
events: events
}
Client.publish_events(channel, request)
end
def pull_queued_events(channel, subscription_id, batch_size) do
request = %ERWeb.Grpc.Eventrelay.PullQueuedEventsRequest{
subscription_id: subscription_id,
batch_size: batch_size
}
Stub.pull_queued_events(channel, request)
end
end