@Override
 protected AjpAprProcessor createProcessor() {
   AjpAprProcessor processor =
       new AjpAprProcessor(proto.packetSize, (AprEndpoint) proto.endpoint);
   processor.setAdapter(proto.adapter);
   processor.setTomcatAuthentication(proto.tomcatAuthentication);
   processor.setRequiredSecret(proto.requiredSecret);
   processor.setClientCertProvider(proto.getClientCertProvider());
   register(processor);
   return processor;
 }
 /** Expected to be used by the handler once the processor is no longer required. */
 @Override
 public void release(
     SocketWrapper<Long> socket,
     AjpAprProcessor processor,
     boolean isSocketClosing,
     boolean addToPoller) {
   processor.recycle(isSocketClosing);
   recycledProcessors.offer(processor);
   if (addToPoller) {
     ((AprEndpoint) proto.endpoint).getPoller().add(socket.getSocket().longValue(), true);
   }
 }