Skip to content

Instantly share code, notes, and snippets.

@jhowarth
Last active September 14, 2023 05:42
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save jhowarth/40df1170d58c046da3315405fec965bf to your computer and use it in GitHub Desktop.
defmodule GCM.PushCollector do
use GenStage
# Client
def push(pid, push_requests) do
GenServer.cast(pid, {:push, push_requests})
end
# Server
def init(_args) do
# Run as producer and specify the max amount
# of push requests to buffer.
{:producer, :ok, buffer_size: @max_buffer_size}
end
def handle_cast({:push, push_requests}, state) do
# Dispatch the push_requests as events.
# These will be buffered if there are no consumers ready.
{:noreply, push_requests, state}
end
def handle_demand(_demand, state) do
# Do nothing. Events will be dispatched as-is.
{:noreply, [], state}
end
end
@9mm
Copy link

9mm commented Nov 12, 2018

How did you handle CONNECTION_DRAINING?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment