@Override
  protected void sendReply(InternalDistributedMember member, int procId, DistributionManager dm,
      ReplyException ex, PartitionedRegion pr, long startTime) {
    // if there was an exception, then throw out any data
    if (ex != null) {
      outStream = null;
      replyMsgNum = 0;
      replyLastMsg = true;
    }
    if (replyLastMsg) {
      if (pr != null && startTime > 0) {
        pr.getPrStats().endPartitionMessagesProcessing(startTime);
      }
    }
    StreamingReplyMessage.send(member, procId, ex, dm, outStream, numObjectsInChunk,
        replyMsgNum, replyLastMsg, isPdxSerialized);
  }
send a reply message. This is in a method so that subclasses can override the reply message
type

@see PutMessage#sendReply
geode-core/src/main/java/org/apache/geode/internal/cache/partitioned/QueryMessage.java