defmodule PhaseDB.Server.Cowboy do require Logger @moduledoc """ Implements the Cowboy interface enough to get an http handler running. """ @default_port 63157 @default_acceptors 100 def start_link do port = Keyword.get config, :port acceptors = Keyword.get config, :acceptors config = Keyword.drop config, ~w| acceptors |a Logger.info "Starting PhaseDB Server on port #{port} (http)." :cowboy.start_http(:http, acceptors, config, [env: [dispatch: dispatch]]) end def dispatch do :cowboy_router.compile([ { :_, [ { :_, PhaseDB.Server.Cowboy.HTTPHandler, nil } ] } ]) end def config do [ {:port, Application.get_env(:phasedb_server, :listen_port, @default_port)}, {:acceptors, Application.get_env(:phasedb_server, :listen_port, @default_acceptors)} ] end end