Skip to content

Instantly share code, notes, and snippets.

@adrianparvino
Last active June 11, 2019 11:52
Show Gist options
  • Save adrianparvino/d26f4fa3f8d45736e816397d9c8936e7 to your computer and use it in GitHub Desktop.
Save adrianparvino/d26f4fa3f8d45736e816397d9c8936e7 to your computer and use it in GitHub Desktop.
** (exit) exited in: GenServer.call({TermuxSmsCli.Fetcher, :"[email protected]"}, :threads, 5000)
** (EXIT) an exception was raised:
** (FunctionClauseError) no function clause matching in TermuxSmsCli.Fetcher.handle_call/3
(termux_sms_cli) lib/termux_sms_cli/fetcher.ex:13: TermuxSmsCli.Fetcher.handle_call(:threads, {#PID<0.173.0>, #Reference<0.507083762.647495681.6201
1>}, nil)
(stdlib) gen_server.erl:661: :gen_server.try_handle_call/4
(stdlib) gen_server.erl:690: :gen_server.handle_msg/6
(stdlib) proc_lib.erl:249: :proc_lib.init_p_do_apply/3
(elixir) lib/gen_server.ex:989: GenServer.call/3
defmodule TermuxSmsCli.Fetcher do
use GenServer
use Bitwise
def start_link(opts) do
GenServer.start_link(__MODULE__, :ok, [name: TermuxSmsCli.Fetcher] ++ opts)
end
def init(:ok) do
{:ok, nil}
end
def handle_call(:fetch, _From, nil) do
{reply, 0} = System.cmd("termux-sms-list", ["-l", "#{1 <<< 30}"])
{:reply, reply |> Jason.decode!, nil}
end
def fetch() do
GenServer.call(TermuxSmsCli.Fetcher, :fetch)
end
def fetch(node) do
GenServer.call({TermuxSmsCli.Fetcher, node}, :fetch)
end
end
defmodule TermuxSmsCli.Thread do
use GenServer
use Bitwise
def start_link(opts) do
GenServer.start_link(__MODULE__, :ok, opts)
end
def init(:ok) do
{:ok, nil}
end
def handle_call(:threads, _From, nil) do
messages = TermuxSmsCli.Fetcher.fetch()
{:reply, messages |> Enum.reduce(MapSet.new(), fn %{"threadid" => tid}, set -> set |> MapSet.put(tid) end), nil}
end
def threads() do
GenServer.call(TermuxSmsCli.Thread, :threads)
end
def threads(node) do
GenServer.call({TermuxSmsCli.Fetcher, node}, :threads)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment