zzaav.java 7.54 KB
package com.google.android.gms.internal;

import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.Api;
import com.google.android.gms.common.api.Api.zza;
import com.google.android.gms.common.api.Api.zzb;
import com.google.android.gms.common.api.Api.zzc;
import com.google.android.gms.common.api.Api.zze;
import com.google.android.gms.common.api.Result;
import com.google.android.gms.common.internal.zzg;
import com.google.android.gms.common.zze;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;

public class zzaav
  implements zzaah, zzabc
{
  final Lock a;
  final Condition b;
  final Context c;
  final zze d;
  final b e;
  final Map<Api.zzc<?>, Api.zze> f;
  final Map<Api.zzc<?>, ConnectionResult> g = new HashMap();
  final zzg h;
  final Map<Api<?>, Boolean> i;
  final Api.zza<? extends zzbai, zzbaj> j;
  volatile zzaau k;
  public int l;
  final zzaat m;
  final zzabc.zza n;
  private ConnectionResult o = null;
  
  public zzaav(Context paramContext, zzaat paramzzaat, Lock paramLock, Looper paramLooper, zze paramzze, Map<Api.zzc<?>, Api.zze> paramMap, zzg paramzzg, Map<Api<?>, Boolean> paramMap1, Api.zza<? extends zzbai, zzbaj> paramzza, ArrayList<zzaag> paramArrayList, zzabc.zza paramzza1)
  {
    this.c = paramContext;
    this.a = paramLock;
    this.d = paramzze;
    this.f = paramMap;
    this.h = paramzzg;
    this.i = paramMap1;
    this.j = paramzza;
    this.m = paramzzaat;
    this.n = paramzza1;
    paramContext = paramArrayList.iterator();
    while (paramContext.hasNext()) {
      ((zzaag)paramContext.next()).zza(this);
    }
    this.e = new b(paramLooper);
    this.b = paramLock.newCondition();
    this.k = new zzaas(this);
  }
  
  final void a(ConnectionResult paramConnectionResult)
  {
    this.a.lock();
    try
    {
      this.o = paramConnectionResult;
      this.k = new zzaas(this);
      this.k.begin();
      this.b.signalAll();
      return;
    }
    finally
    {
      this.a.unlock();
    }
  }
  
  final void a(a parama)
  {
    parama = this.e.obtainMessage(1, parama);
    this.e.sendMessage(parama);
  }
  
  public ConnectionResult blockingConnect()
  {
    connect();
    while (isConnecting()) {
      try
      {
        this.b.await();
      }
      catch (InterruptedException localInterruptedException)
      {
        Thread.currentThread().interrupt();
        return new ConnectionResult(15, null);
      }
    }
    if (isConnected()) {
      return ConnectionResult.zzayj;
    }
    if (this.o != null) {
      return this.o;
    }
    return new ConnectionResult(13, null);
  }
  
  public ConnectionResult blockingConnect(long paramLong, TimeUnit paramTimeUnit)
  {
    connect();
    for (paramLong = paramTimeUnit.toNanos(paramLong); isConnecting(); paramLong = this.b.awaitNanos(paramLong))
    {
      if (paramLong <= 0L) {}
      try
      {
        disconnect();
        return new ConnectionResult(14, null);
      }
      catch (InterruptedException paramTimeUnit)
      {
        Thread.currentThread().interrupt();
        return new ConnectionResult(15, null);
      }
    }
    if (isConnected()) {
      return ConnectionResult.zzayj;
    }
    if (this.o != null) {
      return this.o;
    }
    return new ConnectionResult(13, null);
  }
  
  public void connect()
  {
    this.k.connect();
  }
  
  public void disconnect()
  {
    if (this.k.disconnect()) {
      this.g.clear();
    }
  }
  
  public void dump(String paramString, FileDescriptor paramFileDescriptor, PrintWriter paramPrintWriter, String[] paramArrayOfString)
  {
    String str = String.valueOf(paramString).concat("  ");
    paramPrintWriter.append(paramString).append("mState=").println(this.k);
    Iterator localIterator = this.i.keySet().iterator();
    while (localIterator.hasNext())
    {
      Api localApi = (Api)localIterator.next();
      paramPrintWriter.append(paramString).append(localApi.getName()).println(":");
      ((Api.zze)this.f.get(localApi.zzvg())).dump(str, paramFileDescriptor, paramPrintWriter, paramArrayOfString);
    }
  }
  
  @Nullable
  public ConnectionResult getConnectionResult(@NonNull Api<?> paramApi)
  {
    paramApi = paramApi.zzvg();
    if (this.f.containsKey(paramApi))
    {
      if (((Api.zze)this.f.get(paramApi)).isConnected()) {
        return ConnectionResult.zzayj;
      }
      if (this.g.containsKey(paramApi)) {
        return (ConnectionResult)this.g.get(paramApi);
      }
    }
    return null;
  }
  
  public boolean isConnected()
  {
    return this.k instanceof zzaaq;
  }
  
  public boolean isConnecting()
  {
    return this.k instanceof zzaar;
  }
  
  public void onConnected(@Nullable Bundle paramBundle)
  {
    this.a.lock();
    try
    {
      this.k.onConnected(paramBundle);
      return;
    }
    finally
    {
      this.a.unlock();
    }
  }
  
  public void onConnectionSuspended(int paramInt)
  {
    this.a.lock();
    try
    {
      this.k.onConnectionSuspended(paramInt);
      return;
    }
    finally
    {
      this.a.unlock();
    }
  }
  
  public <A extends Api.zzb, R extends Result, T extends zzaad.zza<R, A>> T zza(@NonNull T paramT)
  {
    paramT.zzvI();
    return this.k.zza(paramT);
  }
  
  public void zza(@NonNull ConnectionResult paramConnectionResult, @NonNull Api<?> paramApi, boolean paramBoolean)
  {
    this.a.lock();
    try
    {
      this.k.zza(paramConnectionResult, paramApi, paramBoolean);
      return;
    }
    finally
    {
      this.a.unlock();
    }
  }
  
  public boolean zza(zzabq paramzzabq)
  {
    return false;
  }
  
  public <A extends Api.zzb, T extends zzaad.zza<? extends Result, A>> T zzb(@NonNull T paramT)
  {
    paramT.zzvI();
    return this.k.zzb(paramT);
  }
  
  public void zzvM()
  {
    if (isConnected())
    {
      zzaaq localzzaaq = (zzaaq)this.k;
      if (localzzaaq.b)
      {
        localzzaaq.b = false;
        localzzaaq.a.m.i.release();
        localzzaaq.disconnect();
      }
    }
  }
  
  public void zzvn() {}
  
  static abstract class a
  {
    private final zzaau a;
    
    protected a(zzaau paramzzaau)
    {
      this.a = paramzzaau;
    }
    
    protected abstract void a();
    
    public final void a(zzaav paramzzaav)
    {
      zzaav.a(paramzzaav).lock();
      try
      {
        zzaau localzzaau1 = zzaav.b(paramzzaav);
        zzaau localzzaau2 = this.a;
        if (localzzaau1 != localzzaau2) {
          return;
        }
        a();
        return;
      }
      finally
      {
        zzaav.a(paramzzaav).unlock();
      }
    }
  }
  
  final class b
    extends Handler
  {
    b(Looper paramLooper)
    {
      super();
    }
    
    public final void handleMessage(Message paramMessage)
    {
      switch (paramMessage.what)
      {
      default: 
        int i = paramMessage.what;
        Log.w("GACStateManager", 31 + "Unknown message id: " + i);
        return;
      case 1: 
        ((zzaav.a)paramMessage.obj).a(zzaav.this);
        return;
      }
      throw ((RuntimeException)paramMessage.obj);
    }
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/com/google/android/gms/internal/zzaav.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */