package com.l7tech.server.policy.assertion;

import com.l7tech.common.http.GenericHttpClient;
import com.l7tech.common.http.GenericHttpClientFactory;
import com.l7tech.common.http.HttpProxyConfig;
import com.l7tech.common.http.prov.apache.components.ClientConnectionManagerFactory;
import com.l7tech.common.http.prov.apache.components.HttpComponentsClient;
import com.l7tech.common.http.prov.apache.components.ClientConnectionManagerFactory.ConnectionManagerType;
import com.l7tech.server.transport.http.HttpConnectionManagerListener;
import org.apache.hc.client5.http.io.HttpClientConnectionManager;
import org.jetbrains.annotations.Nullable;

class t implements GenericHttpClientFactory {
   private HttpClientConnectionManager a;
   final boolean val$useHttp10;
   final HttpConnectionManagerListener val$listener;

   t(ServerHttpRoutingAssertion var1, boolean var2, HttpConnectionManagerListener var3) {
      this.val$useHttp10 = var2;
      this.val$listener = var3;
      this.a = null;
   }

   public GenericHttpClient createHttpClient() {
      return this.createHttpClient(-1, -1, -1, -1, -1, null, null);
   }

   public GenericHttpClient createHttpClient(int var1, int var2, int var3, int var4, int var5, Object var6, @Nullable HttpProxyConfig var7) {
      return new HttpComponentsClient(this.a(var1, var2), var6, var3, var4, var5, var7);
   }

   private HttpClientConnectionManager a(int var1, int var2) {
      if (this.a == null) {
         this.a = ClientConnectionManagerFactory.getInstance()
            .createConnectionManager(
               ConnectionManagerType.POOLING,
               var1 <= 0 ? HttpComponentsClient.getDefaultMaxConnectionsPerHost() : var1,
               var2 <= 0 ? HttpComponentsClient.getDefaultMaxTotalConnections() : var2,
               this.val$useHttp10
            );
         this.val$listener.notifyHttpConnectionManagerCreated(this.a);
      }

      return this.a;
   }
}
