2012-03-26 6 views
0

Ich versuche, zlib zum Komprimieren von Daten zu verwenden, die an einen Client gesendet werden. Normalerweise sende ich einfach Blobs von JSON mit send() an den Client. Hier ist die Funktion, die die Arbeit Griff:Erlang: Warum bringt Zlib hier einen leeren Körper zurück?

handle_tcp({data, RawData}, #s1{socket=Socket}=State) -> 
    case decode_and_dispatch(RawData, State#s1.state, Socket) of 
    {ok, NewState, Body} -> 
     lager:debug("Sending to client decompressed ~p",[Body]), 
     send(Socket, Body), 
     {noreply, State#s1{state=NewState}}; 
    {error, _NewState, Msg} -> 
     lager:info("calling client_err_msg with ~p~n",[Msg]), 
     send(Socket, client_err_msg(Msg)), 
     {noreply, State}; 
    Else -> 
     lager:error("Unexpected error: ~p", [Else]), 
     send(Socket, client_err_msg(<<"server rejected the message">>)), 
     {noreply, State} 
    end; 

Meine Änderungen sind subtil und sind im ersten Teil der Klausel, um Körper zu komprimieren, bevor es zurück an den Client gesendet, leider ist dies eine leere Liste zurück. Kann irgendwer fangen, was ich hier falsch mache? Ich sehe keine Prozessabstürze oder irgendetwas in Fehlerprotokollen. Nur eine leere Liste wird an den Client übergeben.

Antwort

Verwandte Themen