#if UNITY_IOS && !UNITY_EDITOR
using System;
using System.Runtime.InteropServices;

namespace Combo
{
    /// <summary>
    /// HttpDns 的 iOS 平台桥接——经 P/Invoke 调 HttpDnsBridge.mm（__Internal 静态链接）。
    /// </summary>
    internal static class HttpDnsIOS
    {
        // 返回 IntPtr（而非 string）以显式管理内存：native 侧 strdup 分配，C# 读取后
        // 调 HttpDns_Free 释放，不依赖 Mono/IL2CPP 对字符串返回值的自动释放差异。
        [DllImport("__Internal")]
        private static extern IntPtr HttpDns_Resolve(string domain);

        [DllImport("__Internal")]
        private static extern void HttpDns_Free(IntPtr ptr);

        // 返回 0/1（用 int 而非 bool，规避跨 P/Invoke 的 bool ABI 差异）。
        [DllImport("__Internal")]
        private static extern int HttpDns_IsAvailable();

        internal static HttpDnsResult ResolveSync(string domain)
        {
            IntPtr ptr = HttpDns_Resolve(domain);
            if (ptr == IntPtr.Zero)
                return null;

            string raw = Marshal.PtrToStringAnsi(ptr);
            HttpDns_Free(ptr);

            return HttpDnsBridgeFormat.Parse(raw, domain);
        }

        internal static bool IsAvailable()
        {
            return HttpDns_IsAvailable() != 0;
        }
    }
}
#endif
