public synchronized boolean sendReplyForOneResult(DistributionManager dm, PartitionedRegion pr,
      long startTime, Object oneResult, boolean lastResult, boolean sendResultsInOrder)
      throws CacheException, ForceReattemptException, InterruptedException {
    if (replyLastMsg) {
      return false;
    }
    if (Thread.interrupted()) {
      throw new InterruptedException();
    }
    int msgNum = replyMsgNum;
    replyLastMsg = lastResult;

    sendReply(getSender(), processorId, dm, null, oneResult, pr, startTime, msgNum, lastResult,
        sendResultsInOrder);

    if (logger.isDebugEnabled()) {
      logger.debug("Sending reply message count: {} to co-ordinating node", msgNum);
    }

    replyMsgNum++;
    return false;
  }
It sends message one by one until it gets lastMessage. Have to handle scenario when message is
large, in that case message will be broken into chunks and then sent across.
geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/PartitionedRegionFunctionStreamingMessage.java