Current section
Files
Jump to
Current section
Files
lib/perf_agent/recorder.ex
defmodule PerfAgent.Recorder do
@moduledoc false
use GenServer
require Logger
alias PerfAgent.TransactionQueue
## Client API
@doc """
Starts the recorder for requests.
"""
def start_link(queue) do
GenServer.start_link(__MODULE__, queue, [])
end
@doc """
Records the transaction to the pending requests queue.
"""
def record_transaction(server, transaction) do
GenServer.cast(server, {:record, transaction})
end
## Server Callbacks
def init(queue) do
Logger.info "Recorder has started for Perf Agent"
{:ok, %{queue: queue}}
end
def handle_cast({:record, transaction}, %{queue: queue}) do
Logger.debug "Recording transaction for request #{transaction.request_url}"
TransactionQueue.enqueue(queue, transaction)
{:noreply, %{queue: queue}}
end
end