Packages
upstream
2.1.0
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.7
2.0.6
2.0.5
2.0.4
2.0.3
2.0.2
2.0.0
1.8.2
1.8.1
1.7.2
1.7.1
1.7.0
1.6.14
1.6.13
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.12
1.5.11
1.5.11-dev-3
1.5.11-dev-2
1.5.11-dev-1
1.5.11-dev
1.5.10
1.5.9
1.5.8
1.5.7
1.5.6
1.5.5
1.5.2
1.5.1
1.5.0
1.4.12
1.4.9
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.7
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.3
1.2.1
Upstream is for integrating into projects that need to do large file uploads to B2 service. It integrates tightly with Backblaze B2 for now, with plans to support Amazon S3.
Current section
Files
Jump to
Current section
Files
lib/upstream/uploader.ex
defmodule Upstream.Uploader do
@moduledoc """
Manages Supervisors for Uploaders
"""
use DynamicSupervisor
@spec start_link(any()) :: :ignore | {:error, any()} | {:ok, pid()}
def start_link([]) do
DynamicSupervisor.start_link(__MODULE__, [], name: __MODULE__)
end
@impl true
@spec init(any()) ::
{:ok,
%{
extra_arguments: [any()],
intensity: non_neg_integer(),
max_children: :infinity | non_neg_integer(),
period: pos_integer(),
strategy: :one_for_one
}}
def init(_) do
DynamicSupervisor.init(strategy: :one_for_one)
end
@spec start_worker(atom() | binary(), any()) :: :ignore | {:error, any()} | {:ok, pid()} | {:ok, pid(), any()}
def start_worker(worker_module, job) do
module = Module.concat(Upstream.Worker, worker_module)
child_spec = {module, job}
case DynamicSupervisor.start_child(__MODULE__, child_spec) do
{:ok, pid} -> {:ok, pid, module}
{:error, reason} -> {:error, reason}
:ignore -> :ignore
end
end
end