package com.l7tech.server.log.syslog;

import com.l7tech.util.Charsets;
import java.io.Closeable;
import java.nio.charset.Charset;
import java.text.DateFormat;
import java.text.FieldPosition;
import java.text.Format;
import java.text.MessageFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
import java.util.concurrent.atomic.AtomicInteger;

public abstract class ManagedSyslog implements Closeable {
   private static final String a;
   private final AtomicInteger b = new AtomicInteger(0);
   private SyslogManager c;

   protected abstract void init();

   protected abstract void log(ManagedSyslog.SyslogFormat var1, int var2, SyslogSeverity var3, String var4, String var5, long var6, long var8, String var10);

   protected SyslogConnectionListener getSyslogConnectionListener() {
      return this.c.a();
   }

   protected static String formatMessage(
      ManagedSyslog.SyslogFormat var0, int var1, int var2, int var3, String var4, String var5, long var6, long var8, String var10
   ) {
      Object[] var11 = new Object[]{var1, var2, var3, new Object[]{var0.b, var8}, var8, var4, var4, var5, var6, var10, null};
      MessageFormat var12 = var0.a;
      Format[] var13 = var12.getFormatsByArgumentIndex();
      if (var13[5] instanceof DateFormat) {
         ((DateFormat)var13[5]).setTimeZone(var0.b);
      }

      return a(var12.format(var11), var0.d);
   }

   void a() {
      this.b.incrementAndGet();
   }

   void b() {
      int var1 = this.b.decrementAndGet();
      if (var1 <= 0) {
         this.c.a(this);
      }
   }

   boolean c() {
      return this.b.get() > 0;
   }

   protected void init(SyslogManager var1) {
      this.c = var1;
      this.init();
   }

   protected Syslog getSylog(ManagedSyslog.SyslogFormat var1, int var2, String var3) {
      return new a(this, var1, var2, var3);
   }

   private static String a(String var0, String var1) {
      String var2 = var0;
      if (var1.length() > 1) {
         var2 = var0.replace(var1, " ");
      }

      for (int var3 = 0; var3 < var1.length(); var3++) {
         var2 = var0.replace(var1.charAt(var3), ' ');
      }

      return var2;
   }

   static {
      String var10002 = a(13, a("\fH#\b^EiM\u0013j@\u001d\u001e!\u0007NJ\u000eXC\u0007\n\u0013jL\u001d"));
      byte var10001 = -1;
      a = var10002;
   }

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

      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 -> 61;
            case 1 -> 62;
            case 2 -> 28;
            case 3 -> 120;
            case 4 -> 109;
            case 5 -> 51;
            default -> 87;
         });
      }

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

   protected static final class SyslogFormat {
      private final MessageFormat a;
      private final TimeZone b;
      private final Charset c;
      private final String d;
      private final int e;
      private final SimpleDateFormat f;
      private static final String[] g;

      protected SyslogFormat(String var1, String var2, String var3, String var4, int var5, SimpleDateFormat var6) {
         MessageFormat var10001 = new MessageFormat;
         String var10003;
         if (var1 == null) {
            String[] var7 = g;
            var10003 = var7[1];
         } else {
            var10003 = var1;
         }

         var10001./* $VF: Unable to resugar constructor */<init>(var10003);
         this.a = var10001;
         this.b = var2 == null ? TimeZone.getDefault() : TimeZone.getTimeZone(var2);
         if (g[0].equalsIgnoreCase(var3)) {
            this.c = Charsets.ISO8859;
         } else {
            this.c = var3 == null ? Charsets.UTF8 : Charset.forName(var3);
         }

         this.d = var4 == null ? "\n" : var4;
         this.e = var5;
         this.f = var6;
         a(this.a, this.f);
      }

      public Charset getCharset() {
         return this.c;
      }

      public String getDelimiter() {
         return this.d;
      }

      public int getMaxLength() {
         return this.e;
      }

      public SimpleDateFormat getSimpleDateFormat() {
         return this.f;
      }

      private static void a(MessageFormat var0, final SimpleDateFormat var1) {
         var0.setFormatByArgumentIndex(3, new Format() {
            static final long serialVersionUID = -3345935585049532941L;

            @Override
            public StringBuffer format(Object var1x, StringBuffer var2, FieldPosition var3) {
               Object[] var4 = (Object[])var1x;
               var2.append(ManagedSyslog.SyslogFormat.a(var1, (TimeZone)var4[0], (Long)var4[1]));
               return var2;
            }

            @Override
            public Object parseObject(String var1x, ParsePosition var2) {
               return null;
            }
         });
         var0.setFormatByArgumentIndex(5, new Format() {
            static final long serialVersionUID = -86894573928427460L;

            @Override
            public StringBuffer format(Object var1, StringBuffer var2, FieldPosition var3) {
               String var4 = var1.toString();
               int var5 = var4.indexOf(46);
               String var6;
               if (var5 == -1) {
                  var6 = var4;
               } else {
                  var6 = var4.substring(0, var5);
               }

               var2.append(var6);
               return var2;
            }

            @Override
            public Object parseObject(String var1, ParsePosition var2) {
               return null;
            }
         });
      }

      private static String a(SimpleDateFormat var0, TimeZone var1, long var2) {
         var0.setTimeZone(var1);
         String var4 = var0.format(var2);
         if (var4.length() == 14) {
            var4 = var4.substring(0, 3) + " " + var4.substring(3, 14);
         }

         return var4;
      }

      static {
         String[] var5 = new String[2];
         int var3 = 0;
         String var2 = "89m{b|/\u001aH\u0003\u000bO\u0012*-\tXB\u0007QqeC\u0005bI\u0014,CNXB\u000bQ";
         int var4 = "89m{b|/\u001aH\u0003\u000bO\u0012*-\tXB\u0007QqeC\u0005bI\u0014,CNXB\u000bQ".length();
         char var1 = 7;
         int var0 = -1;

         while (true) {
            String var10002 = a(19, a(var2.substring(++var0, var0 + var1)));
            byte var10001 = -1;
            var5[var3++] = var10002;
            if ((var0 += var1) >= var4) {
               g = var5;
               return;
            }

            var1 = var2.charAt(var0);
         }
      }

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

         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 -> 103;
               case 1 -> 107;
               case 2 -> 42;
               case 3 -> 33;
               case 4 -> 63;
               case 5 -> 66;
               default -> 13;
            });
         }

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