package com.l7tech.server.transport.http.websocket.message;

import com.l7tech.gateway.common.transport.SsgConnector;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.transport.http.websocket.SsgWebSocketEndpointHandler;
import jakarta.websocket.Session;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public abstract class SsgWebSocketMessageHandler<T> extends MessageProcessorMessageHandler<T> {
   protected static final Logger LOGGER;
   protected final Session sessionToExternalServer;
   protected final boolean isPassThroughMessage;
   private static final String[] c;

   protected SsgWebSocketMessageHandler(
      @NotNull SsgWebSocketEndpointHandler var1, @NotNull SsgConnector var2, @NotNull Session var3, @Nullable Session var4, @NotNull String var5, boolean var6
   ) {
      if (var1 == null) {
         b(0);
      }

      if (var2 == null) {
         b(1);
      }

      if (var3 == null) {
         b(2);
      }

      if (var5 == null) {
         b(3);
      }

      super(var1, var2, var3, var5);
      this.sessionToExternalServer = var4;
      this.isPassThroughMessage = var6;
   }

   protected abstract void sendDirectlyToBackEnd(@NotNull T var1);

   public void onMessage(T var1) {
      try {
         if (this.isPassThroughMessage) {
            this.sendDirectlyToBackEnd((T)var1);
            return;
         }
      } catch (IllegalArgumentException var6) {
         throw b(var6);
      }

      AtomicBoolean var2 = new AtomicBoolean(true);
      PolicyEnforcementContext var3 = this.a();
      String[] var5 = c;
      var3.setVariable(var5[14], this.session.getUserProperties().get(var5[18]));
      var3.setVariable(var5[7], this.session.getUserProperties().get(var5[11]));
      Object var4 = this.doMessageProcessor((T)var1, var3, var2, var5[17]);
      this.sendProcessedResponse((T)var4, var2);
   }

   protected void sendProcessedResponse(@NotNull T param1, @NotNull AtomicBoolean param2) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: ifnonnull 0f
      // 04: bipush 4
      // 05: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (I)V
      // 08: goto 0f
      // 0b: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0e: athrow
      // 0f: aload 2
      // 10: ifnonnull 1e
      // 13: bipush 5
      // 14: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (I)V
      // 17: goto 1e
      // 1a: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 1d: athrow
      // 1e: aload 0
      // 1f: getfield com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.onMessageClosedSessions Z
      // 22: ifeq 2a
      // 25: return
      // 26: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 29: athrow
      // 2a: aload 0
      // 2b: getfield com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.sessionToExternalServer Ljakarta/websocket/Session;
      // 2e: ifnull 79
      // 31: getstatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.LOGGER Ljava/util/logging/Logger;
      // 34: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 37: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 3a: ifeq 68
      // 3d: goto 44
      // 40: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 43: athrow
      // 44: getstatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.LOGGER Ljava/util/logging/Logger;
      // 47: aload 0
      // 48: aload 1
      // 49: invokevirtual com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.getMessageInfo (Ljava/lang/Object;)Ljava/lang/String;
      // 4c: getstatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.c [Ljava/lang/String;
      // 4f: bipush 8
      // 51: aaload
      // 52: swap
      // 53: getstatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.c [Ljava/lang/String;
      // 56: bipush 9
      // 58: aaload
      // 59: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // 5e: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // 61: goto 68
      // 64: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 67: athrow
      // 68: aload 0
      // 69: aload 0
      // 6a: getfield com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.sessionToExternalServer Ljakarta/websocket/Session;
      // 6d: invokeinterface jakarta/websocket/Session.getAsyncRemote ()Ljakarta/websocket/RemoteEndpoint$Async; 1
      // 72: aload 1
      // 73: invokevirtual com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.sendMessage (Ljakarta/websocket/RemoteEndpoint$Async;Ljava/lang/Object;)V
      // 76: goto c4
      // 79: aload 2
      // 7a: invokevirtual java/util/concurrent/atomic/AtomicBoolean.get ()Z
      // 7d: ifeq c4
      // 80: getstatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.LOGGER Ljava/util/logging/Logger;
      // 83: getstatic java/util/logging/Level.FINE Ljava/util/logging/Level;
      // 86: invokevirtual java/util/logging/Logger.isLoggable (Ljava/util/logging/Level;)Z
      // 89: ifeq b6
      // 8c: goto 93
      // 8f: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 92: athrow
      // 93: getstatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.LOGGER Ljava/util/logging/Logger;
      // 96: aload 0
      // 97: aload 1
      // 98: invokevirtual com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.getMessageInfo (Ljava/lang/Object;)Ljava/lang/String;
      // 9b: getstatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.c [Ljava/lang/String;
      // 9e: bipush 4
      // 9f: aaload
      // a0: swap
      // a1: getstatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.c [Ljava/lang/String;
      // a4: bipush 12
      // a6: aaload
      // a7: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001" ]
      // ac: invokevirtual java/util/logging/Logger.fine (Ljava/lang/String;)V
      // af: goto b6
      // b2: invokestatic com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.b (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // b5: athrow
      // b6: aload 0
      // b7: aload 0
      // b8: getfield com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.session Ljakarta/websocket/Session;
      // bb: invokeinterface jakarta/websocket/Session.getAsyncRemote ()Ljakarta/websocket/RemoteEndpoint$Async; 1
      // c0: aload 1
      // c1: invokevirtual com/l7tech/server/transport/http/websocket/message/SsgWebSocketMessageHandler.sendMessage (Ljakarta/websocket/RemoteEndpoint$Async;Ljava/lang/Object;)V
      // c4: return
      // try (0 -> 4): 5 java/lang/IllegalArgumentException
      // try (7 -> 11): 12 java/lang/IllegalArgumentException
      // try (14 -> 18): 18 java/lang/IllegalArgumentException
      // try (20 -> 27): 28 java/lang/IllegalArgumentException
      // try (23 -> 43): 44 java/lang/IllegalArgumentException
      // try (53 -> 60): 61 java/lang/IllegalArgumentException
      // try (56 -> 76): 77 java/lang/IllegalArgumentException
   }

   static {
      String[] var5 = new String[19];
      int var3 = 0;
      String var2 = "<Vh\"\u0000%i:Zm\"\u001fwo)\\w\"\u0018`|1Jub\u001ef27Mq}Cex=Jjn\u0007wipT`~\u001fsz:\u0016V~\u000bEx=jjn\u0007wi\u0012\\v~\rux\u0017Xki\u0000wo\u0015,\\ki<`r<\\v~\tvO:Jub\u0002ax\u0006cPkd\u0018,\f,JbN\u0003|s:Zqb\u001e\b\f\\ki\u0005|z\u007f>\u001eKbx\u0001ws+\u0019cb\u001e2]\u0011VqC\u0019~q\u007fId\u007f\r\u007fx+\\w-K7nx\u0019jkL7nq\u001cv-\u0001gn+\u0019kb\u00182\u007f:\u0019kx\u0000~\u0013-\\vb\u0000dx;j`\u007f\u001a{~:idy\u0004((\\g~\u0003qv:M+b\u0002_x,Jdj\t<n>O`i9bz-Xah>wn/Vk~\t\b\f\\ki\u0005|z\u007f\n\u007fMj-\u001fwo)\\w\u001a,\\ki>wi*Kk_\tam0Wvh8}^3P`c\u0018\u001d\fjB ?sk:](B\u0002?H/^wl\bw0\r\\v}\u0003|n:\n\u007fMj-\u000f~t:Wq\u001b,JbZ\tpN0Znh\u0018Ws;Ijd\u0002fU>Waa\t`'(\\g~\u0003qv:M+b\u0002_x,Jdj\t<n>O`i9bz-Xah>wl*\\vy\u0007,\\v~\u0005}s\u000f-\\v}\u0003|n:t`~\u001fsz:";
      int var4 = "<Vh\"\u0000%i:Zm\"\u001fwo)\\w\"\u0018`|1Jub\u001ef27Mq}Cex=Jjn\u0007wipT`~\u001fsz:\u0016V~\u000bEx=jjn\u0007wi\u0012\\v~\rux\u0017Xki\u0000wo\u0015,\\ki<`r<\\v~\tvO:Jub\u0002ax\u0006cPkd\u0018,\f,JbN\u0003|s:Zqb\u001e\b\f\\ki\u0005|z\u007f>\u001eKbx\u0001ws+\u0019cb\u001e2]\u0011VqC\u0019~q\u007fId\u007f\r\u007fx+\\w-K7nx\u0019jkL7nq\u001cv-\u0001gn+\u0019kb\u00182\u007f:\u0019kx\u0000~\u0013-\\vb\u0000dx;j`\u007f\u001a{~:idy\u0004((\\g~\u0003qv:M+b\u0002_x,Jdj\t<n>O`i9bz-Xah>wn/Vk~\t\b\f\\ki\u0005|z\u007f\n\u007fMj-\u001fwo)\\w\u001a,\\ki>wi*Kk_\tam0Wvh8}^3P`c\u0018\u001d\fjB ?sk:](B\u0002?H/^wl\bw0\r\\v}\u0003|n:\n\u007fMj-\u000f~t:Wq\u001b,JbZ\tpN0Znh\u0018Ws;Ijd\u0002fU>Waa\t`'(\\g~\u0003qv:M+b\u0002_x,Jdj\t<n>O`i9bz-Xah>wl*\\vy\u0007,\\v~\u0005}s\u000f-\\v}\u0003|n:t`~\u001fsz:"
         .length();
      char var1 = 'M';
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     c = var5;
                     LOGGER = Logger.getLogger(SsgWebSocketMessageHandler.class.getName());
                     return;
                  }

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

                  var2 = "\u0017^gc\tmB;uor\u0002nw-\u001c\u0007aI+4x`1V#I\t4C$U|g\u0003|;\u0006W\u007fs\u0002jb";
                  var4 = "\u0017^gc\tmB;uor\u0002nw-\u001c\u0007aI+4x`1V#I\t4C$U|g\u0003|;\u0006W\u007fs\u0002jb".length();
                  var1 = 15;
                  var7 = -1;
            }

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

   private static IllegalArgumentException b(IllegalArgumentException var0) {
      return var0;
   }

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

      return var10000;
   }

   private static String b(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 -> 49;
            case 1 -> 87;
            case 2 -> 107;
            case 3 -> 99;
            case 4 -> 2;
            case 5 -> 124;
            default -> 115;
         });
      }

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