react-native-zeroconf 0.15.1 → 0.16.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/README.md +27 -536
- package/android/build.gradle +2 -2
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/Zeroconf.java +16 -4
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfModule.java +95 -13
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +184 -64
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/ServiceInfoCallbacks.java +89 -0
- package/android/src/main/java/com/balthazargronon/RCTZeroconf/rx2dnssd/DnssdImpl.java +114 -39
- package/android/src/main/jni/Android.mk +1 -24
- package/android/src/main/jni/Application.mk +1 -1
- package/dist/index.js +244 -27
- package/index.d.ts +95 -9
- package/ios/RNZeroconf/RNNetServiceSerializer.h +10 -2
- package/ios/RNZeroconf/RNNetServiceSerializer.m +51 -59
- package/ios/RNZeroconf/RNZeroconf.h +1 -3
- package/ios/RNZeroconf/RNZeroconf.m +648 -142
- package/package.json +39 -1
- package/react-native-zeroconf.podspec +12 -6
- package/src/index.js +222 -31
- package/android/src/main/java/com/github/druk/dnssd/DNSSDBindable.java +0 -67
- package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdBindable.java +0 -35
- package/android/src/main/jni/mdnsresponder/Android.bp +0 -215
- package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.c +0 -75
- package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.h +0 -41
- package/android/src/main/jni/mdnsresponder/Clients/Makefile +0 -54
- package/android/src/main/jni/mdnsresponder/Clients/ReadMe.txt +0 -25
- package/android/src/main/jni/mdnsresponder/Clients/dns-sd.c +0 -1351
- package/android/src/main/jni/mdnsresponder/Makefile +0 -41
- package/android/src/main/jni/mdnsresponder/PrivateDNS.txt +0 -275
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Iphlpapi.h +0 -1
- package/android/src/main/jni/mdnsresponder/android/caseMapping/README +0 -3
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Resource.h +0 -1
- package/android/src/main/jni/mdnsresponder/android/caseMapping/Ws2tcpip.h +0 -1
- package/android/src/main/jni/mdnsresponder/android/caseMapping/ipExport.h +0 -1
- package/android/src/main/jni/mdnsresponder/android/windows_firewall_dummy.c +0 -10
- package/android/src/main/jni/mdnsresponder/mDNSCore/Implementer Notes.txt +0 -66
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Client.c +0 -223
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.c +0 -91
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.h +0 -18
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Identify.c +0 -378
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Makefile +0 -520
- package/android/src/main/jni/mdnsresponder/mDNSPosix/NetMonitor.c +0 -1010
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ProxyResponder.c +0 -300
- package/android/src/main/jni/mdnsresponder/mDNSPosix/ReadMe.txt +0 -314
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Responder.c +0 -792
- package/android/src/main/jni/mdnsresponder/mDNSPosix/Services.txt +0 -36
- package/android/src/main/jni/mdnsresponder/mDNSPosix/libnss_mdns.8 +0 -148
- package/android/src/main/jni/mdnsresponder/mDNSPosix/mdnsd.sh +0 -73
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_ReadMe.txt +0 -125
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.c +0 -2723
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf +0 -13
- package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf.5 +0 -135
- package/android/src/main/jni/mdnsresponder/mDNSPosix/parselog.py +0 -247
- package/android/src/main/jni/mdnsresponder/mDNSResponder.sln +0 -400
- package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.c +0 -3075
- package/android/src/main/jni/mdnsresponder/mDNSShared/dns-sd.1 +0 -194
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.8 +0 -69
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.c +0 -3146
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.conf +0 -60
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_lexer.l +0 -84
- package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_parser.y +0 -585
- package/android/src/main/jni/mdnsresponder/mDNSShared/mDNS.1 +0 -198
- package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSResponder.8 +0 -116
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.cpp +0 -441
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.h +0 -156
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.cpp +0 -59
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.h +0 -48
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.cpp +0 -301
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.h +0 -105
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.cpp +0 -380
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.def +0 -20
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.h +0 -84
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.rc +0 -141
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.vcproj +0 -727
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelDll.rc +0 -123
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.cpp +0 -373
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.h +0 -48
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.rc +0 -123
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.vcproj +0 -764
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.rc +0 -270
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.vcproj +0 -487
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.rc +0 -134
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.vcproj +0 -518
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.cpp +0 -197
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.h +0 -87
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.cpp +0 -387
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.h +0 -75
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.cpp +0 -544
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.h +0 -107
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.cpp +0 -273
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.h +0 -123
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.cpp +0 -115
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.h +0 -54
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.dll.manifest +0 -10
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.exe.manifest +0 -17
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.manifest +0 -17
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.rc2 +0 -13
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel64.manifest +0 -17
- 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 +0 -56
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.cpp +0 -20
- package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.h +0 -64
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.rc +0 -102
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dllmain.c +0 -112
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.def +0 -48
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.vcproj +0 -472
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/resource.h +0 -27
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/AssemblyInfo.cpp +0 -84
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/PString.h +0 -70
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.cpp +0 -22
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.h +0 -33
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.cpp +0 -1234
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.h +0 -1392
- 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 +0 -113
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.vcproj +0 -446
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/resource.h +0 -3
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.cpp +0 -693
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.h +0 -52
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.vcproj +0 -324
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.cpp +0 -208
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.def +0 -35
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.idl +0 -491
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rc +0 -126
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rgs +0 -11
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.vcproj +0 -625
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSD.cpp +0 -892
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.cpp +0 -31
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.h +0 -133
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.rgs +0 -27
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.cpp +0 -101
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.h +0 -185
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.rgs +0 -27
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.cpp +0 -2095
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.h +0 -429
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.rgs +0 -27
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.cpp +0 -344
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.h +0 -102
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.cpp +0 -381
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.h +0 -203
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.rgs +0 -27
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/_IDNSSDEvents_CP.h +0 -358
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.c +0 -51
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.h +0 -49
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/resource.h +0 -30
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/stdafx.h +0 -88
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.sln +0 -21
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.vcproj +0 -253
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.sln +0 -21
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.vcproj +0 -267
- 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 +0 -323
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc2 +0 -20
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Resource.h +0 -53
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.cpp +0 -71
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.h +0 -62
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.cpp +0 -111
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.h +0 -68
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.cpp +0 -1426
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.h +0 -131
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.cpp +0 -109
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.h +0 -53
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.cpp +0 -18
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.h +0 -48
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcc +0 -37
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcp +0 -868
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcw +0 -29
- 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 +0 -194
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc2 +0 -13
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/newres.h +0 -28
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/resource.h +0 -22
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.cpp +0 -92
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.h +0 -57
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.cpp +0 -394
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.h +0 -84
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.cpp +0 -18
- package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.h +0 -46
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/Java.vcproj +0 -111
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/jdns_sd.rc +0 -62
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile +0 -143
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile64 +0 -143
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.c +0 -581
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.rc +0 -103
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.vcproj +0 -409
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/Prefix.h +0 -28
- package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/resource.h +0 -27
- package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.c +0 -128
- package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.h +0 -70
- package/android/src/main/jni/mdnsresponder/mDNSWindows/README.txt +0 -85
- package/android/src/main/jni/mdnsresponder/mDNSWindows/RegNames.h +0 -57
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.c +0 -338
- package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.h +0 -42
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLog.mc +0 -11
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLogMessages.bin +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.cpp +0 -484
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.h +0 -79
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Prefix.h +0 -30
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.c +0 -2669
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.h +0 -30
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.mcp +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.rc +0 -114
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.vcproj +0 -562
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/main.c +0 -32
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder.manifest +0 -12
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder64.manifest +0 -12
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resource.h +0 -17
- package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resrc1.h +0 -15
- package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.cpp +0 -165
- package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.h +0 -36
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.cpp +0 -93
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.h +0 -34
- package/android/src/main/jni/mdnsresponder/mDNSWindows/WinVersRes.h +0 -35
- package/android/src/main/jni/mdnsresponder/mDNSWindows/isocode.h +0 -135
- package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.c +0 -268
- package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.h +0 -54
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.c +0 -5200
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.h +0 -208
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/ReadMe.txt +0 -15
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.aps +0 -0
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.c +0 -2430
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.def +0 -24
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.rc +0 -104
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.vcproj +0 -457
- package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/resource.h +0 -27
- package/android/src/main/jni/mdnsresponder/mdnsd.rc +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-zeroconf",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "A Zeroconf discovery utility for react-native",
|
|
5
5
|
"main": "dist",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -18,6 +18,43 @@
|
|
|
18
18
|
"dist",
|
|
19
19
|
"index.d.ts",
|
|
20
20
|
"android",
|
|
21
|
+
"!android/src/main/jni/mdnsresponder/mDNSWindows",
|
|
22
|
+
"!android/src/main/jni/mdnsresponder/Clients",
|
|
23
|
+
"!android/src/main/jni/mdnsresponder/android",
|
|
24
|
+
"!android/src/main/jni/mdnsresponder/Makefile",
|
|
25
|
+
"!android/src/main/jni/mdnsresponder/mDNSResponder.sln",
|
|
26
|
+
"!android/src/main/jni/mdnsresponder/mdnsd.rc",
|
|
27
|
+
"!android/src/main/jni/mdnsresponder/Android.bp",
|
|
28
|
+
"!android/src/main/jni/mdnsresponder/PrivateDNS.txt",
|
|
29
|
+
"!android/src/main/jni/mdnsresponder/mDNSCore/Implementer Notes.txt",
|
|
30
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/Client.c",
|
|
31
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.c",
|
|
32
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.h",
|
|
33
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/Identify.c",
|
|
34
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/NetMonitor.c",
|
|
35
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/ProxyResponder.c",
|
|
36
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/Responder.c",
|
|
37
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.c",
|
|
38
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf",
|
|
39
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf.5",
|
|
40
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/nss_ReadMe.txt",
|
|
41
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/libnss_mdns.8",
|
|
42
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/mdnsd.sh",
|
|
43
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/parselog.py",
|
|
44
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/Makefile",
|
|
45
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/ReadMe.txt",
|
|
46
|
+
"!android/src/main/jni/mdnsresponder/mDNSPosix/Services.txt",
|
|
47
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.c",
|
|
48
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.c",
|
|
49
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.8",
|
|
50
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.conf",
|
|
51
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_lexer.l",
|
|
52
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_parser.y",
|
|
53
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/dns-sd.1",
|
|
54
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/mDNS.1",
|
|
55
|
+
"!android/src/main/jni/mdnsresponder/mDNSShared/mDNSResponder.8",
|
|
56
|
+
"!android/build",
|
|
57
|
+
"!android/.gradle",
|
|
21
58
|
"ios",
|
|
22
59
|
"react-native-zeroconf.podspec",
|
|
23
60
|
"NOTICE"
|
|
@@ -42,6 +79,7 @@
|
|
|
42
79
|
"events": "^3.0.0"
|
|
43
80
|
},
|
|
44
81
|
"peerDependencies": {
|
|
82
|
+
"react": "*",
|
|
45
83
|
"react-native": ">=0.60"
|
|
46
84
|
},
|
|
47
85
|
"devDependencies": {
|
|
@@ -10,12 +10,18 @@ Pod::Spec.new do |s|
|
|
|
10
10
|
|
|
11
11
|
s.authors = package['author']
|
|
12
12
|
s.homepage = package['homepage']
|
|
13
|
-
s
|
|
14
|
-
s.
|
|
15
|
-
s.
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
# React Native's own minimum when available (RN 0.71+)
|
|
14
|
+
s.ios.deployment_target = respond_to?(:min_ios_version_supported, true) ? min_ios_version_supported : '13.4'
|
|
15
|
+
s.macos.deployment_target = '10.15'
|
|
16
|
+
s.tvos.deployment_target = '13.4'
|
|
17
|
+
|
|
18
|
+
s.source = { :git => "https://github.com/balthazar/react-native-zeroconf.git", :tag => "#{s.version}" }
|
|
18
19
|
s.source_files = "ios/**/*.{h,m}"
|
|
20
|
+
s.frameworks = 'Network'
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
if respond_to?(:install_modules_dependencies, true)
|
|
23
|
+
install_modules_dependencies(s)
|
|
24
|
+
else
|
|
25
|
+
s.dependency 'React-Core'
|
|
26
|
+
end
|
|
21
27
|
end
|
package/src/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react'
|
|
1
2
|
import { Platform, NativeModules, DeviceEventEmitter } from 'react-native'
|
|
2
3
|
import { EventEmitter } from 'events'
|
|
3
4
|
|
|
@@ -8,6 +9,72 @@ export const ImplType = {
|
|
|
8
9
|
DNSSD: 'DNSSD',
|
|
9
10
|
}
|
|
10
11
|
|
|
12
|
+
const SCAN_DEFAULTS = {
|
|
13
|
+
type: 'http',
|
|
14
|
+
protocol: 'tcp',
|
|
15
|
+
domain: 'local.',
|
|
16
|
+
implType: ImplType.NSD,
|
|
17
|
+
resolveTimeout: 5,
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const PUBLISH_DEFAULTS = {
|
|
21
|
+
domain: 'local.',
|
|
22
|
+
txt: {},
|
|
23
|
+
implType: ImplType.NSD,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Merge options over defaults, ignoring undefined values
|
|
28
|
+
*/
|
|
29
|
+
const withDefaults = (defaults, options) => {
|
|
30
|
+
const merged = { ...defaults }
|
|
31
|
+
Object.entries(options).forEach(([key, value]) => {
|
|
32
|
+
if (value !== undefined) {
|
|
33
|
+
merged[key] = value
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
return merged
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const isOptionsObject = value => value !== null && typeof value === 'object'
|
|
40
|
+
|
|
41
|
+
// Each instance runs its own scan, identified by this id in native events
|
|
42
|
+
let instanceCount = 0
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Error from a native { message, code, domain, serviceName } payload
|
|
46
|
+
*/
|
|
47
|
+
const toError = payload => {
|
|
48
|
+
if (!payload || typeof payload !== 'object') {
|
|
49
|
+
return new Error(payload)
|
|
50
|
+
}
|
|
51
|
+
const error = new Error(payload.message)
|
|
52
|
+
error.code = payload.code
|
|
53
|
+
error.domain = payload.domain
|
|
54
|
+
if (payload.serviceName) {
|
|
55
|
+
error.serviceName = payload.serviceName
|
|
56
|
+
}
|
|
57
|
+
return error
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Promise rejections carry the same payload as error events in userInfo
|
|
62
|
+
*/
|
|
63
|
+
const toRejection = error =>
|
|
64
|
+
error && error.userInfo && error.userInfo.domain ? toError(error.userInfo) : error
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Normalizes rejections, and marks the promise handled so callers that don't await it
|
|
68
|
+
* don't get unhandled rejection warnings (errors are also emitted as error events)
|
|
69
|
+
*/
|
|
70
|
+
const asPromise = nativePromise => {
|
|
71
|
+
const promise = Promise.resolve(nativePromise).catch(error => {
|
|
72
|
+
throw toRejection(error)
|
|
73
|
+
})
|
|
74
|
+
promise.catch(() => {})
|
|
75
|
+
return promise
|
|
76
|
+
}
|
|
77
|
+
|
|
11
78
|
const isIPv6 = address => address.includes(':')
|
|
12
79
|
|
|
13
80
|
/**
|
|
@@ -42,6 +109,8 @@ export default class Zeroconf extends EventEmitter {
|
|
|
42
109
|
this._publishedServices = {}
|
|
43
110
|
this._publishedImplTypes = {}
|
|
44
111
|
this._scanImplType = null
|
|
112
|
+
this._scanId = `zeroconf-${++instanceCount}`
|
|
113
|
+
this._hasScanned = false
|
|
45
114
|
this._dListeners = {}
|
|
46
115
|
|
|
47
116
|
this.addDeviceListeners()
|
|
@@ -55,33 +124,37 @@ export default class Zeroconf extends EventEmitter {
|
|
|
55
124
|
return this.emit('error', new Error('RNZeroconf listeners already in place.'))
|
|
56
125
|
}
|
|
57
126
|
|
|
58
|
-
this._dListeners.start = DeviceEventEmitter.addListener('RNZeroconfStart',
|
|
59
|
-
this.
|
|
60
|
-
|
|
127
|
+
this._dListeners.start = DeviceEventEmitter.addListener('RNZeroconfStart', payload => {
|
|
128
|
+
if (this._isOwnEvent(payload)) {
|
|
129
|
+
this.emit('start')
|
|
130
|
+
}
|
|
131
|
+
})
|
|
61
132
|
|
|
62
|
-
this._dListeners.stop = DeviceEventEmitter.addListener('RNZeroconfStop',
|
|
63
|
-
this.
|
|
64
|
-
|
|
133
|
+
this._dListeners.stop = DeviceEventEmitter.addListener('RNZeroconfStop', payload => {
|
|
134
|
+
if (this._isOwnEvent(payload)) {
|
|
135
|
+
this.emit('stop')
|
|
136
|
+
}
|
|
137
|
+
})
|
|
65
138
|
|
|
66
139
|
this._dListeners.error = DeviceEventEmitter.addListener('RNZeroconfError', err => {
|
|
67
|
-
if (this.listenerCount('error') > 0) {
|
|
68
|
-
this.emit('error',
|
|
140
|
+
if (this._isOwnEvent(err) && this.listenerCount('error') > 0) {
|
|
141
|
+
this.emit('error', toError(err))
|
|
69
142
|
}
|
|
70
143
|
})
|
|
71
144
|
|
|
72
145
|
this._dListeners.found = DeviceEventEmitter.addListener('RNZeroconfFound', service => {
|
|
73
|
-
if (!service || !service.name) {
|
|
146
|
+
if (!service || !service.name || !this._isOwnEvent(service)) {
|
|
74
147
|
return
|
|
75
148
|
}
|
|
76
149
|
const { name } = service
|
|
77
150
|
|
|
78
|
-
this._services[name] =
|
|
151
|
+
this._services[name] = { name }
|
|
79
152
|
this.emit('found', name)
|
|
80
153
|
this.emit('update')
|
|
81
154
|
})
|
|
82
155
|
|
|
83
156
|
this._dListeners.remove = DeviceEventEmitter.addListener('RNZeroconfRemove', service => {
|
|
84
|
-
if (!service || !service.name) {
|
|
157
|
+
if (!service || !service.name || !this._isOwnEvent(service)) {
|
|
85
158
|
return
|
|
86
159
|
}
|
|
87
160
|
const { name } = service
|
|
@@ -93,11 +166,13 @@ export default class Zeroconf extends EventEmitter {
|
|
|
93
166
|
})
|
|
94
167
|
|
|
95
168
|
this._dListeners.resolved = DeviceEventEmitter.addListener('RNZeroconfResolved', data => {
|
|
96
|
-
if (!data || !data.name) {
|
|
169
|
+
if (!data || !data.name || !this._isOwnEvent(data)) {
|
|
97
170
|
return
|
|
98
171
|
}
|
|
99
172
|
|
|
100
|
-
const
|
|
173
|
+
const resolved = { ...data }
|
|
174
|
+
delete resolved.scanId
|
|
175
|
+
const service = withAddressFamilies(resolved)
|
|
101
176
|
this._services[service.name] = service
|
|
102
177
|
this.emit('resolved', service)
|
|
103
178
|
this.emit('update')
|
|
@@ -128,6 +203,25 @@ export default class Zeroconf extends EventEmitter {
|
|
|
128
203
|
)
|
|
129
204
|
}
|
|
130
205
|
|
|
206
|
+
/**
|
|
207
|
+
* Add a listener and get a function that removes it, handy in useEffect cleanups
|
|
208
|
+
*/
|
|
209
|
+
subscribe(event, listener) {
|
|
210
|
+
this.on(event, listener)
|
|
211
|
+
return () => this.removeListener(event, listener)
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Scan events belong to the instance that started the scan. Instances that never scanned still receive
|
|
216
|
+
* every scan's events, as before multiple scans, and events without a scan id (publishing) go to everyone.
|
|
217
|
+
*/
|
|
218
|
+
_isOwnEvent(payload) {
|
|
219
|
+
if (!payload || typeof payload !== 'object' || payload.scanId == null || !this._hasScanned) {
|
|
220
|
+
return true
|
|
221
|
+
}
|
|
222
|
+
return payload.scanId === this._scanId
|
|
223
|
+
}
|
|
224
|
+
|
|
131
225
|
/**
|
|
132
226
|
* Remove all event listeners and clean map
|
|
133
227
|
*/
|
|
@@ -144,21 +238,31 @@ export default class Zeroconf extends EventEmitter {
|
|
|
144
238
|
}
|
|
145
239
|
|
|
146
240
|
/**
|
|
147
|
-
* Scan for Zeroconf services,
|
|
148
|
-
*
|
|
241
|
+
* Scan for Zeroconf services, defaults to _http._tcp. on the local. domain
|
|
242
|
+
*
|
|
243
|
+
* scan({ type, protocol, domain, implType, resolveTimeout })
|
|
244
|
+
* scan(type, protocol, domain, implType) is deprecated
|
|
149
245
|
*/
|
|
150
|
-
scan(
|
|
246
|
+
scan(options, protocolArg, domainArg, implTypeArg) {
|
|
247
|
+
const { type, protocol, domain, implType, resolveTimeout } = withDefaults(
|
|
248
|
+
SCAN_DEFAULTS,
|
|
249
|
+
isOptionsObject(options)
|
|
250
|
+
? options
|
|
251
|
+
: { type: options, protocol: protocolArg, domain: domainArg, implType: implTypeArg },
|
|
252
|
+
)
|
|
253
|
+
|
|
151
254
|
this._services = {}
|
|
255
|
+
this._hasScanned = true
|
|
152
256
|
this.emit('update')
|
|
153
257
|
if (Platform.OS === 'android') {
|
|
154
258
|
if (this._scanImplType && implType !== this._scanImplType) {
|
|
155
|
-
//
|
|
156
|
-
RNZeroconf.stop(this._scanImplType)
|
|
259
|
+
// This instance's scan moves to the other implementation
|
|
260
|
+
RNZeroconf.stop(this._scanId, this._scanImplType)
|
|
157
261
|
}
|
|
158
262
|
this._scanImplType = implType
|
|
159
|
-
RNZeroconf.scan(type, protocol, domain, implType)
|
|
263
|
+
RNZeroconf.scan(this._scanId, type, protocol, domain, implType)
|
|
160
264
|
} else {
|
|
161
|
-
RNZeroconf.scan(type, protocol, domain)
|
|
265
|
+
RNZeroconf.scan(this._scanId, type, protocol, domain, resolveTimeout)
|
|
162
266
|
}
|
|
163
267
|
}
|
|
164
268
|
|
|
@@ -168,35 +272,122 @@ export default class Zeroconf extends EventEmitter {
|
|
|
168
272
|
*/
|
|
169
273
|
stop(implType = this._scanImplType || ImplType.NSD) {
|
|
170
274
|
if (Platform.OS === 'android') {
|
|
171
|
-
RNZeroconf.stop(implType)
|
|
275
|
+
RNZeroconf.stop(this._scanId, implType)
|
|
172
276
|
} else {
|
|
173
|
-
RNZeroconf.stop()
|
|
277
|
+
RNZeroconf.stop(this._scanId)
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Checks the iOS Local Network permission, resolves 'granted', 'denied' or 'unknown'.
|
|
283
|
+
* Uses a service type from NSBonjourServices (the first one by default) and can show the permission prompt.
|
|
284
|
+
* Android has no equivalent permission to check and resolves 'unknown'.
|
|
285
|
+
*/
|
|
286
|
+
checkLocalNetworkAccess({ type, protocol = 'tcp', timeout = 5 } = {}) {
|
|
287
|
+
if (Platform.OS === 'android') {
|
|
288
|
+
return Promise.resolve('unknown')
|
|
174
289
|
}
|
|
290
|
+
const serviceType = type ? `_${type}._${protocol}` : null
|
|
291
|
+
return asPromise(RNZeroconf.checkLocalNetworkAccess(serviceType, timeout))
|
|
175
292
|
}
|
|
176
293
|
|
|
177
294
|
/**
|
|
178
|
-
* Publish a service
|
|
295
|
+
* Publish a service, resolves with the published service once it is advertised.
|
|
296
|
+
* Its name can differ from the requested one when that name is already taken.
|
|
297
|
+
*
|
|
298
|
+
* publishService({ type, protocol, domain, name, port, txt, implType })
|
|
299
|
+
* publishService(type, protocol, domain, name, port, txt, implType) is deprecated
|
|
179
300
|
*/
|
|
180
|
-
publishService(
|
|
301
|
+
publishService(options, protocolArg, domainArg, nameArg, portArg, txtArg, implTypeArg) {
|
|
302
|
+
const { type, protocol, domain, name, port, txt, implType } = withDefaults(
|
|
303
|
+
PUBLISH_DEFAULTS,
|
|
304
|
+
isOptionsObject(options)
|
|
305
|
+
? options
|
|
306
|
+
: {
|
|
307
|
+
type: options,
|
|
308
|
+
protocol: protocolArg,
|
|
309
|
+
domain: domainArg,
|
|
310
|
+
name: nameArg,
|
|
311
|
+
port: portArg,
|
|
312
|
+
txt: txtArg,
|
|
313
|
+
implType: implTypeArg,
|
|
314
|
+
},
|
|
315
|
+
)
|
|
181
316
|
const txtRecord = toTxtPairs(txt)
|
|
182
317
|
if (Platform.OS === 'android') {
|
|
183
318
|
this._publishedImplTypes[name] = implType
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
319
|
+
return asPromise(
|
|
320
|
+
RNZeroconf.registerService(type, protocol, domain, name, port, txtRecord, implType),
|
|
321
|
+
)
|
|
187
322
|
}
|
|
323
|
+
return asPromise(RNZeroconf.registerService(type, protocol, domain, name, port, txtRecord))
|
|
188
324
|
}
|
|
189
325
|
|
|
190
326
|
/**
|
|
191
|
-
* Unpublish a service,
|
|
327
|
+
* Unpublish a service, resolves once it is no longer advertised.
|
|
192
328
|
* Defaults to the implementation the service was published with
|
|
193
329
|
*/
|
|
194
330
|
unpublishService(name, implType = this._publishedImplTypes[name] || ImplType.NSD) {
|
|
195
331
|
if (Platform.OS === 'android') {
|
|
196
332
|
delete this._publishedImplTypes[name]
|
|
197
|
-
RNZeroconf.unregisterService(name, implType)
|
|
198
|
-
} else {
|
|
199
|
-
RNZeroconf.unregisterService(name)
|
|
333
|
+
return asPromise(RNZeroconf.unregisterService(name, implType))
|
|
200
334
|
}
|
|
335
|
+
return asPromise(RNZeroconf.unregisterService(name))
|
|
201
336
|
}
|
|
202
337
|
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Scans while mounted and returns the resolved services.
|
|
341
|
+
* Scans again when the options change, stops and cleans up on unmount.
|
|
342
|
+
* Each hook runs its own scan, several can run at once.
|
|
343
|
+
*
|
|
344
|
+
* const { services, isScanning, error, stop, restart } = useZeroconf({ type: 'http' })
|
|
345
|
+
*/
|
|
346
|
+
export function useZeroconf(options = {}) {
|
|
347
|
+
const { type, protocol, domain, implType, resolveTimeout, enabled = true } = options
|
|
348
|
+
const zeroconfRef = useRef(null)
|
|
349
|
+
const [services, setServices] = useState([])
|
|
350
|
+
const [isScanning, setIsScanning] = useState(false)
|
|
351
|
+
const [error, setError] = useState(null)
|
|
352
|
+
const [scanCount, setScanCount] = useState(0)
|
|
353
|
+
|
|
354
|
+
useEffect(() => {
|
|
355
|
+
const zeroconf = new Zeroconf()
|
|
356
|
+
zeroconfRef.current = zeroconf
|
|
357
|
+
// Found services only have a name until they are resolved
|
|
358
|
+
const updateServices = () =>
|
|
359
|
+
setServices(Object.values(zeroconf.getServices()).filter(service => service.addresses))
|
|
360
|
+
const unsubscribes = [
|
|
361
|
+
zeroconf.subscribe('start', () => setIsScanning(true)),
|
|
362
|
+
zeroconf.subscribe('stop', () => setIsScanning(false)),
|
|
363
|
+
zeroconf.subscribe('update', updateServices),
|
|
364
|
+
zeroconf.subscribe('error', setError),
|
|
365
|
+
]
|
|
366
|
+
return () => {
|
|
367
|
+
unsubscribes.forEach(unsubscribe => unsubscribe())
|
|
368
|
+
zeroconf.stop()
|
|
369
|
+
zeroconf.removeDeviceListeners()
|
|
370
|
+
zeroconfRef.current = null
|
|
371
|
+
}
|
|
372
|
+
}, [])
|
|
373
|
+
|
|
374
|
+
useEffect(() => {
|
|
375
|
+
const zeroconf = zeroconfRef.current
|
|
376
|
+
if (!zeroconf || !enabled) {
|
|
377
|
+
return undefined
|
|
378
|
+
}
|
|
379
|
+
setServices([])
|
|
380
|
+
setError(null)
|
|
381
|
+
zeroconf.scan({ type, protocol, domain, implType, resolveTimeout })
|
|
382
|
+
return () => zeroconf.stop()
|
|
383
|
+
}, [enabled, type, protocol, domain, implType, resolveTimeout, scanCount])
|
|
384
|
+
|
|
385
|
+
const stop = useCallback(() => {
|
|
386
|
+
if (zeroconfRef.current) {
|
|
387
|
+
zeroconfRef.current.stop()
|
|
388
|
+
}
|
|
389
|
+
}, [])
|
|
390
|
+
const restart = useCallback(() => setScanCount(count => count + 1), [])
|
|
391
|
+
|
|
392
|
+
return { services, isScanning, error, stop, restart }
|
|
393
|
+
}
|
|
@@ -1,67 +0,0 @@
|
|
|
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
|
-
import android.annotation.TargetApi;
|
|
20
|
-
import android.content.Context;
|
|
21
|
-
import android.os.Build;
|
|
22
|
-
import android.util.Log;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* RxDnssdBindable is implementation of RxDnssd with system's daemon {@link InternalDNSSD}
|
|
26
|
-
*/
|
|
27
|
-
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
|
|
28
|
-
public final class DNSSDBindable extends DNSSD {
|
|
29
|
-
|
|
30
|
-
private static final String TAG = "DNSSDBindable";
|
|
31
|
-
private final Context context;
|
|
32
|
-
|
|
33
|
-
public DNSSDBindable(Context context) {
|
|
34
|
-
super(context, "jdns_sd");
|
|
35
|
-
this.context = context.getApplicationContext();
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
@Override
|
|
39
|
-
public void onServiceStarting() {
|
|
40
|
-
super.onServiceStarting();
|
|
41
|
-
try {
|
|
42
|
-
context.getSystemService(Context.NSD_SERVICE);
|
|
43
|
-
}
|
|
44
|
-
catch (Exception e) {
|
|
45
|
-
Log.e(TAG, "Can't start NSD_SERVICE: ", e);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
@Override
|
|
50
|
-
public void onServiceStopped() {
|
|
51
|
-
super.onServiceStopped();
|
|
52
|
-
// Not used in bindable version
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** Return the canonical name of a particular interface index.<P>
|
|
56
|
-
@param ifIndex
|
|
57
|
-
A valid interface index. Must not be ALL_INTERFACES.
|
|
58
|
-
<P>
|
|
59
|
-
@return The name of the interface, which should match java.net.NetworkInterface.getName().
|
|
60
|
-
|
|
61
|
-
@throws SecurityException If a security manager is present and denies <tt>RuntimePermission("getDNSSDInstance")</tt>.
|
|
62
|
-
@see RuntimePermission
|
|
63
|
-
*/
|
|
64
|
-
public String getNameForIfIndex(int ifIndex) {
|
|
65
|
-
return InternalDNSSD.getNameForIfIndex(ifIndex);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
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
|
-
package com.github.druk.rx2dnssd;
|
|
17
|
-
|
|
18
|
-
import android.annotation.TargetApi;
|
|
19
|
-
import android.content.Context;
|
|
20
|
-
import android.os.Build;
|
|
21
|
-
|
|
22
|
-
import com.github.druk.dnssd.DNSSD;
|
|
23
|
-
import com.github.druk.dnssd.DNSSDBindable;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* RxDnssdBindable is implementation of RxDnssd with system's daemon {@link DNSSD}
|
|
27
|
-
*/
|
|
28
|
-
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
|
|
29
|
-
public class Rx2DnssdBindable extends Rx2DnssdCommon {
|
|
30
|
-
|
|
31
|
-
public Rx2DnssdBindable(Context context) {
|
|
32
|
-
super(new DNSSDBindable(context));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
}
|