Packages
snakepit
0.12.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
High-performance pooler and session manager for external language integrations. Supports Python, Node.js, Ruby, and more with gRPC streaming, session management, and production-ready process cleanup.
Current section
Files
Jump to
Current section
Files
lib/snakepit/script_stop.ex
defmodule Snakepit.ScriptStop do
@moduledoc false
@type stop_mode :: :if_started | :always | :never
@stop_modes [:if_started, :always, :never]
@spec resolve_stop_mode(keyword()) :: stop_mode()
def resolve_stop_mode(opts) when is_list(opts) do
validate_stop_mode!(Keyword.get(opts, :stop_mode, :if_started))
end
@spec stop_snakepit?(stop_mode(), boolean()) :: boolean()
def stop_snakepit?(stop_mode, owned?) when is_boolean(owned?) do
case validate_stop_mode!(stop_mode) do
:always -> true
:never -> false
:if_started -> owned?
end
end
defp validate_stop_mode!(stop_mode) when stop_mode in @stop_modes, do: stop_mode
defp validate_stop_mode!(stop_mode) do
raise ArgumentError,
"invalid stop_mode #{inspect(stop_mode)}; expected one of #{inspect(@stop_modes)}"
end
end