Packages

Resamplex is a supervised image resizer that is based on evadne/supervised-scaler and depends on libvips. NOTE: Absolutely NO use of ImageMagick or GraphicsMagick!

Current section

Files

Jump to
resamplex lib resamplex_pool.ex
Raw

lib/resamplex_pool.ex

defmodule Resamplex.Pool do
use Supervisor
def start_link do
Supervisor.start_link(__MODULE__, [])
end
def init([]) do
supervise([
:poolboy.child_spec(:resamplex_pool, pool_config())
], strategy: :one_for_one, name: __MODULE__)
end
def request(fromPath, toWidth, toHeight) do
:poolboy.transaction(:resamplex_pool, fn (worker) ->
try do
GenServer.call(worker, {:resample, fromPath, toWidth, toHeight}, 100000) # fixme: timeout should be configurable and exposed
catch :exit, reason ->
Process.exit(worker, :kill)
case reason do
{:timeout, _} -> {:error, :timeout}
_ -> {:error, :unknown}
end
end
end)
end
defp pool_config() do
[
name: {:local, :resamplex_pool},
worker_module: Resamplex.Worker,
size: 1,
max_overflow: 4
]
end
end