Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 1 addition & 12 deletions lib/futu/component/api.ex
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,13 @@ defmodule Futu.Component.Api do

@before_compile unquote(__MODULE__)

@mapper_module Application.compile_env(:futu, :mapper_module, nil)

@spec map_c2s(any()) :: list()
def map_c2s(opts \\ [])
def map_c2s(opts), do: opts

@spec map_s2c(any()) :: any()
def map_s2c(opts), do: opts

defp post_process_s2c(s2c, opts) do
mapped_s2c = map_s2c(s2c)

case @mapper_module do
nil -> mapped_s2c
_ -> apply(@mapper_module, :map, [mapped_s2c, opts])
end
end

defoverridable map_c2s: 1,
map_s2c: 1
end
Expand Down Expand Up @@ -81,7 +70,7 @@ defmodule Futu.Component.Api do

case response do
%{retType: 0, s2c: s2c} ->
{:ok, post_process_s2c(s2c, opts)}
{:ok, map_s2c(s2c)}

%{retType: _ret_type, retMsg: ret_msg, errCode: _err_code} ->
{:error, ret_msg}
Expand Down
19 changes: 0 additions & 19 deletions lib/futu/component/mapper/close_only.ex

This file was deleted.

5 changes: 0 additions & 5 deletions lib/futu/component/mapper/mapper.ex

This file was deleted.

7 changes: 0 additions & 7 deletions lib/futu/component/mapper/nothing.ex

This file was deleted.

26 changes: 26 additions & 0 deletions lib/futu/gen_server/serial_number.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
defmodule Futu.GenServer.SerialNumber do
@moduledoc """
Generate incremental numbers
"""
use GenServer

@spec start_link(list()) :: {:ok, pid()}
def start_link(_opts) do
GenServer.start_link(__MODULE__, nil)
end

@spec init(nil) :: {:ok, map()}
def init(nil) do
{:ok, %{sn: os_time()}}
end

def handle_call(:generate, _from, %{sn: sn} = state) do
{:reply, sn + 1, %{state | sn: sn + 1}}
end

def handle_call(:get_current_state, _from, %{sn: sn} = state) do
{:reply, sn, state}
end

defp os_time(), do: :os.system_time(:millisecond)
end
20 changes: 20 additions & 0 deletions test/futu/genserver/serial_number_test.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
defmodule Futu.GenServer.SerialNumberTest do
use ExUnit.Case
alias Futu.GenServer.SerialNumber

setup_all do
{:ok, pid} = SerialNumber.start_link([])
{:ok, pid: pid}
end

describe "generate" do
test "increments", %{pid: pid} do
sn_1 = GenServer.call(pid, :generate)
sn_2 = GenServer.call(pid, :generate)
sn_3 = GenServer.call(pid, :generate)

assert sn_3 > sn_2
assert sn_2 > sn_1
end
end
end