package com.l7tech.server;

import com.l7tech.gateway.common.RequestId;
import com.l7tech.server.audit.AuditLogFormatter;
import com.l7tech.util.RandomUtil;
import java.util.concurrent.atomic.AtomicLong;

public class RequestIdGenerator {
   private final AtomicLong a = new AtomicLong();
   private final AtomicLong b = new AtomicLong();
   private static final RequestIdGenerator c = new RequestIdGenerator();
   static final long d = 4611686018427387903L;

   public static RequestId next() {
      return c.a();
   }

   RequestId a() {
      long var1 = this.a.get();
      long var3 = this.b.incrementAndGet();
      if (var3 > 4611686018427387903L && AuditLogFormatter.isFormatDefault()) {
         this.a.compareAndSet(var1, System.currentTimeMillis());
         this.b.compareAndSet(var3, 0L);
      }

      return new RequestId(var1, var3);
   }

   private RequestIdGenerator() {
      if (AuditLogFormatter.isFormatJson()) {
         this.a(RandomUtil.nextLong(), RandomUtil.nextLong());
      } else {
         this.a(ServerConfig.getInstance().getServerBootTime(), 0L);
      }
   }

   RequestIdGenerator(long var1, long var3) {
      this.a(var1, var3);
   }

   private void a(long var1, long var3) {
      this.a.set(var1);
      this.b.set(var3);
   }
}
