Теперь Im играя с gen_servergen_server: вызов - как отправить сообщение
У меня есть два модуля - один Gen сервер моды, второй - логический модуль
и хотел бы отправить сообщение PID через gen_server: вызов
вот надрез кода:
lookup_by_date(FromTime, ToTime) ->
gen_server:call({global, ?MODULE}, {lookup_by_date,FromTime,ToTime}).
вот handle_call FUNC:
handle_call({lookup_by_date, FromTime, ToTime}, _From, _State) ->
FromSec = calendar:datetime_to_gregorian_seconds(FromTime),
ToSec = calendar:datetime_to_gregorian_seconds(ToTime),
Pid = spawn(fun()-> logic:handler() end),
{reply, Pid !{lookup_by_date, FromSec, ToSec}, _State};
а и логика мод код:
lookup_by_date(FromTime, ToTime) -> lookup_by_date(FromTime, ToTime, ets:first(auth), []).
lookup_by_date(_FromTime, _ToTime, '$end_of_table', Acc) -> {reply, Acc, ok};
lookup_by_date(FromTime, ToTime, Key, Acc) ->
case ets:lookup(auth, Key) of
[{Login, Pass, TTL, Unix, Unix2}] ->
F = calendar:datetime_to_gregorian_seconds(Unix2),
T = calendar:datetime_to_gregorian_seconds(Unix2),
if
F >= FromTime, T =< ToTime -> NewAcc = [{Login, Pass, TTL, Unix, Unix2}|Acc],
N = ets:next(auth, Key),
lookup_by_date(FromTime, ToTime, N, NewAcc);
true -> N = ets:next(auth, Key),
lookup_by_date(FromTime, ToTime, N, Acc)
end
end.
handler() ->
receive
{lookup_by_date, FromTime, ToTime}->
lookup_by_date(FromTime, ToTime),
handler();
Other->
io:format("Error message for ~p~n" ,[Other]),
handler()
end.
, но я получаю сообщение об ошибке (на самом деле не ошибка)
2> с (cache_server).
{ок, cache_server}
3> с (логика).
{ОК, логика}
4> cache_server: начало ([{ТТЛ, 15000}]).
{ок, < 0.73.0>}
5> cache_server: вставка (тест, корень, 15000).
{аутентификации, тест, корень, 15000,1484309726435, {{2017,1,13}, {14,15,11}}}
6> cache_server: lookup_by_date ({{2017,1, 13}, {14,15,11}}, {{2017,1,13}, {14,15,11}}).
{lookup_by_date, 63651536111,63651536111}
Я получаю данные из - {ответа, Pid {lookup_by_date, FromSec, ToSec}, _State!};
но не получает данные от «логики: lookup_by_date» функций
Есть в любом случае вы показать мне правильное направление, потому что я застрял немного. Thx ...
ahh. спасибо за Ваш ответ. и теперь он отлично работает. Очень полезно. THX снова – Qbeck