package com.l7tech.server.util;

import com.l7tech.util.Config;
import com.l7tech.util.ThreadPool;
import com.l7tech.util.ValidatedConfig;
import com.l7tech.util.ThreadPool.ThreadPoolShutDownException;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ThreadPoolBean implements PropertyChangeListener {
   private final Config a;
   private final ThreadPool b;
   private final String c;
   private final String d;
   private final String e;
   private final int f;
   private String g;
   private String h;
   private int i;
   private static final int j = 5;
   private static Logger k;
   private static final String[] l;

   public ThreadPoolBean(Config var1, String var2, String var3, String var4, int var5, String var6, String var7, int var8) {
      this(var1, var2, var3, var4, var5, var6, var7, var8, null);
   }

   public ThreadPoolBean(Config var1, String var2, String var3, String var4, int var5, String var6, String var7, int var8, RejectedExecutionHandler var9) {
      this.c = var2;
      this.d = var3;
      this.e = var4;
      this.f = var5;
      this.a = this.a(var1);
      this.g = var6;
      this.h = var7;
      this.i = var8;
      this.b = new ThreadPool(var2, this.b(), this.a(), var9);
   }

   public ThreadPoolBean(Config var1, String var2, String var3, String var4, int var5) {
      this(var1, var2, var3, var4, var5, null);
   }

   public ThreadPoolBean(Config var1, String var2, String var3, String var4, int var5, RejectedExecutionHandler var6) {
      this.c = var2;
      this.d = var3;
      this.e = var4;
      this.f = var5;
      this.a = this.a(var1);
      this.b = new ThreadPool(var2, 5, this.a(), var6);
   }

   public void start() {
      this.b.start();
   }

   public void shutdown() {
      this.b.shutdown();
   }

   public boolean isShutdown() {
      return this.b.isShutdown();
   }

   public int getActiveCount() {
      return this.b.getActiveCount();
   }

   public void submitTask(Runnable var1) throws ThreadPoolShutDownException {
      this.b.submitTask(var1);
   }

   public <T> Future<T> submitTask(Callable<T> var1) throws ThreadPoolShutDownException {
      return this.b.submitTask(var1);
   }

   @Override
   public void propertyChange(PropertyChangeEvent var1) {
      if (this.d.equals(var1.getPropertyName())) {
         int var2 = this.a();
         this.b.setMaxPoolSize(var2);
         String[] var3 = l;
         k.log(Level.CONFIG, var3[0] + this.c + var3[2], var2);
      }

      if (this.g.equals(var1.getPropertyName())) {
         int var4 = this.b();
         this.b.setCorePoolSize(var4);
         k.log(Level.CONFIG, l[1], new Object[]{this.c, var4});
      }
   }

   private Config a(Config var1) {
      ValidatedConfig var2 = new ValidatedConfig(var1, k, new r(this));
      var2.setMinimumValue(this.d, 5);
      return var2;
   }

   private int a() {
      return this.a.getIntProperty(this.d, this.f);
   }

   private int b() {
      return this.a.getIntProperty(this.g, this.i);
   }

   static {
      String[] var5 = new String[3];
      int var3 = 0;
      String var2 = "Ib4m/Y\u0011<!ib4m/Y\u0011<i`q{_\u001anwp|4S\u0019<a9v>\u001c\u0001s2+=&\r<a9v>\u001c\u0001s2+<&\u0012";
      int var4 = "Ib4m/Y\u0011<!ib4m/Y\u0011<i`q{_\u001anwp|4S\u0019<a9v>\u001c\u0001s2+=&\r<a9v>\u001c\u0001s2+<&\u0012".length();
      char var1 = '\b';
      int var0 = -1;

      while (true) {
         String var10002 = a(113, a(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            l = var5;
            k = Logger.getLogger(ThreadPoolBean.class.getName());
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

   private static char[] a(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 4);
      }

      return var10000;
   }

   private static String a(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 109;
            case 1 -> 99;
            case 2 -> 33;
            case 3 -> 125;
            case 4 -> 42;
            case 5 -> 77;
            default -> 4;
         });
      }

      return new String(var10001).intern();
   }
}
