#if UNITY_ANDROID && !UNITY_EDITOR
using UnityEngine;

namespace Combo
{
    /// <summary>
    /// HttpDns 的 Android 平台桥接——经 AndroidJavaClass 调 HttpDnsBridge.java。
    /// </summary>
    internal static class HttpDnsAndroid
    {
        private static readonly object _bridgeLock = new object();
        private static AndroidJavaClass _bridge;

        // 加锁懒加载：ResolveSync 会在 ThreadPool 与 Mirror 等多个工作线程并发调用；
        // 不加锁的懒加载可能创建（并泄漏）重复的 JNI 全局引用，且实例发布无内存屏障。
        private static AndroidJavaClass GetBridge()
        {
            lock (_bridgeLock)
            {
                if (_bridge == null)
                    _bridge = new AndroidJavaClass("com.seayoo.sdk.httpdns.HttpDnsBridge");
                return _bridge;
            }
        }

        // JNI 要求每个线程在调用前先附加到 JVM；ThreadPool 线程默认未附加。
        internal static HttpDnsResult ResolveSync(string domain)
        {
            AndroidJNI.AttachCurrentThread();
            try
            {
                string raw = GetBridge().CallStatic<string>("resolve", domain);
                return HttpDnsBridgeFormat.Parse(raw, domain);
            }
            finally
            {
                AndroidJNI.DetachCurrentThread();
            }
        }

        internal static bool IsAvailable()
        {
            // IsAvailable 经 ComboSDK.IsFeatureAvailable 在主线程调用（已附加 JVM），
            // 与既有 NativeAndroid.IsFeatureAvailable 一致，无需 Attach/Detach。
            return GetBridge().CallStatic<bool>("isAvailable");
        }
    }
}
#endif
