package com.ifpdos.udi.sdk.binderhttpd;

import android.util.Log;
import com.ifpdos.sdk.httpd.binder.aidl.IServer;
import com.ifpdos.sdk.httpd.binder.aidl.Request;
import com.ifpdos.sdk.httpd.binder.aidl.Response;
import com.ifpdos.udi.sdk.IEventHandler;
import com.ifpdos.udi.sdk.UdiSdk;
import g.a.a.a.a;
import g.e.b.f0.b;
import g.e.b.j;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/* JADX INFO: loaded from: classes.dex */
public class ServiceWaiter implements IEventHandler {
    private static final ServiceWaiter sInstance = new ServiceWaiter();
    private final Map<String, RealWaiter> mServiceMap = new ConcurrentHashMap();
    private final j mGson = new j();

    public static class RealWaiter {
        private final String mServiceName;
        private boolean mIsReady = false;
        private boolean mTimeOut = false;

        public RealWaiter(String str) {
            this.mServiceName = str;
        }

        public synchronized void onReady() {
            this.mIsReady = true;
            notifyAll();
        }

        public synchronized void waitServiceReady(int i2) {
            if (this.mIsReady || this.mTimeOut) {
                return;
            }
            try {
                wait(i2);
            } catch (InterruptedException e2) {
                Log.e("UdiSdk", "waitServiceReady interrupted: " + this.mServiceName, e2);
            }
            if (!this.mIsReady) {
                Log.d("UdiSdk", "waitServiceReady timeout: " + this.mServiceName);
                this.mTimeOut = true;
            }
        }
    }

    public static class ServiceReadyData {

        @b("service")
        public String service;
    }

    private ServiceWaiter() {
        Log.d("UdiSdk", "create ServiceWaiter");
        UdiSdk.registerEvents((List<String>) Collections.singletonList("v1/udi/service/ready"), this);
    }

    public static ServiceWaiter getInstance() {
        return sInstance;
    }

    private synchronized RealWaiter getRequestWaiter(String str) {
        RealWaiter realWaiter;
        realWaiter = this.mServiceMap.get(str);
        if (realWaiter == null) {
            realWaiter = new RealWaiter(str);
            this.mServiceMap.put(str, realWaiter);
        }
        return realWaiter;
    }

    private synchronized void onServiceReady(String str) {
        Log.d("UdiSdk", "onServiceReady " + str);
        getRequestWaiter(str).onReady();
    }

    @Override // com.ifpdos.udi.sdk.IEventHandler
    public void onEvent(String str, String str2) {
        try {
            onServiceReady(((ServiceReadyData) this.mGson.b(str2, ServiceReadyData.class)).service);
        } catch (Throwable th) {
            Log.e("UdiSdk", "get ready service failed", th);
        }
    }

    public Response sendRequest(IServer iServer, Request request, String str) {
        Response responseSendRequest = iServer.sendRequest(request);
        RealWaiter requestWaiter = getRequestWaiter(str);
        if (responseSendRequest.getCode() != 404 || requestWaiter.mIsReady || requestWaiter.mTimeOut) {
            StringBuilder sbJ = a.J(str, " is ready or timeout before, ready=");
            sbJ.append(requestWaiter.mIsReady);
            sbJ.append(", timeout=");
            sbJ.append(requestWaiter.mTimeOut);
            Log.d("UdiSdk", sbJ.toString());
            return responseSendRequest;
        }
        int serviceReadyTimeout = UdiSdk.getServiceReadyTimeout();
        Log.d("UdiSdk", "wait for service ready : " + str + ", " + serviceReadyTimeout);
        requestWaiter.waitServiceReady(serviceReadyTimeout);
        return iServer.sendRequest(request);
    }
}
