| | |
| | | * @param clz 内部帧响应实体类 如果不想自己解析 可带上 |
| | | * @return 返回的解码帧实体类 同时把内部帧解码之后也携带上 |
| | | */ |
| | | public <T extends BaseResponseInnerFrame<T>> WrapResponseCommonFrame<T> sendRRPC(String deviceName, IRequestFrame iRequestFrame, Class<T> clz) { |
| | | public <T extends BaseResponseInnerFrame<T>> WrapResponseCommonFrame<T> sendRRPC(String deviceName, IRequestFrame iRequestFrame, Class<T> clz){ |
| | | CommonFrame commonFrame = sendRRPC(deviceName, iRequestFrame); |
| | | if (commonFrame == null) { |
| | | return null; |
| | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | /** |
| | | * 调用自定义topic |
| | | * https://help.aliyun.com/document_detail/69584.htm?spm=a2c4g.11186623.0.0.25b33982bSQSom#reference-snk-mrz-wdb |
| | | * |
| | |
| | | request.setIdentifier("rrpc"); |
| | | request.setArgs(JSON.toJSONString(param)); |
| | | |
| | | |
| | | // 获得服务调用响应 |
| | | return getAcsResponse(request, 1); |
| | | } |
| | | |
| | | /** |
| | | * 获得服务调用响应 |
| | | * |
| | | * @param request |
| | | * @return |
| | | */ |
| | | private InvokeThingServiceResponse.Data getAcsResponse(InvokeThingServiceRequest request, int time) { |
| | | if (time <= 3) { |
| | | InvokeThingServiceResponse response = null; |
| | | try { |
| | | response = getClient().getAcsResponse(request); |
| | | if (response == null) { |
| | | log.error("调用rrpc失败,响应为空!"); |
| | | Thread.sleep(100); |
| | | return getAcsResponse(request, time + 1); |
| | | } |
| | | if (!response.getSuccess()) { |
| | | log.error("调用rrpc失败," + response.getErrorMessage()); |
| | | Thread.sleep(100); |
| | | return getAcsResponse(request, time + 1); |
| | | } else { |
| | | // 服务调用成功,仅代表发送服务指令的成功,不代表执行服务本身是否成功 |
| | | return response.getData(); |
| | | } |
| | | } catch (Exception e) { |
| | | throw new BusinessException(e.getMessage()); |
| | | } |
| | | } else { |
| | | InvokeThingServiceResponse response = null; |
| | | try { |
| | | response = getClient().getAcsResponse(request); |
| | | } catch (ClientException e) { |
| | | e.printStackTrace(); |
| | | throw new BusinessException("硬件请求失败,请检查硬件设备!"); |
| | | } |
| | | if (response == null) { |
| | | throw new BusinessException("调用rrpc失败,响应为空!"); |
| | | } |
| | | if (!response.getSuccess()) { |
| | | throw new BusinessException("调用rrpc失败," + response.getErrorMessage()); |
| | | } |
| | | // 服务调用成功,仅代表发送服务指令的成功,不代表执行服务本身是否成功 |
| | | if (response.getSuccess()) { |
| | | // 仅同步服务有result |
| | | return response.getData(); |
| | | } |
| | | return null; |
| | | } |
| | | } |