gen server - Erlang gen_server implementation -


in code below, why module prime_server not loading?

-module(prime_server).  -behaviour(gen_server).  -export([new_prime/1, start_link/0]).  %% gen_server callbacks -export([init/1, handle_call/3, handle_cast/2, handle_info/2,          terminate/2, code_change/3]).  start_link() ->     gen_server:start_link({local, ?module}, ?module, [], []).  new_prime(n) ->     %% 20000 timeout (ms)     gen_server:call(?module, {prime, n}, 20000).  init([]) ->     %% note must set trap_exit = true if     %% want terminate/2 called when application     %% stopped      process_flag(trap_exit, true),      io:format("~p starting~n" ,[?module]),     {ok, 0}.  handle_call({prime, k}, _from, n) ->     {reply, make_new_prime(k), n+1}.   handle_cast(_msg, n) -> {noreply, n}.  handle_info(_info, n) -> {noreply, n}.  terminate(_reason, _n) ->     io:format("~p stopping~n" ,[?module]),     ok.  code_change(_oldvsn, n, _extra) -> {ok, n}.  make_new_prime(k) ->     if         k > 100 ->             alarm_handler:set_alarm(toohot),             n = lib_primes:make_prime(k),             alarm_handler:clear_alarm(toohot),             n;         true ->             lib_primes:make_prime(k)     end. 

output:

$ erl -boot start_sasl  1>c(prime_server). {ok,prime_server} 2>c(my_alarm_handler). my_alarm_handler.erl:2: warning: undefined callback function code_change/3 (behaviour 'gen_event') my_alarm_handler.erl:19: warning: variable 'reply' unused {ok,my_alarm_handler} 3> {ok, pid} = prime_server:start_link(). prime_server starting {ok, <0.73.0>} 4> prime_server:new_prime(6). prime_server stopping =error report==== 24-mar-2014::10:59:39 === ** generic server prime_server terminating ** last message in {prime,6} ** when server state == 0 ** reason termination == ** {'module not loaded',        [{lib_primes,make_prime,[6],[]},         {prime_server,handle_call,3,[{file,"prime_server.erl"},{line,21}]},         {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,585}]},         {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}  =crash report==== 24-mar-2014::10:59:39 ===   crasher:     initial call: prime_server:init/1     pid: <0.73.0>     registered_name: prime_server     exception exit: {undef,                         [{lib_primes,make_prime,[6],[]},                          {prime_server,handle_call,3,                              [{file,"prime_server.erl"},{line,21}]},                          {gen_server,handle_msg,5,                              [{file,"gen_server.erl"},{line,585}]},                          {proc_lib,init_p_do_apply,3,                              [{file,"proc_lib.erl"},{line,239}]}]}       in function  gen_server:terminate/6 (gen_server.erl, line 744)     ancestors: [<0.71.0>]     messages: []     links: [<0.71.0>]     dictionary: []     trap_exit: true     status: running     heap_size: 610     stack_size: 27     reductions: 181   neighbours:     neighbour: [{pid,<0.71.0>},                   {registered_name,[]},                   {initial_call,{erlang,apply,2}},                   {current_function,{gen,do_call,4}},                   {ancestors,[]},                   {messages,[]},                   {links,[<0.27.0>,<0.73.0>]},                   {dictionary,[]},                   {trap_exit,false},                   {status,waiting},                   {heap_size,610},                   {stack_size,36},                   {reductions,1303}] ** exception exit: undef      in function  lib_primes:make_prime/1         called lib_primes:make_prime(6)      in call prime_server:handle_call/3 (prime_server.erl, line 21)      in call gen_server:handle_msg/5 (gen_server.erl, line 585)      in call proc_lib:init_p_do_apply/3 (proc_lib.erl, line 239) 9> gen_server:call(prime_server, 6). ** exception exit: {noproc,{gen_server,call,[prime_server,6]}}      in function  gen_server:call/2 (gen_server.erl, line 180) 10> gen_server:call(prime_server, new_prime,  6). ** exception exit: {noproc,{gen_server,call,[prime_server,new_prime,6]}}      in function  gen_server:call/3 (gen_server.erl, line 188) 11> gen_server:call(prime_server, new_prime(5), []). ** exception error: undefined shell command new_prime/1 12> gen_server:call(prime_server, {prime, 4},  []). ** exception exit: {{function_clause,                         [{gen,call,                              [prime_server,'$gen_call',{prime,4},[]],                              [{file,"gen.erl"},{line,147}]},                          {gen_server,call,3,                              [{file,"gen_server.erl"},{line,184}]},                          {erl_eval,do_apply,6,                              [{file,"erl_eval.erl"},{line,573}]},                          {shell,exprs,7,[{file,"shell.erl"},{line,674}]},                          {shell,eval_exprs,7,[{file,"shell.erl"},{line,629}]},                          {shell,eval_loop,3,[{file,"shell.erl"},{line,614}]}]},                     {gen_server,call,[prime_server,{prime,4},[]]}} 

{'module not loaded',

[{lib_primes,make_prime,[6],[]},  {prime_server,handle_call,3,[{file,"prime_server.erl"},{line,21}]},  {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,585}]},  {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]} 

from log, use module lib_primes, have file lib_primes.erl?

i think should compiule , load module lib_primes first.


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -