[erlang-questions] wierd "function not used" problem - code included

deepblue_other cktgatb@REDACTED
Sun Oct 5 20:40:18 CEST 2008


there was a tiny error in the last one, and I put the correct arity in
spawn_link()
this should compile
thanks

-module(tcp_manager).
%API--------------------------------------------
-export([start/1]).
%-----------------------------------------------
start(Port) ->
    {ok, ListeningSocket} =
        gen_tcp:listen( Port, [ binary, %receive data in binary form
                                      {packet   , 0},
                                      {reuseaddr, true},
                                      {active   , once} ] ),
    accept_connection(ListeningSocket).
%-----------------------------------------------  
accept_connection(ListeningSocket) ->
   
    io:format("waiting to accept~n"),
    {ok, Socket} = gen_tcp:accept(ListeningSocket),
    io:format("Socket is:~p~n", [Socket]),

    %-----------------------------------------------
    Listen_for_errors =
        fun() ->
            io:format("listening started~n"),
            receive
          {'EXIT', Pid, Why} ->
                  io:format("~p exited because:~p", [Pid,Why]);
          Other                 ->
                  io:format("Other:~p~n", [Other])
            end
        end,
        Listen_for_errors(),
        %-----------------------------------------------
   
    Handler_process = spawn_link(?MODULE, data_process, [Socket, []]),
    io:format("handlers process ID:~p", [Handler_process]).
%-----------------------------------------------
data_process( Socket, DataSoFar) ->
    io:format("responder_loop() entered~n"),
   
    receive
        {tcp, Socket, Data}  ->
             io:format("works - Data:~p~n", [Data]),
             inet:setopts( Socket, [{active,once}] ),
             data_process( Socket,
                                [Data | DataSoFar] );

        {tcp_closed, Socket} ->
            io:format("*client socket closed~n");
    Other                ->
            io:format("undefined message came in:~p", [Other])
    end.
%----------------------------------------------- 

deepblue_other wrote:
> 
> here you go, this should compile
> sorry about that
> thanks
> 
> -module(tcp_manager).
> %API--------------------------------------------
> -export([start/1]).
> %-----------------------------------------------
> start(Port) ->
>     {ok, ListeningSocket} = 
>         gen_tcp:listen( Port, [ binary, %receive data in binary form
>                                       {packet   , 0},
>                                       {reuseaddr, true},
>                                       {active   , once} ] ),
>     accept_connection(ListeningSocket).
> %-----------------------------------------------  
> accept_connection(ListeningSocket) ->
>     
>     io:format("waiting to accept~n"),
>     {ok, Socket} = gen_tcp:accept(ListeningSocket),
>     io:format("Socket is:~p~n", [Socket]),
> 
>     %-----------------------------------------------
>     Listen_for_errors = 
>         fun() ->
>             io:format("listening started~n"),
>             receive
>     	       {'EXIT', Pid, Why} -> 
>                   io:format("~p exited because:~p", [Pid,Why]);
>     	       Other                 ->
>                   io:format("Other:~p~n", [Other])
>             end
>         end,
> 	Listen_for_errors(),
> 	%-----------------------------------------------
>     
>     Handler_process = spawn_link(?MODULE, data_process, [Socket]), %,[]]),
>     io:format("handlers process ID:~p", [Handler_process]).
> %-----------------------------------------------
> data_process( Socket, DataSoFar) ->
>     io:format("responder_loop() entered~n"),
>     
>     receive
>         {tcp, Socket, Data}  ->
> 	     io:format("works - Data:~p~n", [Data]),
>              inet:setopts( Socket, [{active,once}] ),
>              data_process( Socket, 
>                                 [Data | DataSoFar] );
> 
>         {tcp_closed, Socket} ->
>             io:format("*client socket closed~n");
>     	Other                ->
> 	    io:format("undefined message came in:~p", [Other])
>     end.
> %----------------------------------------------- 
> 
> deepblue_other wrote:
>> 
>> hmmm
>> sorry, just a moment
>> 
>> deepblue_other wrote:
>>> 
>>> Hello, its me again...
>>> so I've been having this problem for days, with the bellow code. Most of
>>> it is straight out of the "Programming Erlang" book from Joe
>>> Armstrong... however when Im compiling it its telling me that the
>>> function data_process/1 is not being used, gives me a warning, but then
>>> still compiles. however when Im sending data from a client side via TCP
>>> ofcourse it exits on me because there's nothing to process the
>>> message... 
>>> 
>>> I HAVE NO IDEA WHAT'S WRONG WITH IT. 
>>> I've read up on all the spawn_link() definitions and as far as I can
>>> tell Im using it correctly... the PiD that spawn_link() returns is being
>>> returned so it executes successfully. 
>>> please help out, its stalling my project progress. 
>>> thanks
>>> 
>>> 
>>> -module(tcp_manager).
>>> %API--------------------------------------------
>>> -export([start/1]).
>>> %-----------------------------------------------
>>> start(Port) ->
>>>     {ok, ListeningSocket} = 
>>>         gen_tcp:listen( Port, [ binary, %receive data in binary form
>>>                                       {packet   , 0},
>>>                                       {reuseaddr, true},
>>>                                       %hybrid - active for only one
>>> message
>>>                                       %it auto-receives one message
>>> after which it blocks
>>>                                       %has to be set to active-once
>>> again to receive the next message
>>>                                       {active   , once} ] ),
>>>     accept_connection(ListeningSocket).
>>> %-----------------------------------------------  
>>> accept_connection(ListeningSocket) ->
>>>     
>>>     io:format("waiting to accept~n"),
>>>     {ok, Socket} = gen_tcp:accept(ListeningSocket),
>>>     io:format("Socket is:~p~n", [Socket]),
>>> 
>>>     %-----------------------------------------------
>>>     Listen_for_errors = 
>>>         fun() ->
>>>             io:format("listening started~n"),
>>>             receive
>>>     	    {'EXIT', Pid, Why} -> 
>>>                io:format("~p exited because:~p", [Pid,Why]);
>>>     	    Other                 ->
>>>                io:format("Other:~p~n", [Other])
>>>             end
>>>         end,
>>> 	Listen_for_errors(),
>>> 	%-----------------------------------------------
>>>     
>>>     Handler_process = spawn_link(?MODULE, data_process, [Socket]),
>>> %,[]]),
>>>     io:format("handlers process ID:~p", [Handler_process]).
>>> 
>>>     accept_connection(ListeningSocket).
>>> %-----------------------------------------------
>>> data_process( Socket, DataSoFar) ->
>>>     io:format("responder_loop() entered~n"),
>>>     
>>>     receive
>>>         {tcp, Socket, Data}  ->
>>>             %Source_ip = inet:peername(Socket),
>>>             %io:format("*~p - data coming in:~p~n",[Source_ip,Data]),
>>> 	     io:format("works - Data:~p~n", [Data]),
>>>             %has to be done, since its an active-once socket
>>>             inet:setopts( Socket, [{active,once}] ),
>>>             data_process( Socket, 
>>>                                 %append the new binary fragment to what
>>> has been received so far
>>>                                 [Data | DataSoFar] );
>>> 
>>>         {tcp_closed, Socket} ->
>>>             io:format("*client socket closed~n");
>>>             %reverse because data has been appended to the head of the
>>> list as it was coming in
>>>             list_to_binary(lists:reverse(SoFar));
>>>     	Other                ->
>>> 	    io:format("undefined message came in:~p", [Other])
>>>     end.
>>> %-----------------------------------------------   
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://www.nabble.com/wierd-%22function-not-used%22-problem---code-included-tp19826465p19827720.html
Sent from the Erlang Questions mailing list archive at Nabble.com.




More information about the erlang-questions mailing list