private void writeErrorMessage(ChannelHandlerContext ctx, ByteBuf outputBuf, TransactionContext context, SoaHeader soaHeader, TSoaTransport outputSoaTransport, TSoaServiceProtocol outputProtocol, SoaException e) { if (outputProtocol != null) { try { if (outputBuf.writerIndex() > 0) outputBuf.writerIndex(Integer.BYTES); soaHeader.setRespCode(Optional.ofNullable(e.getCode())); soaHeader.setRespMessage(Optional.ofNullable(e.getMsg())); outputProtocol.writeMessageBegin(new TMessage(soaHeader.getServiceName() + ":" + soaHeader.getMethodName(), TMessageType.REPLY, context.getSeqid())); outputProtocol.writeMessageEnd(); outputSoaTransport.flush(); ctx.writeAndFlush(outputBuf); LOGGER.info("{} {} {} response header:{} body:{null}", soaHeader.getServiceName(), soaHeader.getVersionName(), soaHeader.getMethodName(), soaHeader.toString()); } catch (Throwable e1) { LOGGER.error(e1.getMessage(), e1); } } } }
try { soaHeader.setRespCode(Optional.of(e.getCode())); soaHeader.setRespMessage(Optional.of(e.getMsg())); protocol.writeMessageBegin(new TMessage(soaHeader.getServiceName() + ":" + soaHeader.getMethodName(), TMessageType.REPLY, context.getSeqid())); protocol.writeMessageEnd();
/** * 异步处理,当返回结果被complete时调用 * * @param context * @param soaProcessFunction * @param result * @param out * @param future */ private void AsyncAccept(Context context, SoaProcessFunction<I, Object, Object, ? extends TBeanSerializer<Object>, ? extends TBeanSerializer<Object>> soaProcessFunction, Object result, TProtocol out, CompletableFuture future) { try { TransactionContext.Factory.setCurrentInstance((TransactionContext) context); SoaHeader soaHeader = context.getHeader(); LOGGER.info("{} {} {} {} response header:{} body:{}", soaHeader.getServiceName(), soaHeader.getVersionName(), soaHeader.getMethodName(), context.getSeqid(), soaHeader.toString(), formatToString(soaProcessFunction.getResSerializer().toString(result))); soaHeader.setRespCode(Optional.of("0000")); soaHeader.setRespMessage(Optional.of("成功")); out.writeMessageBegin(new TMessage(soaHeader.getMethodName(), TMessageType.CALL, context.getSeqid())); soaProcessFunction.getResSerializer().write(result, out); out.writeMessageEnd(); /** * 通知外层handler处理结果 */ future.complete(context); } catch (TException e) { e.printStackTrace(); } }
/** * 异步处理,当返回结果被complete时调用 * * @param context * @param soaProcessFunction * @param result * @param out * @param future */ private void AsyncAccept(Context context, SoaProcessFunction<I, Object, Object, ? extends TBeanSerializer<Object>, ? extends TBeanSerializer<Object>> soaProcessFunction, Object result, TProtocol out, CompletableFuture future) { try { TransactionContext.Factory.setCurrentInstance((TransactionContext) context); SoaHeader soaHeader = context.getHeader(); LOGGER.info("{} {} {} {} response header:{} body:{}", soaHeader.getServiceName(), soaHeader.getVersionName(), soaHeader.getMethodName(), context.getSeqid(), soaHeader.toString(), formatToString(soaProcessFunction.getResSerializer().toString(result))); soaHeader.setRespCode(Optional.of("0000")); soaHeader.setRespMessage(Optional.of("成功")); out.writeMessageBegin(new TMessage(soaHeader.getMethodName(), TMessageType.CALL, context.getSeqid())); soaProcessFunction.getResSerializer().write(result, out); out.writeMessageEnd(); /** * 通知外层handler处理结果 */ future.complete(context); } catch (TException e) { e.printStackTrace(); } }
/** * 异步处理,当返回结果被complete时调用 * * @param context * @param soaProcessFunction * @param result * @param out * @param future */ private void AsyncAccept(Context context, SoaProcessFunction<I, Object, Object, ? extends TCommonBeanSerializer<Object>, ? extends TCommonBeanSerializer<Object>> soaProcessFunction, Object result, TProtocol out, CompletableFuture future) { try { TransactionContext.Factory.setCurrentInstance((TransactionContext) context); SoaHeader soaHeader = context.getHeader(); LOGGER.info("{} {} {} {} response header:{} body:{}", soaHeader.getServiceName(), soaHeader.getVersionName(), soaHeader.getMethodName(), context.getSeqid(), soaHeader.toString(), formatToString(soaProcessFunction.getResSerializer().toString(result))); soaHeader.setRespCode(Optional.of("0000")); soaHeader.setRespMessage(Optional.of("成功")); out.writeMessageBegin(new TMessage(soaHeader.getMethodName(), TMessageType.CALL, context.getSeqid())); soaProcessFunction.getResSerializer().write(result, out); out.writeMessageEnd(); /** * 通知外层handler处理结果 */ future.complete(context); } catch (TException e) { e.printStackTrace(); } }
context.getHeader().setRespMessage(Optional.of("成功")); out.writeMessageBegin(new TMessage(context.getHeader().getMethodName(), TMessageType.CALL, context.getSeqid())); soaProcessFunction.getResSerializer().write(result, out);
case 12: if (schemeField.type == TType.STRING) { bean.setRespMessage(Optional.of(iprot.readString())); } else { TProtocolUtil.skip(iprot, schemeField.type);
case 12: if (schemeField.type == TType.STRING) { bean.setRespMessage(Optional.of(iprot.readString())); } else { TProtocolUtil.skip(iprot, schemeField.type);
context.getHeader().setRespMessage(Optional.of("成功")); out.writeMessageBegin(new TMessage(context.getHeader().getMethodName(), TMessageType.CALL, context.getSeqid())); soaProcessFunction.getResSerializer().write(result, out);
context.getHeader().setRespMessage(Optional.of("成功")); out.writeMessageBegin(new TMessage(context.getHeader().getMethodName(), TMessageType.CALL, context.getSeqid())); soaProcessFunction.getResSerializer().write(result, out);