diff options
author | Egor Kislitsyn <egor@kislitsyn.com> | 2019-09-16 17:03:37 +0700 |
---|---|---|
committer | Ariadne Conill <ariadne@dereferenced.org> | 2019-10-04 16:01:31 +0000 |
commit | 7d5f20b50f299c96ccb12c7dd0fdae10c3f8d9c0 (patch) | |
tree | bb293c6a2089da2f8845d36c5f60e5a916c9aecc /lib/pleroma/web/streamer/streamer.ex | |
parent | a553ed542774891b6b0b7a57372a2c0300bbe2ba (diff) | |
download | pleroma-7d5f20b50f299c96ccb12c7dd0fdae10c3f8d9c0.tar.gz |
Revert "Merge branch 'revert-4fabf83a' into 'develop'"
This reverts commit fe7fd331263007e0fb2877ef7370a09a9704da36, reversing
changes made to 4fabf83ad01352442906d79187aeab4c777f4df8.
Diffstat (limited to 'lib/pleroma/web/streamer/streamer.ex')
-rw-r--r-- | lib/pleroma/web/streamer/streamer.ex | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/pleroma/web/streamer/streamer.ex b/lib/pleroma/web/streamer/streamer.ex new file mode 100644 index 000000000..8cf719277 --- /dev/null +++ b/lib/pleroma/web/streamer/streamer.ex @@ -0,0 +1,55 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/> +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.Streamer do + alias Pleroma.Web.Streamer.State + alias Pleroma.Web.Streamer.Worker + + @timeout 60_000 + @mix_env Mix.env() + + def add_socket(topic, socket) do + State.add_socket(topic, socket) + end + + def remove_socket(topic, socket) do + State.remove_socket(topic, socket) + end + + def get_sockets do + State.get_sockets() + end + + def stream(topics, items) do + if should_send?() do + Task.async(fn -> + :poolboy.transaction( + :streamer_worker, + &Worker.stream(&1, topics, items), + @timeout + ) + end) + end + end + + def supervisor, do: Pleroma.Web.Streamer.Supervisor + + defp should_send? do + handle_should_send(@mix_env) + end + + defp handle_should_send(:test) do + case Process.whereis(:streamer_worker) do + nil -> + false + + pid -> + Process.alive?(pid) + end + end + + defp handle_should_send(_) do + true + end +end |