package com.ifpdos.sdk.httpd.binder;

import android.os.IBinder;
import android.util.Log;
import com.ifpdos.sdk.httpd.binder.aidl.IEventListener;
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 java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/* JADX INFO: loaded from: classes.dex */
public class BinderHttpd {
    private static final String TAG = "BinderHttpd";
    private IHttpRequestHandler mDefaultHttpHandler = new EmptyHttpRequestHandler();
    private IEventRequestHandler mEventHandler = new DefaultEventRequestHandler();
    private final Map<String, IHttpRequestHandler> mRequestHandlers = new ConcurrentHashMap();
    private final Map<IBinder, String> mGlobalEventListeners = new ConcurrentHashMap();
    private final Map<String, Map<IBinder, String>> mEventListeners = new ConcurrentHashMap();
    private final IServer.Stub mServer = new IServer.Stub() { // from class: com.ifpdos.sdk.httpd.binder.BinderHttpd.1
        @Override // com.ifpdos.sdk.httpd.binder.aidl.IServer
        public Response sendRequest(Request request) {
            if (request != null && request.getRequestLine() != null && request.getRequestLine().check()) {
                IHttpRequestHandler iHttpRequestHandler = (IHttpRequestHandler) BinderHttpd.this.mRequestHandlers.get(request.getUrl());
                if (iHttpRequestHandler == null) {
                    iHttpRequestHandler = BinderHttpd.this.mDefaultHttpHandler;
                }
                return iHttpRequestHandler.onRequest(BinderHttpd.this, request);
            }
            return new Response.Builder().setStatus(HttpStatus.BAD_REQUEST).build();
        }

        @Override // com.ifpdos.sdk.httpd.binder.aidl.IServer
        public Response addEventListener(Request request, IEventListener listener) {
            return BinderHttpd.this.mEventHandler.addEventListener(BinderHttpd.this, request, listener);
        }

        @Override // com.ifpdos.sdk.httpd.binder.aidl.IServer
        public Response removeEventListener(Request request, IEventListener listener) {
            return BinderHttpd.this.mEventHandler.removeEventListener(BinderHttpd.this, request, listener);
        }
    };

    public interface IEventRequestHandler {
        Response addEventListener(BinderHttpd httpd, Request request, IEventListener listener);

        Response removeEventListener(BinderHttpd httpd, Request request, IEventListener listener);
    }

    public interface IHttpRequestHandler {
        Response onRequest(BinderHttpd httpd, Request request);
    }

    public void sendEvent(String event, String data) {
        dispatchEvent(this.mGlobalEventListeners.keySet().iterator(), event, data);
        Map<IBinder, String> map = this.mEventListeners.get(event);
        if (map != null) {
            dispatchEvent(map.keySet().iterator(), event, data);
        }
    }

    private void dispatchEvent(Iterator<IBinder> iterator, String event, String data) {
        while (iterator.hasNext()) {
            try {
                IEventListener.Stub.asInterface(iterator.next()).onEvent(event, data);
            } catch (Exception unused) {
                iterator.remove();
            }
        }
    }

    public void start(String host) {
        try {
            if (SelinuxProUtil.ignoreServiceManager()) {
                Log.d(TAG, "selinux restrictions,addService cannot be invoked and bindService is required to connect");
            } else {
                Class.forName("android.os.ServiceManager").getMethod("addService", String.class, IBinder.class).invoke(null, host, this.mServer);
                Log.d(TAG, "add service success");
            }
        } catch (Exception unused) {
            Log.d(TAG, "addService error, need bindService to connect");
        }
    }

    public IBinder getBinder() {
        return this.mServer;
    }

    public void setEventHandler(IEventRequestHandler handler) {
        this.mEventHandler = handler;
    }

    public void setDefaultHttpHandler(IHttpRequestHandler handler) {
        this.mDefaultHttpHandler = handler;
    }

    public void bindHttpRequest(String uri, IHttpRequestHandler handler) {
        this.mRequestHandlers.put(uri, handler);
    }

    public void unbindHttpRequest(String uri) {
        this.mRequestHandlers.remove(uri);
    }

    public void addEventListener(IEventListener listener) {
        this.mGlobalEventListeners.put(listener.asBinder(), "*");
    }

    public void removeEventListener(IEventListener listener) {
        this.mGlobalEventListeners.remove(listener.asBinder());
    }

    public synchronized void addEventListener(IEventListener listener, String event) {
        Map<IBinder, String> concurrentHashMap = this.mEventListeners.get(event);
        if (concurrentHashMap == null) {
            concurrentHashMap = new ConcurrentHashMap<>();
            this.mEventListeners.put(event, concurrentHashMap);
        }
        concurrentHashMap.put(listener.asBinder(), event);
    }

    public boolean removeEventListener(String event, IEventListener listener) {
        Map<IBinder, String> map = this.mEventListeners.get(event);
        if (map == null || !map.containsKey(listener.asBinder())) {
            return false;
        }
        map.remove(listener.asBinder());
        return true;
    }

    public static final class EmptyHttpRequestHandler implements IHttpRequestHandler {
        private static final Response RESPONSE = new Response.Builder().setStatus(HttpStatus.NOT_FOUND).build();

        @Override // com.ifpdos.sdk.httpd.binder.BinderHttpd.IHttpRequestHandler
        public Response onRequest(BinderHttpd httpd, Request request) {
            return RESPONSE;
        }
    }

    private static final class DefaultEventRequestHandler implements IEventRequestHandler {
        private static final Response RESPONSE = new Response.Builder().setStatus(HttpStatus.NOT_IMPLEMENTED).build();

        private DefaultEventRequestHandler() {
        }

        @Override // com.ifpdos.sdk.httpd.binder.BinderHttpd.IEventRequestHandler
        public Response addEventListener(BinderHttpd httpd, Request request, IEventListener listener) {
            return RESPONSE;
        }

        @Override // com.ifpdos.sdk.httpd.binder.BinderHttpd.IEventRequestHandler
        public Response removeEventListener(BinderHttpd httpd, Request request, IEventListener listener) {
            return RESPONSE;
        }
    }
}
