/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.Component
 *  com.l7tech.gateway.common.audit.AuditDetailMessage
 *  com.l7tech.gateway.common.audit.SystemMessages
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.Pair
 *  com.l7tech.util.TimeUnit
 *  org.springframework.context.ApplicationEvent
 *  org.springframework.dao.DataAccessException
 *  org.springframework.dao.IncorrectResultSizeDataAccessException
 *  org.springframework.jdbc.core.JdbcTemplate
 *  org.springframework.jdbc.core.RowMapper
 */
package com.l7tech.server.cluster;

import com.l7tech.gateway.common.Component;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.audit.SystemMessages;
import com.l7tech.server.cluster.DatabaseReplicationMonitor;
import com.l7tech.server.cluster.m;
import com.l7tech.server.event.system.DatabaseReplicationCheckEvent;
import com.l7tech.server.util.ManagedTimerTask;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Pair;
import com.l7tech.util.TimeUnit;
import java.net.SocketTimeoutException;
import java.sql.SQLException;
import org.springframework.context.ApplicationEvent;
import org.springframework.dao.DataAccessException;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

final class z
extends ManagedTimerTask {
    private static final long c = Long.MAX_VALUE;
    private final long d;
    private final long e;
    private final long f;
    private long g;
    private long h;
    private long i;
    private boolean j;
    final DatabaseReplicationMonitor this$0;
    private static final String[] l;

    private z(DatabaseReplicationMonitor databaseReplicationMonitor, long l2, long l3, long l4, long l5) {
        this.this$0 = databaseReplicationMonitor;
        this.g = 0L;
        this.h = System.currentTimeMillis() + DatabaseReplicationMonitor.m;
        this.d = l2;
        this.e = l3;
        this.f = l4;
        this.g = l5;
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Unable to fully structure code
     */
    @Override
    protected void doRun() {
        block18: {
            var1_1 = this.this$0.o.isMaster();
            var2_2 = System.currentTimeMillis();
            var4_3 = var2_2 - TimeUnit.HOURS.toMillis(24L);
            var6_4 = this.this$0.p;
            try {
                block20: {
                    block21: {
                        if (!var1_1) break block20;
                        var7_5 = ++this.g;
                        var15_9 = z.l;
                        var6_4 = this.this$0.p + var15_9[11];
                        var9_10 = new JdbcTemplate(this.this$0.r);
                        var9_10.update(DatabaseReplicationMonitor.i, new Object[]{var7_5, var2_2, this.this$0.x, this.this$0.B.get()});
                        var6_4 = this.this$0.q + var15_9[6];
                        var10_12 = this.a(var4_3);
                        var12_13 = (var7_5 - var10_12) * this.d / TimeUnit.SECONDS.toMillis(1L);
                        if (var12_13 >= 0L) break block21;
                        try {
                            block22: {
                                if (System.currentTimeMillis() - this.h <= this.e) ** GOTO lbl30
                                break block22;
                                catch (IncorrectResultSizeDataAccessException v0) {
                                    throw z.a(v0);
                                }
                            }
                            this.this$0.B.set(0x7FFFFFFFFFFFFFFFL);
                        }
                        catch (IncorrectResultSizeDataAccessException v1) {
                            throw z.a(v1);
                        }
                    }
                    this.this$0.B.set(var12_13);
lbl30:
                    // 3 sources

                    this.a();
                    break block18;
                }
                var6_4 = this.this$0.p + z.l[5];
                var7_6 = new JdbcTemplate(this.this$0.t);
                var8_14 = (Pair)var7_6.queryForObject(DatabaseReplicationMonitor.k, (RowMapper)new m(this));
                var9_11 = (Long)var8_14.left;
                this.this$0.B.set(var9_11);
                this.g = (Long)var8_14.right;
            }
            catch (IncorrectResultSizeDataAccessException var7_7) {
                block19: {
                    if (System.currentTimeMillis() - this.h <= this.e) break block19;
                    try {
                        block23: {
                            if (this.j != var1_1) break block19;
                            break block23;
                            catch (IncorrectResultSizeDataAccessException v2) {
                                throw z.a(v2);
                            }
                        }
                        this.this$0.B.set(0x7FFFFFFFFFFFFFFFL);
                    }
                    catch (IncorrectResultSizeDataAccessException v3) {
                        throw z.a(v3);
                    }
                }
                try {
                    if (var1_1) {
                        this.a();
                    }
                }
                catch (IncorrectResultSizeDataAccessException v4) {
                    throw z.a(v4);
                }
            }
            catch (DataAccessException var7_8) {
                this.this$0.B.set(0x7FFFFFFFFFFFFFFFL);
                this.a((AuditDetailMessage)SystemMessages.MONITOR_DB_REPLICATION_ERROR, new String[]{var6_4, this.a(var7_8)}, ExceptionUtils.getDebugException((Throwable)var7_8));
            }
            finally {
                this.j = var1_1;
                this.this$0.u.publishEvent((ApplicationEvent)new DatabaseReplicationCheckEvent(this.this$0, Component.GW_SERVER));
            }
        }
    }

    private long a(long l2) {
        long l3;
        JdbcTemplate jdbcTemplate = new JdbcTemplate(this.this$0.s);
        Long l4 = (Long)jdbcTemplate.queryForObject(DatabaseReplicationMonitor.j, Long.class, new Object[]{this.this$0.x, l2});
        try {
            l3 = l4 != null ? l4 : 0L;
        }
        catch (IncorrectResultSizeDataAccessException incorrectResultSizeDataAccessException) {
            throw z.a(incorrectResultSizeDataAccessException);
        }
        return l3;
    }

    private String a(DataAccessException dataAccessException) {
        Object object = ExceptionUtils.getMessageWithCause((Throwable)dataAccessException);
        if (ExceptionUtils.causedBy((Throwable)dataAccessException, SocketTimeoutException.class)) {
            String[] stringArray;
            try {
                stringArray = l;
                object = (String)object + stringArray[4] + this.this$0.r.getLoginTimeout();
            }
            catch (SQLException sQLException) {
                stringArray = l;
                object = (String)object + stringArray[8];
            }
            try {
                stringArray = l;
                object = (String)object + stringArray[7] + this.this$0.s.getLoginTimeout();
            }
            catch (SQLException sQLException) {
                object = (String)object + l[0];
            }
        }
        return object;
    }

    private void a(AuditDetailMessage auditDetailMessage, String[] stringArray, Throwable throwable) {
        try {
            if (System.currentTimeMillis() - this.i > this.f) {
                this.i = System.currentTimeMillis();
                this.this$0.v.logAndAudit(auditDetailMessage, stringArray, throwable);
            }
        }
        catch (IncorrectResultSizeDataAccessException incorrectResultSizeDataAccessException) {
            throw z.a(incorrectResultSizeDataAccessException);
        }
    }

    private void a() {
        block11: {
            block9: {
                long l2;
                block10: {
                    l2 = this.this$0.B.get();
                    try {
                        try {
                            try {
                                if (System.currentTimeMillis() - this.h <= this.e || l2 < this.e) break block9;
                            }
                            catch (IncorrectResultSizeDataAccessException incorrectResultSizeDataAccessException) {
                                throw z.a(incorrectResultSizeDataAccessException);
                            }
                            if (l2 != Long.MAX_VALUE) break block10;
                        }
                        catch (IncorrectResultSizeDataAccessException incorrectResultSizeDataAccessException) {
                            throw z.a(incorrectResultSizeDataAccessException);
                        }
                        this.a((AuditDetailMessage)SystemMessages.MONITOR_DB_REPLICATION_FAILED, new String[]{this.this$0.q + l[3], l[2]}, null);
                        break block11;
                    }
                    catch (IncorrectResultSizeDataAccessException incorrectResultSizeDataAccessException) {
                        throw z.a(incorrectResultSizeDataAccessException);
                    }
                }
                String[] stringArray = new String[2];
                String[] stringArray2 = l;
                stringArray[0] = this.this$0.q + stringArray2[9];
                stringArray[1] = stringArray2[1] + l2 + stringArray2[10];
                this.a((AuditDetailMessage)SystemMessages.MONITOR_DB_REPLICATION_FAILED, stringArray, null);
                break block11;
            }
            try {
                if (this.i > 0L) {
                    this.i = 0L;
                    this.this$0.v.logAndAudit((AuditDetailMessage)SystemMessages.MONITOR_DB_REPLICATION_RECOVERED, new String[]{this.this$0.q + l[9]});
                }
            }
            catch (IncorrectResultSizeDataAccessException incorrectResultSizeDataAccessException) {
                throw z.a(incorrectResultSizeDataAccessException);
            }
        }
    }

    private static IncorrectResultSizeDataAccessException a(IncorrectResultSizeDataAccessException incorrectResultSizeDataAccessException) {
        return incorrectResultSizeDataAccessException;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[12];
                var3_1 = 0;
                var2_2 = "R\u001e0;\u0002\u0002N9?,x)\r^9\u001e:-\u001f\u000fOx!:?\u0004\u0002\n,$8=\u0002\u0019^x?0,\u001f\u0005O.,9x\u000b\rC4(1v\t<(99\u0014LC+m\u0017=?'7\u001fLI9!6-\u0001\r^1#2x\t\tF94\u0015xe&=\u000e\u0003D<,'!M\nK1!:.\b\u001e\u0003#R\u001d'1\u0000\rX!m\u00119\u0019\ry78';\bLF7*<6M\u0018C5(:-\u0019V\n=xe4,\u0019\tG(9u,\u0002LM=9u(\u001f\u0005G9?,x\u001f\tZ4$69\u0019\u0005E6m&,\f\u0018_+wu<\b\u0000K!au+\b\u001d_=#6=DAxe4,\u0019\tG(9u,\u0002LM=9u+\b\u000fE6)4*\u0014LL9$97\u001b\tXx?0(\u0001\u0005I99<7\u0003LY,,!-\u001eV\n+($-\b\u0002I=d%R\u001e0;\u0002\u0002N9?,x)\r^9\u001e:-\u001f\u000fOx!:?\u0004\u0002\n,$8=\u0002\u0019^bm3R\u001d'1\u0000\rX!m\u00119\u0019\ry78';\bLF7*<6M\u0018C5(:-\u0019LX=9'1\b\u001aK4m39\u0004\u0000O<c\u0015xe&=\u000e\u0003D<,'!M\nK1!:.\b\u001e\u0003";
                var4_3 = "R\u001e0;\u0002\u0002N9?,x)\r^9\u001e:-\u001f\u000fOx!:?\u0004\u0002\n,$8=\u0002\u0019^x?0,\u001f\u0005O.,9x\u000b\rC4(1v\t<(99\u0014LC+m\u0017=?'7\u001fLI9!6-\u0001\r^1#2x\t\tF94\u0015xe&=\u000e\u0003D<,'!M\nK1!:.\b\u001e\u0003#R\u001d'1\u0000\rX!m\u00119\u0019\ry78';\bLF7*<6M\u0018C5(:-\u0019V\n=xe4,\u0019\tG(9u,\u0002LM=9u(\u001f\u0005G9?,x\u001f\tZ4$69\u0019\u0005E6m&,\f\u0018_+wu<\b\u0000K!au+\b\u001d_=#6=DAxe4,\u0019\tG(9u,\u0002LM=9u+\b\u000fE6)4*\u0014LL9$97\u001b\tXx?0(\u0001\u0005I99<7\u0003LY,,!-\u001eV\n+($-\b\u0002I=d%R\u001e0;\u0002\u0002N9?,x)\r^9\u001e:-\u001f\u000fOx!:?\u0004\u0002\n,$8=\u0002\u0019^bm3R\u001d'1\u0000\rX!m\u00119\u0019\ry78';\bLF7*<6M\u0018C5(:-\u0019LX=9'1\b\u001aK4m39\u0004\u0000O<c\u0015xe&=\u000e\u0003D<,'!M\nK1!:.\b\u001e\u0003".length();
                var1_4 = 53;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 100;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = z.b(v0, z.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\nLBIpp<Y@\n\u0017F^k{5ZK\u0007^p>-Z[F^z>(XVJKmgxXZWFv}9^VHD?m,KKRY%><OSFS3>+ONROq}=\u0003";
                    var4_3 = "\nLBIpp<Y@\n\u0017F^k{5ZK\u0007^p>-Z[F^z>(XVJKmgxXZWFv}9^VHD?m,KKRY%><OSFS3>+ONROq}=\u0003".length();
                    var1_4 = 8;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 22;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = z.b(v0, z.b(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        z.l = var5;
    }

    private static char[] b(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x4E);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String b(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 60;
                    case 1 -> 41;
                    case 2 -> 49;
                    case 3 -> 60;
                    case 4 -> 9;
                    case 5 -> 8;
                    default -> 78;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

