Im jetzt mit dem gen_server spielengen_server: call - wie Nachricht senden
Ich habe zwei Module - ist Gen Server mod, zweite - Logikmodul
und möchte die Nachricht an die PID senden durch die gen_server: call
hier die Schnipsel von Code ist:
lookup_by_date(FromTime, ToTime) ->
gen_server:call({global, ?MODULE}, {lookup_by_date,FromTime,ToTime}).
hier ist die 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};
aand die Logik mod Code:
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.
aber ich erhalte den Fehler (eigentlich kein Fehler)
2> (cache_server).
{ok, cache_server}
3> C (Logik).
{ok, Logik}
4> cache_server: start ([{ttl, 15000}]).
{ok, < 0.73.0>}
5> cache_server: insert (Test, Wurzel, 15000).
{auth, test, Wurzel, 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}
Ich empfange Daten aus - {Antwort, Pid {lookup_by_date, FromSec, Tosec}, _STATE!};
aber die Daten nicht empfangen, die von der „Logik: lookup_by_date“ -Funktion
Gibt es irgendwie, das Sie mir in die richtige Richtung zeigen, weil Im ein wenig stecken. Thx ...
ahh. Danke für deine Antwort. geändert und es funktioniert jetzt perfekt. Wirklich hilfreich. Danke nochmal – Qbeck