src/main/java/com/alipay/remoting/rpc/RpcRemoting.java
public RpcResponseFuture invokeWithFuture(final Connection conn, final Object request,
                                              final InvokeContext invokeContext,
                                              final int timeoutMillis) throws RemotingException {

        RemotingCommand requestCommand = toRemotingCommand(request, conn, invokeContext,
            timeoutMillis);

        preProcessInvokeContext(invokeContext, requestCommand, conn);
        InvokeFuture future = super.invokeWithFuture(conn, requestCommand, timeoutMillis);
        return new RpcResponseFuture(RemotingUtil.parseRemoteAddress(conn.getChannel()), future);
    }
public RpcResponseFuture invokeWithFuture(final Connection conn, final Object request,
                                              final InvokeContext invokeContext,
                                              final int timeoutMillis) throws RemotingException {

        RemotingCommand requestCommand = toRemotingCommand(request, conn, invokeContext,
            timeoutMillis);

        preProcessInvokeContext(invokeContext, requestCommand, conn);
        InvokeFuture future = super.invokeWithFuture(conn, requestCommand, timeoutMillis);
        return new RpcResponseFuture(RemotingUtil.parseRemoteAddress(conn.getChannel()), future);
    }
public RpcResponseFuture invokeWithFuture ( final Connection conn , final Object request , final InvokeContext invokeContext , final int timeoutMillis ) throws RemotingException { RemotingCommand requestCommand = toRemotingCommand ( request , conn , invokeContext , timeoutMillis ) ; preProcessInvokeContext ( invokeContext , requestCommand , conn ) ; InvokeFuture future = super . invokeWithFuture ( conn , requestCommand , timeoutMillis ) ; return new RpcResponseFuture ( RemotingUtil . parseRemoteAddress ( conn . getChannel ( ) ) , future ) ; }
Rpc invocation with future returned.<br>
Notice! DO NOT modify the request object concurrently when this method is called.

@param conn
@param request
@param invokeContext
@param timeoutMillis
@return
@throws RemotingException
Rpc invocation with future returned . <br > Notice! DO NOT modify the request object concurrently when this method is called .