fixed heartbeat response parse
diff --git a/src/dubbo_heartbeat.erl b/src/dubbo_heartbeat.erl
index 97edbd2..e84deed 100644
--- a/src/dubbo_heartbeat.erl
+++ b/src/dubbo_heartbeat.erl
@@ -17,7 +17,7 @@
generate_request(undefined,NeedResponse)->
RequestId = dubbo_id_generator:gen_id(),
generate_request(RequestId,NeedResponse);
-generate_request(RequestId,_NeedResponse)->
- Req = #dubbo_request{is_event = true,is_twoway = true,mid = RequestId,data = undefined,mversion= <<"2.0.0">>},
+generate_request(RequestId,NeedResponse)->
+ Req = #dubbo_request{is_event = true,is_twoway = NeedResponse,mid = RequestId,data = undefined,mversion= <<"2.0.0">>},
{ok,Bin} = dubbo_codec:encode_request(Req),
{ok,Bin}.
\ No newline at end of file
diff --git a/src/dubbo_netty_client.erl b/src/dubbo_netty_client.erl
index e5dc72c..754c8c5 100644
--- a/src/dubbo_netty_client.erl
+++ b/src/dubbo_netty_client.erl
@@ -349,29 +349,28 @@
process_data(Data,State)->
- TmpTime = time_util:timestamp_ms(),
<<Header:16/binary,RestData/binary>> = Data,
case dubbo_codec:decode_header(Header) of
{ok,response,ResponseInfo}->
- %%心跳包的回应,是否会造成错误
- dubbo_traffic_control:decr_count(State#state.host_flag),
- case get_earse_request_info(ResponseInfo#dubbo_response.mid) of
- undefined->
- logger:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
- {SourcePid,Ref,_RequestState} ->
- {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
-
- logger:info("got one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
- case Res#dubbo_response.is_event of
- false ->
- %% todo rpccontent need merge response with request
- RpcContent=[],
- ResponseData = dubbo_type_transfer:response_to_native(Res),
- gen_server:cast(SourcePid,{response_process,Ref,RpcContent,ResponseData});
- _->
- ok
- end
- end,
+ process_response(ResponseInfo#dubbo_response.is_event,ResponseInfo,RestData,State),
+%% dubbo_traffic_control:decr_count(State#state.host_flag),
+%% case get_earse_request_info(ResponseInfo#dubbo_response.mid) of
+%% undefined->
+%% logger:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
+%% {SourcePid,Ref,_RequestState} ->
+%% {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
+%%
+%% logger:info("got one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
+%% case Res#dubbo_response.is_event of
+%% false ->
+%% %% todo rpccontent need merge response with request
+%% RpcContent=[],
+%% ResponseData = dubbo_type_transfer:response_to_native(Res),
+%% gen_server:cast(SourcePid,{response_process,Ref,RpcContent,ResponseData});
+%% _->
+%% ok
+%% end
+%% end,
{ok,State};
{ok,request,RequestInfo}->
{ok,Req} = dubbo_codec:decode_request(RequestInfo,RestData),
@@ -386,18 +385,26 @@
%% @doc process event
-spec process_response(IsEvent::boolean(),#dubbo_response{},#state{},term())->ok.
-process_response(false,Response,State,TmpTime)->
+process_response(false,ResponseInfo,RestData,State)->
dubbo_traffic_control:decr_count(State#state.host_flag),
- case get_earse_request_info(Response#dubbo_response.mid) of
+ case get_earse_request_info(ResponseInfo#dubbo_response.mid) of
undefined->
- logger:error("dubbo response can't find request data,response ~p",[Response]);
- {SourcePid,Ref,RequestState} ->
- RpcContent=[],
- gen_server:cast(SourcePid,{msg_back,Ref,Response,RpcContent,RequestState})
+ logger:error("dubbo response can't find request data,response ~p",[ResponseInfo]);
+ {SourcePid,Ref,_RequestState} ->
+ {ok,Res} = dubbo_codec:decode_response(ResponseInfo,RestData),
+ logger:info("got one response mid ~p, is_event ~p state ~p",[Res#dubbo_response.mid,Res#dubbo_response.is_event,Res#dubbo_response.state]),
+ case Res#dubbo_response.is_event of
+ false ->
+ %% todo rpccontent need merge response with request
+ RpcContent=[],
+ ResponseData = dubbo_type_transfer:response_to_native(Res),
+ gen_server:cast(SourcePid,{response_process,Ref,RpcContent,ResponseData});
+ _->
+ ok
+ end
end,
{ok,State};
-process_response(true,Response,State,TmpTime)->
-
+process_response(true,_ResponseInfo,_RestData,State)->
{ok,State}.
process_request(true,Request,State)->