private void createIoFilter(SocketChannel channel) throws IOException {
    if (getConduit().useSSL() && channel != null) {
      final InetSocketAddress remoteAddress = (InetSocketAddress) channel.getRemoteAddress();
      final SSLEngine engine = createSslEngine(remoteAddress);

      final int packetBufferSize = engine.getSession().getPacketBufferSize();

      inputBufferVendor =
          new ByteBufferVendor(
              getBufferPool().acquireDirectReceiveBuffer(packetBufferSize),
              TRACKED_RECEIVER,
              getBufferPool());

      if (channel.socket().getReceiveBufferSize() < packetBufferSize) {
        channel.socket().setReceiveBufferSize(packetBufferSize);
      }
      if (channel.socket().getSendBufferSize() < packetBufferSize) {
        channel.socket().setSendBufferSize(packetBufferSize);
      }
      try (final ByteBufferSharing inputSharing = inputBufferVendor.open()) {
        final ByteBuffer inputBuffer = inputSharing.getBuffer();
        /*
         * It's ok to share the inputBuffer with handshakeSSLSocketChannel() since that method
         * accesses the referenced buffer for the handshake which completes before returning
         * control here. The NioSslEngine retains no reference to the buffer.
         */
        ioFilter = getConduit().getSocketCreator().handshakeSSLSocketChannel(channel, engine,
            getConduit().idleConnectionTimeout, inputBuffer,
            getBufferPool());
      }
    } else {
      final int allocSize;
      if (recvBufferSize == -1) {
        allocSize = owner.getConduit().tcpBufferSize;
      } else {
        allocSize = recvBufferSize;
      }

      inputBufferVendor =
          new ByteBufferVendor(
              getBufferPool().acquireDirectReceiveBuffer(allocSize),
              TRACKED_RECEIVER,
              getBufferPool());

      ioFilter = new NioPlainEngine(getBufferPool());
    }
  }
in order to read non-NIO socket-based messages we need to have a thread actively trying to grab
bytes out of the sockets input queue. This is that thread.
geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java