aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/streamer/streamer.ex
diff options
context:
space:
mode:
authorEgor Kislitsyn <egor@kislitsyn.com>2019-09-16 17:03:37 +0700
committerAriadne Conill <ariadne@dereferenced.org>2019-10-04 16:01:31 +0000
commit7d5f20b50f299c96ccb12c7dd0fdae10c3f8d9c0 (patch)
treebb293c6a2089da2f8845d36c5f60e5a916c9aecc /lib/pleroma/web/streamer/streamer.ex
parenta553ed542774891b6b0b7a57372a2c0300bbe2ba (diff)
downloadpleroma-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.ex55
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