package com.l7tech.server.cassandra;

import com.l7tech.gateway.common.audit.AssertionMessages;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.Messages.M;
import com.l7tech.util.ConfigFactory;
import java.util.Iterator;
import java.util.TimerTask;
import java.util.TreeSet;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;

final class f extends TimerTask {
   private final ConcurrentHashMap<String, CassandraConnectionHolder> a;
   private final CassandraConnectionManagerImpl b;
   private static final String[] c;

   private f(ConcurrentHashMap<String, CassandraConnectionHolder> var1, CassandraConnectionManagerImpl var2) {
      this.a = var1;
      this.b = var2;
   }

   @Override
   public void run() {
      Audit var10000 = CassandraConnectionManagerImpl.h;
      M var10001 = AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE;
      String[] var10002 = new String[1];
      String[] var14 = c;
      var10002[0] = var14[5];
      var10000.logAndAudit(var10001, var10002);
      this.b.lock.lock();

      try {
         long var1 = ConfigFactory.getTimeUnitProperty(var14[0], 0L);
         long var3 = ConfigFactory.getTimeUnitProperty(var14[2], CassandraConnectionManager.DEFAULT_CONNECTION_MAX_IDLE);
         int var5 = ConfigFactory.getIntProperty(var14[1], 20);
         long var6 = System.currentTimeMillis();
         int var8 = this.a.size() - var5;
         TreeSet var9 = new TreeSet<>(new c(this));

         for (Entry var11 : this.a.entrySet()) {
            if (var1 > 0L && var6 - ((CassandraConnectionHolder)var11.getValue()).getCreatedTime() > var1) {
               this.a(var11);
            } else if (var3 > 0L && var6 - ((CassandraConnectionHolder)var11.getValue()).getLastAccessTime().get() > var3) {
               this.a(var11);
            } else if (var8 > 0) {
               var9.add(var11);
            }
         }

         Iterator var17 = var9.iterator();

         for (int var18 = 0; var18 < var8 && var17.hasNext(); var18++) {
            Entry var12 = (Entry)var17.next();
            this.a(var12);
         }
      } finally {
         this.b.lock.unlock();
      }

      CassandraConnectionManagerImpl.h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE, new String[]{c[6]});
   }

   private void a(Entry<String, CassandraConnectionHolder> var1) {
      if (this.b.closeConnection((CassandraConnectionHolder)var1.getValue())) {
         this.a.remove(var1.getKey());
         Audit var10000 = CassandraConnectionManagerImpl.h;
         M var10001 = AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE;
         String[] var10002 = new String[1];
         String var10005 = (String)var1.getKey();
         String[] var2 = c;
         var10002[0] = var2[3] + var10005;
         var10000.logAndAudit(var10001, var10002);
      } else {
         CassandraConnectionManagerImpl.h.logAndAudit(AssertionMessages.CASSANDRA_CONNECTION_MANAGER_FINE_MESSAGE, new String[]{c[4] + (String)var1.getKey()});
      }
   }

   static {
      String[] var5 = new String[7];
      int var3 = 0;
      String var2 = "g\u000e.>\u001e\u0019qv\u000es \u001e\u000fVk\u00013(\u001c\u0003|k\u0001\u001e,\u001c\u001fpE\b8 g\u000e.>\u001e\u0019qv\u000es \u001e\u000fVk\u00013(\u001c\u0003|k\u0001\u001e,\u001c\u001fpW\u0006'($g\u000e.>\u001e\u0019qv\u000es \u001e\u000fVk\u00013(\u001c\u0003|k\u0001\u001e,\u001c\u001fpM\u000b1(+\u001exa\u0013V\n0\"\t\u0012q$\f2#\u0011\u0012vp\u00062#_\u001cQ\u0001</\u0013\u00125p\u0000}?\u001a\u001azr\n}.\u0010\u0019{a\f)$\u0010\u00195";
      int var4 = "g\u000e.>\u001e\u0019qv\u000es \u001e\u000fVk\u00013(\u001c\u0003|k\u0001\u001e,\u001c\u001fpE\b8 g\u000e.>\u001e\u0019qv\u000es \u001e\u000fVk\u00013(\u001c\u0003|k\u0001\u001e,\u001c\u001fpW\u0006'($g\u000e.>\u001e\u0019qv\u000es \u001e\u000fVk\u00013(\u001c\u0003|k\u0001\u001e,\u001c\u001fpM\u000b1(+\u001exa\u0013V\n0\"\t\u0012q$\f2#\u0011\u0012vp\u00062#_\u001cQ\u0001</\u0013\u00125p\u0000}?\u001a\u001azr\n}.\u0010\u0019{a\f)$\u0010\u00195"
         .length();
      char var1 = 31;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 55;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "[\u0012\"9\u0006(e}\u0012/\u0004\u0013K}y\u0000*q\u0010\u001fhj\u0007(?\u0004E'6\u001b[\u0012\"9\u0006(e}\u0012/\u0004\u0013K}y\u0000*q\u0005\u0002gq\u0000)4\u0007E";
                  var4 = "[\u0012\"9\u0006(e}\u0012/\u0004\u0013K}y\u0000*q\u0010\u001fhj\u0007(?\u0004E'6\u001b[\u0012\"9\u0006(e}\u0012/\u0004\u0013K}y\u0000*q\u0005\u0002gq\u0000)4\u0007E"
                     .length();
                  var1 = 29;
                  var7 = -1;
            }

            var10000 = 43;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

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

      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 -> 51;
            case 1 -> 88;
            case 2 -> 106;
            case 3 -> 122;
            case 4 -> 72;
            case 5 -> 64;
            default -> 34;
         });
      }

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