Current section
Files
Jump to
Current section
Files
lib/dbus/db.ex
defmodule Dbus.Db do
require Logger
alias Dbus.Redis, as: R
def kill() do
Logger.info("Removing all topics and messages...")
R.q!(["SMEMBERS", "topics"]) |> Enum.map(&unregister(&1))
R.q(["DEL", "topics"])
Logger.debug("DONE, Removing all topics and messages.")
end
def register(topic) do
was_added = R.q!(["SADD", "topics", topic]) == "1"
if was_added do
Logger.info("Registered topic #{topic}.")
else
Logger.debug("Topic #{topic}, already registered.")
end
end
def unregister(topic) do
was_removed = R.q!(["SREM", "topics", topic]) == "1"
if was_removed do
R.q!(["DEL",
topic_id(topic),
total_id(topic),
num_processed_id(topic),
num_failed_id(topic),
recent_processed_id(topic),
recent_failed_id(topic),
last_total_id(topic),
last_size_id(topic),
tock_id(topic)])
Logger.info("Unregistered topic #{topic}, and removed all messages.")
else
Logger.debug("Topic #{topic} does not exist, nothing to unregister.")
end
end
def topics_id(), do: "topics"
def topic_id(topic), do: "topics.#{topic}"
def total_id(topic), do: "topics.#{topic}.num-total"
def num_processed_id(topic), do: "topics.#{topic}.num-processed"
def num_failed_id(topic), do: "topics.#{topic}.num-failed"
def recent_processed_id(topic), do: "topics.#{topic}.recent-processed"
def recent_failed_id(topic), do: "topics.#{topic}.recent-failed"
def last_total_id(topic), do: "topics.#{topic}.num-last-processed"
def last_size_id(topic), do: "topics.#{topic}.num-last-count"
def tock_id(topic), do: "topics.#{topic}.tock"
def to_i(""), do: 0
def to_i(:undefined), do: 0
def to_i(num) when is_integer(num), do: num
def to_i(num) when is_binary(num), do: num |> String.to_integer
end