private void provideData(ByteBuffer bb) {
      synchronized (dataMon) {
        // if (bb != null) {
        // logit("MDIS: providing bb with " +
        // bb.remaining() + " bytes");
        // }
        data = bb;
        // logit("dataMon notify bb=" + bb);
        dataMon.notify();
      }
    }
This input stream waits for data to be available. Once it is provided, by a call to addChunk,
it will stream the data in from that chunk, signal that is has completed, and then wait for
another chunk.
geode-core/src/main/java/org/apache/geode/internal/tcp/MsgDestreamer.java