anchor.diff:  handle_call(_Req, _From, State) ->
       {reply, error, State}.
   
  +handle_cast({subscribe, TopicTable}, State = #client_state{proto_state = ProtoState}) ->
  +    {ok, ProtoState1} = emqttd_protocol:handle({subscribe, TopicTable}, ProtoState),
  +    {noreply, State#client_state{proto_state = ProtoState1}, hibernate};
  +
   handle_cast({received, Packet}, State = #client_state{proto_state = ProtoState}) ->
       case emqttd_protocol:received(Packet, ProtoState) of
       {ok, ProtoState1} ->
  
positive.code: 
  handle_info({redeliver, {?PUBREL, PacketId}}, State = #client_state{proto_state = ProtoState}) ->
      {ok, ProtoState1} = emqttd_protocol:redeliver({?PUBREL, PacketId}, ProtoState),
      {noreply, State#client_state{proto_state = ProtoState1}};
  
  handle_info({subscribe, TopicTable}, State = #client_state{proto_state = ProtoState}) ->
      {ok, ProtoState1} = emqttd_protocol:handle({subscribe, TopicTable}, ProtoState),
      {noreply, State#client_state{proto_state = ProtoState1}};
  
  handle_info({stop, duplicate_id, _NewPid}, State = #client_state{proto_state = ProtoState}) ->
  
negative.code: -include("emqttd_protocol.hrl").
  
  %% API Exports
  -export([start_link/1, ws_loop/3, subscribe/2]).
  
  -behaviour(gen_server).
  
  