Remove vapidPublicKey from Nodeinfo
[akkoma] / lib / pleroma / web / streamer / streamer.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.Streamer do
6 alias Pleroma.Web.Streamer.State
7 alias Pleroma.Web.Streamer.Worker
8
9 @timeout 60_000
10 @mix_env Mix.env()
11
12 def add_socket(topic, socket) do
13 State.add_socket(topic, socket)
14 end
15
16 def remove_socket(topic, socket) do
17 State.remove_socket(topic, socket)
18 end
19
20 def get_sockets do
21 State.get_sockets()
22 end
23
24 def stream(topics, items) do
25 if should_send?() do
26 Task.async(fn ->
27 :poolboy.transaction(
28 :streamer_worker,
29 &Worker.stream(&1, topics, items),
30 @timeout
31 )
32 end)
33 end
34 end
35
36 def supervisor, do: Pleroma.Web.Streamer.Supervisor
37
38 defp should_send? do
39 handle_should_send(@mix_env)
40 end
41
42 defp handle_should_send(:test) do
43 case Process.whereis(:streamer_worker) do
44 nil ->
45 false
46
47 pid ->
48 Process.alive?(pid)
49 end
50 end
51
52 defp handle_should_send(:benchmark), do: false
53
54 defp handle_should_send(_), do: true
55 end