react-native-zeroconf 0.13.8 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +49 -0
- package/README.md +489 -65
- package/android/build.gradle +23 -24
- package/android/src/main/AndroidManifest.xml +5 -2
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroConfImplFactory.java +10 -3
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfModule.java +3 -2
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +83 -22
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/rx2dnssd/DnssdImpl.java +61 -16
- package/android/src/main/java/com/github/druk/dnssd/BaseListener.java +33 -0
- package/android/src/main/java/com/github/druk/dnssd/BrowseListener.java +67 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSRecord.java +47 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSD.java +650 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDBindable.java +67 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDEmbedded.java +135 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDException.java +66 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDRecordRegistrar.java +55 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDRegistration.java +54 -0
- package/android/src/main/java/com/github/druk/dnssd/DNSSDService.java +35 -0
- package/android/src/main/java/com/github/druk/dnssd/DomainListener.java +57 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalBrowseListener.java +76 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSD.java +870 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRecordRegistrar.java +30 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDRegistration.java +34 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDNSSDService.java +29 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalDomainListener.java +62 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalQueryListener.java +61 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalRegisterListener.java +51 -0
- package/android/src/main/java/com/github/druk/dnssd/InternalResolveListener.java +58 -0
- package/android/src/main/java/com/github/druk/dnssd/NSClass.java +16 -0
- package/android/src/main/java/com/github/druk/dnssd/NSType.java +58 -0
- package/android/src/main/java/com/github/druk/dnssd/QueryListener.java +54 -0
- package/android/src/main/java/com/github/druk/dnssd/RegisterListener.java +46 -0
- package/android/src/main/java/com/github/druk/dnssd/RegisterRecordListener.java +35 -0
- package/android/src/main/java/com/github/druk/dnssd/ResolveListener.java +55 -0
- package/android/src/main/java/com/github/druk/dnssd/TXTRecord.java +293 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/BonjourService.java +400 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2BrowseListener.java +55 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2Dnssd.java +127 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdBindable.java +35 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdCommon.java +280 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdEmbedded.java +31 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2QueryListener.java +70 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2RegisterListener.java +47 -0
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2ResolveListener.java +51 -0
- package/android/src/main/jni/Android.mk +95 -0
- package/android/src/main/jni/Application.mk +3 -0
- package/android/src/main/jni/DNSSD.java.h +290 -0
- package/android/src/main/jni/JNISupport.c +1140 -0
- package/android/src/main/jni/mdnsresponder/Android.bp +215 -0
- package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.c +75 -0
- package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.h +41 -0
- package/android/src/main/jni/mdnsresponder/Clients/Makefile +54 -0
- package/android/src/main/jni/mdnsresponder/Clients/ReadMe.txt +25 -0
- package/android/src/main/jni/mdnsresponder/Clients/dns-sd.c +1351 -0
- package/android/src/main/jni/mdnsresponder/LICENSE +13 -0
- package/android/src/main/jni/mdnsresponder/MODULE_LICENSE_APACHE2 +0 -0
- package/android/src/main/jni/mdnsresponder/Makefile +41 -0
- package/android/src/main/jni/mdnsresponder/NOTICE +13 -0
- package/android/src/main/jni/mdnsresponder/PrivateDNS.txt +275 -0
- package/android/src/main/jni/mdnsresponder/README.txt +166 -0
- package/android/src/main/jni/mdnsresponder/README.version +3 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Iphlpapi.h +1 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/README +3 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Resource.h +1 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Ws2tcpip.h +1 -0
- package/android/src/main/jni/mdnsresponder/android/caseMapping/ipExport.h +1 -0
- package/android/src/main/jni/mdnsresponder/android/windows_firewall_dummy.c +10 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/DNSCommon.c +3157 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/DNSCommon.h +292 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/DNSDigest.c +1579 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/Implementer Notes.txt +66 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/mDNS.c +11469 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/mDNSDebug.h +164 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/mDNSEmbeddedAPI.h +2974 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/uDNS.c +4969 -0
- package/android/src/main/jni/mdnsresponder/mDNSCore/uDNS.h +132 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Client.c +223 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.c +91 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.h +18 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Identify.c +378 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Makefile +520 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/NetMonitor.c +1010 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/PosixDaemon.c +329 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ProxyResponder.c +300 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ReadMe.txt +314 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Responder.c +792 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Services.txt +36 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/libnss_mdns.8 +148 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.c +1685 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSPosix.h +88 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSUNP.c +726 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mDNSUNP.h +130 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mdnsd.sh +73 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_ReadMe.txt +125 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.c +2723 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf +13 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf.5 +135 -0
- package/android/src/main/jni/mdnsresponder/mDNSPosix/parselog.py +247 -0
- package/android/src/main/jni/mdnsresponder/mDNSResponder.sln +400 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/CommonServices.h +1537 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.c +3075 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.h +1607 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/GenLinkedList.c +319 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/GenLinkedList.h +90 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/PlatformCommon.c +220 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/PlatformCommon.h +18 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dns-sd.1 +194 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dns_sd.h +2452 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.8 +69 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.c +3146 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.conf +60 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.h +163 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_lexer.l +84 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_parser.y +585 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientlib.c +368 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientshim.c +802 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_clientstub.c +1988 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_ipc.c +161 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnssd_ipc.h +219 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/mDNS.1 +198 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSDebug.c +93 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSResponder.8 +116 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/uds_daemon.c +4758 -0
- package/android/src/main/jni/mdnsresponder/mDNSShared/uds_daemon.h +80 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.cpp +441 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.h +156 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.cpp +59 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.h +48 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.cpp +301 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.h +105 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.cpp +380 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.def +20 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.h +84 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.rc +141 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.vcproj +727 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelDll.rc +123 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.cpp +373 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.h +48 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.rc +123 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.vcproj +764 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.rc +270 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.vcproj +487 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.rc +134 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.vcproj +518 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.cpp +197 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.h +87 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.cpp +387 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.h +75 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.cpp +544 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.h +107 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.cpp +273 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.h +123 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.cpp +115 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.h +54 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.dll.manifest +10 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.exe.manifest +17 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.manifest +17 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.rc2 +13 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel64.manifest +17 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/EnergySaver.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/controlpanel.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/failure.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/success.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/resource.h +56 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.cpp +20 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.h +64 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.rc +102 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dllmain.c +112 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.def +48 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.vcproj +472 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/resource.h +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/AssemblyInfo.cpp +84 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/PString.h +70 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.cpp +22 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.h +33 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.cpp +1234 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.h +1392 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.rc +113 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.vcproj +446 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/resource.h +3 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.cpp +693 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.h +52 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.vcproj +324 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.cpp +208 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.def +35 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.idl +491 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rc +126 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rgs +11 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.vcproj +625 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSD.cpp +892 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.cpp +31 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.h +133 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.rgs +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.cpp +101 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.h +185 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.rgs +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.cpp +2095 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.h +429 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.rgs +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.cpp +344 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.h +102 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.cpp +381 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.h +203 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.rgs +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/_IDNSSDEvents_CP.h +358 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.c +51 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.h +49 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/resource.h +30 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/stdafx.h +88 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.sln +21 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.vcproj +253 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.sln +21 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.vcproj +267 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc +323 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc2 +20 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Resource.h +53 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.cpp +71 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.h +62 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.cpp +111 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.h +68 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.cpp +1426 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.h +131 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.cpp +109 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.h +53 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.cpp +18 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.h +48 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcc +37 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcp +868 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcw +29 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.ico +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc +194 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc2 +13 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/newres.h +28 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/resource.h +22 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.cpp +92 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.h +57 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.cpp +394 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.h +84 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.cpp +18 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.h +46 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/Java.vcproj +111 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/jdns_sd.rc +62 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile +143 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile64 +143 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.c +581 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.rc +103 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.vcproj +409 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/Prefix.h +28 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/resource.h +27 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.c +128 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.h +70 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/README.txt +85 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/RegNames.h +57 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.c +338 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.h +42 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLog.mc +11 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLogMessages.bin +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.cpp +484 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.h +79 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Prefix.h +30 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.c +2669 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.h +30 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.mcp +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.rc +114 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.vcproj +562 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/main.c +32 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder.manifest +12 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder64.manifest +12 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resource.h +17 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resrc1.h +15 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.cpp +165 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.h +36 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.cpp +93 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.h +34 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinVersRes.h +35 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/isocode.h +135 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.c +268 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.h +54 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.c +5200 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.h +208 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/ReadMe.txt +15 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.c +2430 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.def +24 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.rc +104 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.vcproj +457 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/resource.h +27 -0
- package/android/src/main/jni/mdnsresponder/mdnsd.rc +7 -0
- package/android/src/main/jni/nameser.h +588 -0
- package/dist/index.js +160 -1
- package/index.d.ts +91 -0
- package/ios/RNZeroconf/RNNetServiceSerializer.m +7 -3
- package/ios/RNZeroconf/RNZeroconf.m +8 -0
- package/package.json +25 -17
- package/src/index.js +183 -0
package/android/build.gradle
CHANGED
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
buildscript {
|
|
2
|
-
repositories {
|
|
3
|
-
google()
|
|
4
|
-
mavenCentral()
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
dependencies {
|
|
8
|
-
classpath 'com.android.tools.build:gradle:3.5.1'
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
1
|
apply plugin: 'com.android.library'
|
|
13
2
|
|
|
14
3
|
def safeExtGet(prop, fallback) {
|
|
@@ -16,34 +5,44 @@ def safeExtGet(prop, fallback) {
|
|
|
16
5
|
}
|
|
17
6
|
|
|
18
7
|
android {
|
|
19
|
-
compileSdkVersion safeExtGet('compileSdkVersion',
|
|
20
|
-
|
|
8
|
+
compileSdkVersion safeExtGet('compileSdkVersion', 34)
|
|
9
|
+
ndkVersion safeExtGet('ndkVersion', '27.1.12297006')
|
|
21
10
|
|
|
22
11
|
defaultConfig {
|
|
23
|
-
minSdkVersion safeExtGet('minSdkVersion',
|
|
24
|
-
targetSdkVersion safeExtGet('targetSdkVersion',
|
|
12
|
+
minSdkVersion safeExtGet('minSdkVersion', 21)
|
|
13
|
+
targetSdkVersion safeExtGet('targetSdkVersion', 34)
|
|
25
14
|
versionCode 1
|
|
26
15
|
versionName "1.0"
|
|
16
|
+
|
|
27
17
|
ndk {
|
|
28
|
-
abiFilters "armeabi-v7a", "x86"
|
|
18
|
+
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
externalNativeBuild {
|
|
24
|
+
ndkBuild {
|
|
25
|
+
path "src/main/jni/Android.mk"
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
28
|
|
|
32
29
|
compileOptions {
|
|
33
|
-
sourceCompatibility =
|
|
34
|
-
targetCompatibility =
|
|
30
|
+
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
31
|
+
targetCompatibility = JavaVersion.VERSION_1_8
|
|
35
32
|
}
|
|
33
|
+
|
|
34
|
+
// Namespace for Android Gradle Plugin 8.0+
|
|
35
|
+
namespace 'com.balthazargronon.RCTZeroconf'
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
repositories {
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
google()
|
|
40
|
+
mavenCentral()
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
dependencies {
|
|
44
44
|
implementation "com.facebook.react:react-native:${safeExtGet('reactNativeVersion', '+')}"
|
|
45
|
-
//
|
|
46
|
-
api
|
|
47
|
-
|
|
48
|
-
api group: 'org.apache.commons', name: 'commons-lang3', version: '3.11'
|
|
45
|
+
// RxJava2 for Rx2Dnssd (bundled from Discord's RxDNSSD fork)
|
|
46
|
+
api 'io.reactivex.rxjava2:rxjava:2.2.21'
|
|
47
|
+
api 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
|
49
48
|
}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
2
|
-
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
2
|
+
<uses-permission android:name="android.permission.INTERNET" />
|
|
3
|
+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
4
|
+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
5
|
+
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
|
|
3
6
|
</manifest>
|
|
@@ -5,9 +5,9 @@ import com.balthazargronon.RCTZeroconf.rx2dnssd.DnssdImpl;
|
|
|
5
5
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
6
6
|
import com.facebook.react.bridge.ReactContext;
|
|
7
7
|
|
|
8
|
-
import
|
|
9
|
-
|
|
8
|
+
import java.util.ArrayList;
|
|
10
9
|
import java.util.HashMap;
|
|
10
|
+
import java.util.List;
|
|
11
11
|
import java.util.Map;
|
|
12
12
|
|
|
13
13
|
public class ZeroConfImplFactory {
|
|
@@ -25,7 +25,7 @@ public class ZeroConfImplFactory {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
public Zeroconf getZeroconf(String implType) {
|
|
28
|
-
if (
|
|
28
|
+
if (implType == null || implType.trim().isEmpty()) implType = ZeroConfImplFactory.NSD_IMPL;
|
|
29
29
|
return getOrCreateImpl(implType);
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -46,4 +46,11 @@ public class ZeroConfImplFactory {
|
|
|
46
46
|
return zeroconfMap.get(implType);
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Implementations that have already been created, without instantiating new ones
|
|
51
|
+
*/
|
|
52
|
+
public List<Zeroconf> getCreatedImpls() {
|
|
53
|
+
return new ArrayList<>(zeroconfMap.values());
|
|
54
|
+
}
|
|
55
|
+
|
|
49
56
|
}
|
|
@@ -104,8 +104,9 @@ public class ZeroconfModule extends ReactContextBaseJavaModule {
|
|
|
104
104
|
public void onCatalystInstanceDestroy() {
|
|
105
105
|
super.onCatalystInstanceDestroy();
|
|
106
106
|
try {
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
for (Zeroconf impl : zeroConfFactory.getCreatedImpls()) {
|
|
108
|
+
impl.stop();
|
|
109
|
+
}
|
|
109
110
|
} catch (Throwable e) {
|
|
110
111
|
Log.e(getClass().getName(), e.getMessage(), e);
|
|
111
112
|
sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_ERROR, "Exception During Catalyst Destroy: " + e.getMessage());
|
|
@@ -6,6 +6,9 @@ import android.net.nsd.NsdManager;
|
|
|
6
6
|
import android.net.nsd.NsdServiceInfo;
|
|
7
7
|
import android.net.wifi.WifiManager;
|
|
8
8
|
import android.os.Build;
|
|
9
|
+
import android.os.Handler;
|
|
10
|
+
import android.os.Looper;
|
|
11
|
+
import android.util.Log;
|
|
9
12
|
|
|
10
13
|
import com.balthazargronon.RCTZeroconf.Zeroconf;
|
|
11
14
|
import com.balthazargronon.RCTZeroconf.ZeroconfModule;
|
|
@@ -18,13 +21,17 @@ import com.facebook.react.bridge.WritableMap;
|
|
|
18
21
|
import com.facebook.react.bridge.WritableNativeArray;
|
|
19
22
|
import com.facebook.react.bridge.WritableNativeMap;
|
|
20
23
|
|
|
21
|
-
import java.io.UnsupportedEncodingException;
|
|
22
24
|
import java.net.InetAddress;
|
|
23
|
-
import java.
|
|
25
|
+
import java.nio.charset.StandardCharsets;
|
|
26
|
+
import java.util.ArrayDeque;
|
|
24
27
|
import java.util.Locale;
|
|
25
28
|
import java.util.Map;
|
|
29
|
+
import java.util.concurrent.ConcurrentHashMap;
|
|
26
30
|
|
|
27
31
|
public class NsdServiceImpl implements Zeroconf {
|
|
32
|
+
private static final String TAG = "NsdServiceImpl";
|
|
33
|
+
private static final long RESOLVE_RETRY_DELAY_MS = 100;
|
|
34
|
+
|
|
28
35
|
private NsdManager mNsdManager;
|
|
29
36
|
private NsdManager.DiscoveryListener mDiscoveryListener;
|
|
30
37
|
private WifiManager.MulticastLock multicastLock;
|
|
@@ -32,10 +39,15 @@ public class NsdServiceImpl implements Zeroconf {
|
|
|
32
39
|
private ZeroconfModule zeroconfModule;
|
|
33
40
|
private ReactApplicationContext reactApplicationContext;
|
|
34
41
|
|
|
42
|
+
// NsdManager can only resolve one service at a time before API 34, so resolves are queued
|
|
43
|
+
private final ArrayDeque<NsdServiceInfo> mResolveQueue = new ArrayDeque<>();
|
|
44
|
+
private boolean mIsResolving = false;
|
|
45
|
+
private final Handler mHandler = new Handler(Looper.getMainLooper());
|
|
46
|
+
|
|
35
47
|
public NsdServiceImpl(ZeroconfModule zeroconfModule, ReactApplicationContext reactApplicationContext) {
|
|
36
48
|
this.zeroconfModule = zeroconfModule;
|
|
37
49
|
this.reactApplicationContext = reactApplicationContext;
|
|
38
|
-
mPublishedServices = new
|
|
50
|
+
mPublishedServices = new ConcurrentHashMap<String, NsdManager.RegistrationListener>();
|
|
39
51
|
}
|
|
40
52
|
|
|
41
53
|
@Override
|
|
@@ -68,29 +80,29 @@ public class NsdServiceImpl implements Zeroconf {
|
|
|
68
80
|
|
|
69
81
|
@Override
|
|
70
82
|
public void onDiscoveryStarted(String serviceType) {
|
|
71
|
-
|
|
83
|
+
Log.d(TAG, "Discovery started");
|
|
72
84
|
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_START, null);
|
|
73
85
|
}
|
|
74
86
|
|
|
75
87
|
@Override
|
|
76
88
|
public void onDiscoveryStopped(String serviceType) {
|
|
77
|
-
|
|
89
|
+
Log.d(TAG, "Discovery stopped");
|
|
78
90
|
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_STOP, null);
|
|
79
91
|
}
|
|
80
92
|
|
|
81
93
|
@Override
|
|
82
94
|
public void onServiceFound(NsdServiceInfo serviceInfo) {
|
|
83
|
-
|
|
95
|
+
Log.d(TAG, "Service found");
|
|
84
96
|
WritableMap service = new WritableNativeMap();
|
|
85
97
|
service.putString(ZeroconfModule.KEY_SERVICE_NAME, serviceInfo.getServiceName());
|
|
86
98
|
|
|
87
99
|
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_FOUND, service);
|
|
88
|
-
|
|
100
|
+
enqueueResolve(serviceInfo);
|
|
89
101
|
}
|
|
90
102
|
|
|
91
103
|
@Override
|
|
92
104
|
public void onServiceLost(NsdServiceInfo serviceInfo) {
|
|
93
|
-
|
|
105
|
+
Log.d(TAG, "Service lost");
|
|
94
106
|
WritableMap service = new WritableNativeMap();
|
|
95
107
|
service.putString(ZeroconfModule.KEY_SERVICE_NAME, serviceInfo.getServiceName());
|
|
96
108
|
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_REMOVE, service);
|
|
@@ -103,8 +115,19 @@ public class NsdServiceImpl implements Zeroconf {
|
|
|
103
115
|
|
|
104
116
|
@Override
|
|
105
117
|
public void stop() {
|
|
106
|
-
if (mDiscoveryListener != null) {
|
|
107
|
-
|
|
118
|
+
if (mDiscoveryListener != null && mNsdManager != null) {
|
|
119
|
+
try {
|
|
120
|
+
mNsdManager.stopServiceDiscovery(mDiscoveryListener);
|
|
121
|
+
} catch (IllegalArgumentException e) {
|
|
122
|
+
// Listener was never registered or already unregistered (e.g. discovery failed to start)
|
|
123
|
+
Log.w(TAG, "stopServiceDiscovery failed", e);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
mHandler.removeCallbacksAndMessages(null);
|
|
128
|
+
synchronized (mResolveQueue) {
|
|
129
|
+
mResolveQueue.clear();
|
|
130
|
+
mIsResolving = false;
|
|
108
131
|
}
|
|
109
132
|
|
|
110
133
|
if (multicastLock != null) {
|
|
@@ -159,21 +182,60 @@ public class NsdServiceImpl implements Zeroconf {
|
|
|
159
182
|
return reactApplicationContext;
|
|
160
183
|
}
|
|
161
184
|
|
|
185
|
+
private void enqueueResolve(NsdServiceInfo serviceInfo) {
|
|
186
|
+
synchronized (mResolveQueue) {
|
|
187
|
+
mResolveQueue.add(serviceInfo);
|
|
188
|
+
}
|
|
189
|
+
resolveNext();
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
private void resolveNext() {
|
|
193
|
+
NsdServiceInfo next;
|
|
194
|
+
synchronized (mResolveQueue) {
|
|
195
|
+
if (mIsResolving || mResolveQueue.isEmpty()) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
next = mResolveQueue.poll();
|
|
199
|
+
mIsResolving = true;
|
|
200
|
+
}
|
|
201
|
+
try {
|
|
202
|
+
getNsdManager().resolveService(next, new ZeroResolveListener());
|
|
203
|
+
} catch (Throwable e) {
|
|
204
|
+
Log.e(TAG, "resolveService failed", e);
|
|
205
|
+
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_ERROR, "Resolving service failed: " + e.getMessage());
|
|
206
|
+
onResolveDone();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
private void onResolveDone() {
|
|
211
|
+
synchronized (mResolveQueue) {
|
|
212
|
+
mIsResolving = false;
|
|
213
|
+
}
|
|
214
|
+
resolveNext();
|
|
215
|
+
}
|
|
216
|
+
|
|
162
217
|
private class ZeroResolveListener implements NsdManager.ResolveListener {
|
|
163
218
|
@Override
|
|
164
219
|
public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) {
|
|
165
220
|
if (errorCode == NsdManager.FAILURE_ALREADY_ACTIVE) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
221
|
+
// Another resolve (possibly from another app or listener) is in flight: retry shortly
|
|
222
|
+
synchronized (mResolveQueue) {
|
|
223
|
+
mResolveQueue.addFirst(serviceInfo);
|
|
224
|
+
mIsResolving = false;
|
|
225
|
+
}
|
|
226
|
+
mHandler.postDelayed(NsdServiceImpl.this::resolveNext, RESOLVE_RETRY_DELAY_MS);
|
|
227
|
+
return;
|
|
170
228
|
}
|
|
229
|
+
String error = "Resolving service failed with code: " + errorCode;
|
|
230
|
+
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_ERROR, error);
|
|
231
|
+
onResolveDone();
|
|
171
232
|
}
|
|
172
233
|
|
|
173
234
|
@Override
|
|
174
235
|
public void onServiceResolved(NsdServiceInfo serviceInfo) {
|
|
175
236
|
WritableMap service = serviceInfoToMap(serviceInfo);
|
|
176
237
|
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_RESOLVE, service);
|
|
238
|
+
onResolveDone();
|
|
177
239
|
}
|
|
178
240
|
}
|
|
179
241
|
|
|
@@ -194,7 +256,8 @@ public class NsdServiceImpl implements Zeroconf {
|
|
|
194
256
|
|
|
195
257
|
@Override
|
|
196
258
|
public void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
|
|
197
|
-
|
|
259
|
+
String error = "Registering service " + serviceInfo.getServiceName() + " failed with code: " + errorCode;
|
|
260
|
+
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_ERROR, error);
|
|
198
261
|
}
|
|
199
262
|
|
|
200
263
|
@Override
|
|
@@ -207,7 +270,8 @@ public class NsdServiceImpl implements Zeroconf {
|
|
|
207
270
|
|
|
208
271
|
@Override
|
|
209
272
|
public void onUnregistrationFailed(NsdServiceInfo serviceInfo, int errorCode) {
|
|
210
|
-
|
|
273
|
+
String error = "Unregistering service " + serviceInfo.getServiceName() + " failed with code: " + errorCode;
|
|
274
|
+
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_ERROR, error);
|
|
211
275
|
}
|
|
212
276
|
}
|
|
213
277
|
|
|
@@ -234,13 +298,10 @@ public class NsdServiceImpl implements Zeroconf {
|
|
|
234
298
|
|
|
235
299
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
236
300
|
Map<String, byte[]> attributes = serviceInfo.getAttributes();
|
|
237
|
-
|
|
238
|
-
|
|
301
|
+
if (attributes != null) {
|
|
302
|
+
for (String key : attributes.keySet()) {
|
|
239
303
|
byte[] recordValue = attributes.get(key);
|
|
240
|
-
txtRecords.putString(String.format(Locale.getDefault(), "%s", key),
|
|
241
|
-
} catch (UnsupportedEncodingException e) {
|
|
242
|
-
String error = "Failed to encode txtRecord: " + e;
|
|
243
|
-
zeroconfModule.sendEvent(getReactApplicationContext(), ZeroconfModule.EVENT_ERROR, error);
|
|
304
|
+
txtRecords.putString(String.format(Locale.getDefault(), "%s", key), recordValue != null ? new String(recordValue, StandardCharsets.UTF_8) : "");
|
|
244
305
|
}
|
|
245
306
|
}
|
|
246
307
|
}
|
|
@@ -16,7 +16,7 @@ import com.facebook.react.bridge.WritableNativeArray;
|
|
|
16
16
|
import com.facebook.react.bridge.WritableNativeMap;
|
|
17
17
|
import com.github.druk.rx2dnssd.BonjourService;
|
|
18
18
|
import com.github.druk.rx2dnssd.Rx2Dnssd;
|
|
19
|
-
import com.github.druk.rx2dnssd.
|
|
19
|
+
import com.github.druk.rx2dnssd.Rx2DnssdEmbedded;
|
|
20
20
|
|
|
21
21
|
import java.net.InetAddress;
|
|
22
22
|
import java.util.HashMap;
|
|
@@ -26,11 +26,14 @@ import java.util.List;
|
|
|
26
26
|
|
|
27
27
|
import javax.annotation.Nullable;
|
|
28
28
|
|
|
29
|
+
import io.reactivex.Flowable;
|
|
29
30
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
30
31
|
import io.reactivex.disposables.Disposable;
|
|
31
32
|
import io.reactivex.schedulers.Schedulers;
|
|
32
33
|
|
|
33
34
|
public class DnssdImpl implements Zeroconf {
|
|
35
|
+
private static final String TAG = "DnssdImpl";
|
|
36
|
+
|
|
34
37
|
private Rx2Dnssd rxDnssd;
|
|
35
38
|
|
|
36
39
|
@Nullable
|
|
@@ -49,7 +52,17 @@ public class DnssdImpl implements Zeroconf {
|
|
|
49
52
|
this.reactApplicationContext = reactApplicationContext;
|
|
50
53
|
mPublishedServices = new HashMap<String, BonjourService>();
|
|
51
54
|
mRegisteredDisposables = new HashMap<String, Disposable>();
|
|
52
|
-
rxDnssd =
|
|
55
|
+
rxDnssd = createDnssd(reactApplicationContext);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Creates the Rx2Dnssd implementation.
|
|
60
|
+
* Always uses embedded mDNSResponder since it works across all Android versions.
|
|
61
|
+
* The daemonic version (Rx2DnssdBindable) is unreliable on Android as the
|
|
62
|
+
* system daemon at /dev/socket/mdnsd doesn't exist on most devices.
|
|
63
|
+
*/
|
|
64
|
+
private Rx2Dnssd createDnssd(Context context) {
|
|
65
|
+
return new Rx2DnssdEmbedded(context);
|
|
53
66
|
}
|
|
54
67
|
|
|
55
68
|
@Override
|
|
@@ -63,21 +76,50 @@ public class DnssdImpl implements Zeroconf {
|
|
|
63
76
|
multicastLock.acquire();
|
|
64
77
|
}
|
|
65
78
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
79
|
+
String serviceType = getServiceType(type, protocol);
|
|
80
|
+
Log.d(TAG, "Starting DNSSD scan for: " + serviceType);
|
|
81
|
+
|
|
82
|
+
// Emit start event
|
|
83
|
+
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_START, null);
|
|
84
|
+
|
|
85
|
+
browseDisposable = rxDnssd.browse(serviceType, "local.")
|
|
86
|
+
.doOnNext(bonjourService -> {
|
|
87
|
+
if (!bonjourService.isLost()) {
|
|
88
|
+
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_FOUND, serviceNameToMap(bonjourService));
|
|
89
|
+
}
|
|
90
|
+
})
|
|
91
|
+
// Resolve each service independently so a single failure doesn't end the whole browse
|
|
92
|
+
.flatMap(bonjourService -> bonjourService.isLost()
|
|
93
|
+
? Flowable.just(bonjourService)
|
|
94
|
+
: Flowable.just(bonjourService)
|
|
95
|
+
.compose(rxDnssd.resolve())
|
|
96
|
+
.compose(rxDnssd.queryRecords())
|
|
97
|
+
.onErrorResumeNext((Throwable throwable) -> {
|
|
98
|
+
Log.e(TAG, "Error resolving service: ", throwable);
|
|
99
|
+
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_ERROR, "Resolving service failed: " + throwable.getMessage());
|
|
100
|
+
return Flowable.empty();
|
|
101
|
+
}))
|
|
69
102
|
.subscribeOn(Schedulers.io())
|
|
70
103
|
.observeOn(AndroidSchedulers.mainThread())
|
|
71
104
|
.subscribe(bonjourService -> {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
105
|
+
if (bonjourService.isLost()) {
|
|
106
|
+
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_REMOVE, serviceNameToMap(bonjourService));
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_RESOLVE, serviceInfoToMap(bonjourService));
|
|
75
110
|
}, throwable -> {
|
|
76
|
-
Log.e(
|
|
77
|
-
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_ERROR, throwable.getMessage());
|
|
111
|
+
Log.e(TAG, "Error browsing services: ", throwable);
|
|
112
|
+
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_ERROR, "Browsing services failed: " + throwable.getMessage());
|
|
113
|
+
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_STOP, null);
|
|
78
114
|
});
|
|
79
115
|
}
|
|
80
116
|
|
|
117
|
+
private WritableMap serviceNameToMap(BonjourService serviceInfo) {
|
|
118
|
+
WritableMap service = new WritableNativeMap();
|
|
119
|
+
service.putString(ZeroconfModule.KEY_SERVICE_NAME, serviceInfo.getServiceName());
|
|
120
|
+
return service;
|
|
121
|
+
}
|
|
122
|
+
|
|
81
123
|
private String getServiceType(String type, String protocol) {
|
|
82
124
|
return String.format("_%s._%s", type, protocol);
|
|
83
125
|
}
|
|
@@ -86,10 +128,11 @@ public class DnssdImpl implements Zeroconf {
|
|
|
86
128
|
WritableMap service = new WritableNativeMap();
|
|
87
129
|
service.putString(ZeroconfModule.KEY_SERVICE_NAME, serviceInfo.getServiceName());
|
|
88
130
|
final List<InetAddress> hostList = serviceInfo.getInetAddresses();
|
|
89
|
-
final String
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
131
|
+
final String hostname = serviceInfo.getHostname();
|
|
132
|
+
final String fullServiceName = hostname != null
|
|
133
|
+
? hostname + serviceInfo.getRegType()
|
|
134
|
+
: serviceInfo.getServiceName();
|
|
135
|
+
service.putString(ZeroconfModule.KEY_SERVICE_HOST, hostname != null ? hostname : serviceInfo.getServiceName());
|
|
93
136
|
|
|
94
137
|
WritableArray addresses = new WritableNativeArray();
|
|
95
138
|
for (InetAddress host : hostList) {
|
|
@@ -154,12 +197,14 @@ public class DnssdImpl implements Zeroconf {
|
|
|
154
197
|
.subscribeOn(Schedulers.io())
|
|
155
198
|
.observeOn(AndroidSchedulers.mainThread())
|
|
156
199
|
.subscribe(bonjourService -> {
|
|
157
|
-
Log.i(
|
|
200
|
+
Log.i(TAG, "Registered service " + bonjourService.toString());
|
|
158
201
|
|
|
159
202
|
mPublishedServices.put(bs.getServiceName(), bs);
|
|
160
203
|
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_PUBLISHED, serviceInfoToMap(bonjourService));
|
|
161
204
|
}, throwable -> {
|
|
162
|
-
Log.e(
|
|
205
|
+
Log.e(TAG, "Error registering service: ", throwable);
|
|
206
|
+
zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_ERROR, "Registering service failed: " + throwable.getMessage());
|
|
207
|
+
mRegisteredDisposables.remove(name);
|
|
163
208
|
});
|
|
164
209
|
|
|
165
210
|
mRegisteredDisposables.put(name, registerDisposable);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2016 Andriy Druk
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
package com.github.druk.dnssd;
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/** A base class for DNSSD listeners. */
|
|
21
|
+
|
|
22
|
+
public interface BaseListener {
|
|
23
|
+
/** Called to report DNSSD operation failures.<P>
|
|
24
|
+
|
|
25
|
+
@param service
|
|
26
|
+
The service that encountered the failure.
|
|
27
|
+
<P>
|
|
28
|
+
@param errorCode
|
|
29
|
+
Indicates the failure that occurred. See {@link DNSSDException} for error codes.
|
|
30
|
+
*/
|
|
31
|
+
void operationFailed(DNSSDService service, int errorCode);
|
|
32
|
+
}
|
|
33
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2016 Andriy Druk
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
package com.github.druk.dnssd;
|
|
18
|
+
|
|
19
|
+
/** A listener that receives results from {@link InternalDNSSD#browse}. */
|
|
20
|
+
|
|
21
|
+
public interface BrowseListener extends BaseListener {
|
|
22
|
+
/** Called to report discovered services.<P>
|
|
23
|
+
|
|
24
|
+
@param browser
|
|
25
|
+
The active browse service.
|
|
26
|
+
<P>
|
|
27
|
+
@param flags
|
|
28
|
+
Possible values are DNSSD.MORE_COMING.
|
|
29
|
+
<P>
|
|
30
|
+
@param ifIndex
|
|
31
|
+
The interface on which the service is advertised. This index should be passed
|
|
32
|
+
to {@link InternalDNSSD#resolve} when resolving the service.
|
|
33
|
+
<P>
|
|
34
|
+
@param serviceName
|
|
35
|
+
The service name discovered.
|
|
36
|
+
<P>
|
|
37
|
+
@param regType
|
|
38
|
+
The registration type, as passed in to DNSSD.browse().
|
|
39
|
+
<P>
|
|
40
|
+
@param domain
|
|
41
|
+
The domain in which the service was discovered.
|
|
42
|
+
*/
|
|
43
|
+
void serviceFound(DNSSDService browser, int flags, int ifIndex, String serviceName, String regType, String domain);
|
|
44
|
+
|
|
45
|
+
/** Called to report services which have been deregistered.<P>
|
|
46
|
+
|
|
47
|
+
@param browser
|
|
48
|
+
The active browse service.
|
|
49
|
+
<P>
|
|
50
|
+
@param flags
|
|
51
|
+
Possible values are DNSSD.MORE_COMING.
|
|
52
|
+
<P>
|
|
53
|
+
@param ifIndex
|
|
54
|
+
The interface on which the service is advertised.
|
|
55
|
+
<P>
|
|
56
|
+
@param serviceName
|
|
57
|
+
The service name which has deregistered.
|
|
58
|
+
<P>
|
|
59
|
+
@param regType
|
|
60
|
+
The registration type, as passed in to DNSSD.browse().
|
|
61
|
+
<P>
|
|
62
|
+
@param domain
|
|
63
|
+
The domain in which the service was discovered.
|
|
64
|
+
*/
|
|
65
|
+
void serviceLost(DNSSDService browser, int flags, int ifIndex, String serviceName, String regType, String domain);
|
|
66
|
+
}
|
|
67
|
+
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2016 Andriy Druk
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
package com.github.druk.dnssd;
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
Reference to a record returned by {@link DNSSDRegistration#addRecord}.<P>
|
|
22
|
+
|
|
23
|
+
Note: client is responsible for serializing access to these objects if
|
|
24
|
+
they are shared between concurrent threads.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
public interface DNSRecord {
|
|
28
|
+
/** Update a registered resource record.<P>
|
|
29
|
+
The record must either be the primary txt record of a service registered via DNSSD.register(),
|
|
30
|
+
or a record added to a registered service via addRecord().<P>
|
|
31
|
+
|
|
32
|
+
@param flags
|
|
33
|
+
Currently unused, reserved for future use.
|
|
34
|
+
<P>
|
|
35
|
+
@param rData
|
|
36
|
+
The new rdata to be contained in the updated resource record.
|
|
37
|
+
<P>
|
|
38
|
+
@param ttl
|
|
39
|
+
The time to live of the updated resource record, in seconds.
|
|
40
|
+
*/
|
|
41
|
+
void update(int flags, byte[] rData, int ttl) throws DNSSDException;
|
|
42
|
+
|
|
43
|
+
/** Remove a registered resource record.<P>
|
|
44
|
+
*/
|
|
45
|
+
void remove() throws DNSSDException;
|
|
46
|
+
}
|
|
47
|
+
|