今Imはgen_servergen_server:呼び出し - 1が第二世代サーバーMOD、である - -
で遊んメッセージ私は2つのモジュールを持っているを送信するためにどのように論理モジュール
とPIDにメッセージを送信したいですgen_serverを通じて:ここ
を呼び出すコードのスニップです:
012:ここ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};
A及びロジックMODコード:
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> C(cache_server)を取得しています。
{OK、cache_server}
3> C(論理)。
{OK、論理}
4> cache_server:開始([{TTL、15000}])。
{OK、< 0.73.0>}
5> cache_server:(テスト、根、15000)を挿入します。
{AUTH、テスト、根、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}
Iからデータを受信してい - {応答はPID {lookup_by_date、FromSec、ToSec}、_state!}。
けど「は、論理:lookup_by_date」からのデータを受信いけない機能
Imは少し立ち往生ので、あなたが私に正しい方向を示し、とにかくあります。 Thxを...あなたのコードで
ああ。ご回答有難うございます。変更され、完全に今働いています。本当に役に立ちました。もう一度 – Qbeck