class RpcResponseProcessor extends AbstractRemotingProcessor<RemotingCommand> {

    private static final Logger logger = BoltLoggerFactory.getLogger("RpcRemoting");

    /**
     * Default constructor.
     */
    public RpcResponseProcessor() {

    }

    /**
     * Constructor.
     */
    public RpcResponseProcessor(ExecutorService executor) {
        super(executor);
    }

    /**
     * @see com.alipay.remoting.AbstractRemotingProcessor#doProcess
     */
    @Override
    public void doProcess(RemotingContext ctx, RemotingCommand cmd) {<FILL_FUNCTION_BODY>}

}


        Connection conn = ctx.getChannelContext().channel().attr(Connection.CONNECTION).get();
        InvokeFuture future = conn.removeInvokeFuture(cmd.getId());
        ClassLoader oldClassLoader = null;
        try {
            if (future != null) {
                if (future.getAppClassLoader() != null) {
                    oldClassLoader = Thread.currentThread().getContextClassLoader();
                    Thread.currentThread().setContextClassLoader(future.getAppClassLoader());
                }
                future.putResponse(cmd);
                future.cancelTimeout();
                try {
                    future.executeInvokeCallback();
                } catch (Exception e) {
                    logger.error("Exception caught when executing invoke callback, id={}",
                        cmd.getId(), e);
                }
            } else {
                logger
                    .warn("Cannot find InvokeFuture, maybe already timeout, id={}, from={} ",
                        cmd.getId(),
                        RemotingUtil.parseRemoteAddress(ctx.getChannelContext().channel()));
            }
        } finally {
            if (null != oldClassLoader) {
                Thread.currentThread().setContextClassLoader(oldClassLoader);
            }
        }

    
<methods>public void <init>() ,public void <init>(com.alipay.remoting.CommandFactory) ,public void <init>(java.util.concurrent.ExecutorService) ,public void <init>(com.alipay.remoting.CommandFactory, java.util.concurrent.ExecutorService) ,public abstract void doProcess(com.alipay.remoting.RemotingContext, com.alipay.remoting.RemotingCommand) throws java.lang.Exception,public com.alipay.remoting.CommandFactory getCommandFactory() ,public java.util.concurrent.ExecutorService getExecutor() ,public void process(com.alipay.remoting.RemotingContext, com.alipay.remoting.RemotingCommand, java.util.concurrent.ExecutorService) throws java.lang.Exception,public void setCommandFactory(com.alipay.remoting.CommandFactory) ,public void setExecutor(java.util.concurrent.ExecutorService) <variables>private com.alipay.remoting.CommandFactory commandFactory,private java.util.concurrent.ExecutorService executor,private static final Logger logger