react-native-zeroconf 0.15.2 → 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.
Files changed (231) hide show
  1. package/README.md +27 -536
  2. package/android/build.gradle +2 -2
  3. package/android/src/main/java/com/balthazargronon/RCTZeroconf/Zeroconf.java +16 -4
  4. package/android/src/main/java/com/balthazargronon/RCTZeroconf/ZeroconfModule.java +95 -13
  5. package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/NsdServiceImpl.java +184 -64
  6. package/android/src/main/java/com/balthazargronon/RCTZeroconf/nsd/ServiceInfoCallbacks.java +89 -0
  7. package/android/src/main/java/com/balthazargronon/RCTZeroconf/rx2dnssd/DnssdImpl.java +114 -39
  8. package/android/src/main/jni/Android.mk +1 -24
  9. package/android/src/main/jni/Application.mk +1 -1
  10. package/dist/index.js +244 -27
  11. package/index.d.ts +95 -9
  12. package/ios/RNZeroconf/RNNetServiceSerializer.h +10 -2
  13. package/ios/RNZeroconf/RNNetServiceSerializer.m +51 -59
  14. package/ios/RNZeroconf/RNZeroconf.h +1 -3
  15. package/ios/RNZeroconf/RNZeroconf.m +642 -175
  16. package/package.json +39 -1
  17. package/react-native-zeroconf.podspec +12 -6
  18. package/src/index.js +222 -31
  19. package/android/src/main/java/com/github/druk/dnssd/DNSSDBindable.java +0 -67
  20. package/android/src/main/java/com/github/druk/rx2dnssd/Rx2DnssdBindable.java +0 -35
  21. package/android/src/main/jni/mdnsresponder/Android.bp +0 -215
  22. package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.c +0 -75
  23. package/android/src/main/jni/mdnsresponder/Clients/ClientCommon.h +0 -41
  24. package/android/src/main/jni/mdnsresponder/Clients/Makefile +0 -54
  25. package/android/src/main/jni/mdnsresponder/Clients/ReadMe.txt +0 -25
  26. package/android/src/main/jni/mdnsresponder/Clients/dns-sd.c +0 -1351
  27. package/android/src/main/jni/mdnsresponder/Makefile +0 -41
  28. package/android/src/main/jni/mdnsresponder/PrivateDNS.txt +0 -275
  29. package/android/src/main/jni/mdnsresponder/android/caseMapping/Iphlpapi.h +0 -1
  30. package/android/src/main/jni/mdnsresponder/android/caseMapping/README +0 -3
  31. package/android/src/main/jni/mdnsresponder/android/caseMapping/Resource.h +0 -1
  32. package/android/src/main/jni/mdnsresponder/android/caseMapping/Ws2tcpip.h +0 -1
  33. package/android/src/main/jni/mdnsresponder/android/caseMapping/ipExport.h +0 -1
  34. package/android/src/main/jni/mdnsresponder/android/windows_firewall_dummy.c +0 -10
  35. package/android/src/main/jni/mdnsresponder/mDNSCore/Implementer Notes.txt +0 -66
  36. package/android/src/main/jni/mdnsresponder/mDNSPosix/Client.c +0 -223
  37. package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.c +0 -91
  38. package/android/src/main/jni/mdnsresponder/mDNSPosix/ExampleClientApp.h +0 -18
  39. package/android/src/main/jni/mdnsresponder/mDNSPosix/Identify.c +0 -378
  40. package/android/src/main/jni/mdnsresponder/mDNSPosix/Makefile +0 -520
  41. package/android/src/main/jni/mdnsresponder/mDNSPosix/NetMonitor.c +0 -1010
  42. package/android/src/main/jni/mdnsresponder/mDNSPosix/ProxyResponder.c +0 -300
  43. package/android/src/main/jni/mdnsresponder/mDNSPosix/ReadMe.txt +0 -314
  44. package/android/src/main/jni/mdnsresponder/mDNSPosix/Responder.c +0 -792
  45. package/android/src/main/jni/mdnsresponder/mDNSPosix/Services.txt +0 -36
  46. package/android/src/main/jni/mdnsresponder/mDNSPosix/libnss_mdns.8 +0 -148
  47. package/android/src/main/jni/mdnsresponder/mDNSPosix/mdnsd.sh +0 -73
  48. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_ReadMe.txt +0 -125
  49. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.c +0 -2723
  50. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf +0 -13
  51. package/android/src/main/jni/mdnsresponder/mDNSPosix/nss_mdns.conf.5 +0 -135
  52. package/android/src/main/jni/mdnsresponder/mDNSPosix/parselog.py +0 -247
  53. package/android/src/main/jni/mdnsresponder/mDNSResponder.sln +0 -400
  54. package/android/src/main/jni/mdnsresponder/mDNSShared/DebugServices.c +0 -3075
  55. package/android/src/main/jni/mdnsresponder/mDNSShared/dns-sd.1 +0 -194
  56. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.8 +0 -69
  57. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.c +0 -3146
  58. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd.conf +0 -60
  59. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_lexer.l +0 -84
  60. package/android/src/main/jni/mdnsresponder/mDNSShared/dnsextd_parser.y +0 -585
  61. package/android/src/main/jni/mdnsresponder/mDNSShared/mDNS.1 +0 -198
  62. package/android/src/main/jni/mdnsresponder/mDNSShared/mDNSResponder.8 +0 -116
  63. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.cpp +0 -441
  64. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/BrowsingPage.h +0 -156
  65. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.cpp +0 -59
  66. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigDialog.h +0 -48
  67. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.cpp +0 -301
  68. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ConfigPropertySheet.h +0 -105
  69. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.cpp +0 -380
  70. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.def +0 -20
  71. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.h +0 -84
  72. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.rc +0 -141
  73. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanel.vcproj +0 -727
  74. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelDll.rc +0 -123
  75. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.cpp +0 -373
  76. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.h +0 -48
  77. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.rc +0 -123
  78. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelExe.vcproj +0 -764
  79. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.rc +0 -270
  80. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelLocRes.vcproj +0 -487
  81. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.rc +0 -134
  82. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ControlPanelRes.vcproj +0 -518
  83. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.cpp +0 -197
  84. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/FourthPage.h +0 -87
  85. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.cpp +0 -387
  86. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/RegistrationPage.h +0 -75
  87. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.cpp +0 -544
  88. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SecondPage.h +0 -107
  89. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.cpp +0 -273
  90. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.h +0 -123
  91. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.cpp +0 -115
  92. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/SharedSecret.h +0 -54
  93. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.dll.manifest +0 -10
  94. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.exe.manifest +0 -17
  95. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.manifest +0 -17
  96. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel.rc2 +0 -13
  97. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/ControlPanel64.manifest +0 -17
  98. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/EnergySaver.ico +0 -0
  99. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/controlpanel.ico +0 -0
  100. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/failure.ico +0 -0
  101. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/res/success.ico +0 -0
  102. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/resource.h +0 -56
  103. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.cpp +0 -20
  104. package/android/src/main/jni/mdnsresponder/mDNSWindows/ControlPanel/stdafx.h +0 -64
  105. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.aps +0 -0
  106. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dll.rc +0 -102
  107. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dllmain.c +0 -112
  108. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.def +0 -48
  109. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/dnssd.vcproj +0 -472
  110. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL/resource.h +0 -27
  111. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/AssemblyInfo.cpp +0 -84
  112. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/PString.h +0 -70
  113. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.cpp +0 -22
  114. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/Stdafx.h +0 -33
  115. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.cpp +0 -1234
  116. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.h +0 -1392
  117. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.ico +0 -0
  118. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.rc +0 -113
  119. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/dnssd_NET.vcproj +0 -446
  120. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLL.NET/resource.h +0 -3
  121. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.cpp +0 -693
  122. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.h +0 -52
  123. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLStub/DLLStub.vcproj +0 -324
  124. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.cpp +0 -208
  125. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.def +0 -35
  126. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.idl +0 -491
  127. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rc +0 -126
  128. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.rgs +0 -11
  129. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DLLX.vcproj +0 -625
  130. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSD.cpp +0 -892
  131. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.cpp +0 -31
  132. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.h +0 -133
  133. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDEventManager.rgs +0 -27
  134. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.cpp +0 -101
  135. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.h +0 -185
  136. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDRecord.rgs +0 -27
  137. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.cpp +0 -2095
  138. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.h +0 -429
  139. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/DNSSDService.rgs +0 -27
  140. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.cpp +0 -344
  141. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/StringServices.h +0 -102
  142. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.cpp +0 -381
  143. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.h +0 -203
  144. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/TXTRecord.rgs +0 -27
  145. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/_IDNSSDEvents_CP.h +0 -358
  146. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.c +0 -51
  147. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/dlldatax.h +0 -49
  148. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/resource.h +0 -30
  149. package/android/src/main/jni/mdnsresponder/mDNSWindows/DLLX/stdafx.h +0 -88
  150. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.sln +0 -21
  151. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2002.vcproj +0 -253
  152. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.sln +0 -21
  153. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/ApplicationVS2003.vcproj +0 -267
  154. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.ico +0 -0
  155. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc +0 -323
  156. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Application.rc2 +0 -20
  157. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Resources/Resource.h +0 -53
  158. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.cpp +0 -71
  159. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/AboutDialog.h +0 -62
  160. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.cpp +0 -111
  161. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/Application.h +0 -68
  162. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.cpp +0 -1426
  163. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/ChooserDialog.h +0 -131
  164. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.cpp +0 -109
  165. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/LoginDialog.h +0 -53
  166. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.cpp +0 -18
  167. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/Windows/Sources/StdAfx.h +0 -48
  168. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcc +0 -37
  169. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcp +0 -868
  170. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Application.vcw +0 -29
  171. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.ico +0 -0
  172. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc +0 -194
  173. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/Application.rc2 +0 -13
  174. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/newres.h +0 -28
  175. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Resources/resource.h +0 -22
  176. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.cpp +0 -92
  177. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/Application.h +0 -57
  178. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.cpp +0 -394
  179. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/BrowserDialog.h +0 -84
  180. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.cpp +0 -18
  181. package/android/src/main/jni/mdnsresponder/mDNSWindows/DNSServiceBrowser/WindowsCE/Sources/StdAfx.h +0 -46
  182. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/Java.vcproj +0 -111
  183. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/jdns_sd.rc +0 -62
  184. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile +0 -143
  185. package/android/src/main/jni/mdnsresponder/mDNSWindows/Java/makefile64 +0 -143
  186. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.aps +0 -0
  187. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.c +0 -581
  188. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.rc +0 -103
  189. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/NSPTool.vcproj +0 -409
  190. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/Prefix.h +0 -28
  191. package/android/src/main/jni/mdnsresponder/mDNSWindows/NSPTool/resource.h +0 -27
  192. package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.c +0 -128
  193. package/android/src/main/jni/mdnsresponder/mDNSWindows/PosixCompat.h +0 -70
  194. package/android/src/main/jni/mdnsresponder/mDNSWindows/README.txt +0 -85
  195. package/android/src/main/jni/mdnsresponder/mDNSWindows/RegNames.h +0 -57
  196. package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.c +0 -338
  197. package/android/src/main/jni/mdnsresponder/mDNSWindows/Secret.h +0 -42
  198. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLog.mc +0 -11
  199. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/EventLogMessages.bin +0 -0
  200. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.cpp +0 -484
  201. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Firewall.h +0 -79
  202. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Prefix.h +0 -30
  203. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.aps +0 -0
  204. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.c +0 -2669
  205. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.h +0 -30
  206. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.mcp +0 -0
  207. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.rc +0 -114
  208. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/Service.vcproj +0 -562
  209. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/main.c +0 -32
  210. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder.manifest +0 -12
  211. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/res/mDNSResponder64.manifest +0 -12
  212. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resource.h +0 -17
  213. package/android/src/main/jni/mdnsresponder/mDNSWindows/SystemService/resrc1.h +0 -15
  214. package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.cpp +0 -165
  215. package/android/src/main/jni/mdnsresponder/mDNSWindows/VPCDetect.h +0 -36
  216. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.cpp +0 -93
  217. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinServices.h +0 -34
  218. package/android/src/main/jni/mdnsresponder/mDNSWindows/WinVersRes.h +0 -35
  219. package/android/src/main/jni/mdnsresponder/mDNSWindows/isocode.h +0 -135
  220. package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.c +0 -268
  221. package/android/src/main/jni/mdnsresponder/mDNSWindows/loclibrary.h +0 -54
  222. package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.c +0 -5200
  223. package/android/src/main/jni/mdnsresponder/mDNSWindows/mDNSWin32.h +0 -208
  224. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/ReadMe.txt +0 -15
  225. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.aps +0 -0
  226. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.c +0 -2430
  227. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.def +0 -24
  228. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.rc +0 -104
  229. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/mdnsNSP.vcproj +0 -457
  230. package/android/src/main/jni/mdnsresponder/mDNSWindows/mdnsNSP/resource.h +0 -27
  231. package/android/src/main/jni/mdnsresponder/mdnsd.rc +0 -7
@@ -0,0 +1,89 @@
1
+ package com.balthazargronon.RCTZeroconf.nsd;
2
+
3
+ import android.annotation.TargetApi;
4
+ import android.net.nsd.NsdManager;
5
+ import android.net.nsd.NsdServiceInfo;
6
+ import android.util.Log;
7
+
8
+ import java.util.ArrayList;
9
+ import java.util.Map;
10
+ import java.util.concurrent.ConcurrentHashMap;
11
+ import java.util.concurrent.Executor;
12
+
13
+ /**
14
+ * Follows found services with NsdManager.registerServiceInfoCallback (Android 14+) instead of one-shot resolves:
15
+ * services can be followed concurrently, updates (addresses, TXT records) are delivered as they change.
16
+ * Only loaded on API 34+, so older devices never touch these APIs.
17
+ */
18
+ @TargetApi(34)
19
+ class ServiceInfoCallbacks {
20
+ private static final String TAG = "ServiceInfoCallbacks";
21
+
22
+ interface Listener {
23
+ void onServiceUpdated(NsdServiceInfo serviceInfo);
24
+
25
+ void onRegistrationFailed(NsdServiceInfo serviceInfo, int errorCode);
26
+ }
27
+
28
+ private final NsdManager nsdManager;
29
+ private final Executor executor;
30
+ private final Listener listener;
31
+ private final Map<String, NsdManager.ServiceInfoCallback> callbacks = new ConcurrentHashMap<>();
32
+
33
+ ServiceInfoCallbacks(NsdManager nsdManager, Executor executor, Listener listener) {
34
+ this.nsdManager = nsdManager;
35
+ this.executor = executor;
36
+ this.listener = listener;
37
+ }
38
+
39
+ void register(final NsdServiceInfo serviceInfo) {
40
+ final String name = serviceInfo.getServiceName();
41
+ if (callbacks.containsKey(name)) {
42
+ return;
43
+ }
44
+
45
+ NsdManager.ServiceInfoCallback callback = new NsdManager.ServiceInfoCallback() {
46
+ @Override
47
+ public void onServiceInfoCallbackRegistrationFailed(int errorCode) {
48
+ callbacks.remove(name);
49
+ listener.onRegistrationFailed(serviceInfo, errorCode);
50
+ }
51
+
52
+ @Override
53
+ public void onServiceUpdated(NsdServiceInfo updated) {
54
+ listener.onServiceUpdated(updated);
55
+ }
56
+
57
+ @Override
58
+ public void onServiceLost() {
59
+ // Reported by the discovery listener
60
+ }
61
+
62
+ @Override
63
+ public void onServiceInfoCallbackUnregistered() {
64
+ }
65
+ };
66
+ callbacks.put(name, callback);
67
+ Log.d(TAG, "Following " + name + " with registerServiceInfoCallback");
68
+ nsdManager.registerServiceInfoCallback(serviceInfo, executor, callback);
69
+ }
70
+
71
+ void unregister(String name) {
72
+ NsdManager.ServiceInfoCallback callback = callbacks.remove(name);
73
+ if (callback == null) {
74
+ return;
75
+ }
76
+ try {
77
+ nsdManager.unregisterServiceInfoCallback(callback);
78
+ } catch (IllegalArgumentException e) {
79
+ // Registration failed or was already unregistered
80
+ Log.w(TAG, "unregisterServiceInfoCallback failed", e);
81
+ }
82
+ }
83
+
84
+ void unregisterAll() {
85
+ for (String name : new ArrayList<>(callbacks.keySet())) {
86
+ unregister(name);
87
+ }
88
+ }
89
+ }
@@ -7,12 +7,14 @@ import android.util.Log;
7
7
 
8
8
  import com.balthazargronon.RCTZeroconf.Zeroconf;
9
9
  import com.balthazargronon.RCTZeroconf.ZeroconfModule;
10
+ import com.facebook.react.bridge.Promise;
10
11
  import com.facebook.react.bridge.ReactApplicationContext;
11
12
  import com.facebook.react.bridge.ReadableArray;
12
13
  import com.facebook.react.bridge.WritableArray;
13
14
  import com.facebook.react.bridge.WritableMap;
14
15
  import com.facebook.react.bridge.WritableNativeArray;
15
16
  import com.facebook.react.bridge.WritableNativeMap;
17
+ import com.github.druk.dnssd.DNSSDException;
16
18
  import com.github.druk.rx2dnssd.BonjourService;
17
19
  import com.github.druk.rx2dnssd.Rx2Dnssd;
18
20
  import com.github.druk.rx2dnssd.Rx2DnssdEmbedded;
@@ -21,6 +23,7 @@ import java.net.InetAddress;
21
23
  import java.util.ArrayList;
22
24
  import java.util.HashMap;
23
25
  import java.util.LinkedHashMap;
26
+ import java.util.concurrent.ConcurrentHashMap;
24
27
  import java.util.Locale;
25
28
  import java.util.Map;
26
29
  import java.util.List;
@@ -37,12 +40,13 @@ public class DnssdImpl implements Zeroconf {
37
40
 
38
41
  private Rx2Dnssd rxDnssd;
39
42
 
40
- @Nullable
41
- private Disposable browseDisposable;
42
43
 
43
44
  private Map<String, BonjourService> mPublishedServices;
44
45
  private Map<String, Disposable> mRegisteredDisposables;
45
46
 
47
+ // Running browses, keyed by the id of the JS instance that started them
48
+ private final Map<String, Disposable> mBrowses = new ConcurrentHashMap<>();
49
+
46
50
  private ZeroconfModule zeroconfModule;
47
51
 
48
52
  private ReactApplicationContext reactApplicationContext;
@@ -59,7 +63,7 @@ public class DnssdImpl implements Zeroconf {
59
63
  /**
60
64
  * Creates the Rx2Dnssd implementation.
61
65
  * Always uses embedded mDNSResponder since it works across all Android versions.
62
- * The daemonic version (Rx2DnssdBindable) is unreliable on Android as the
66
+ * The daemonic version (not bundled) is unreliable on Android as the
63
67
  * system daemon at /dev/socket/mdnsd doesn't exist on most devices.
64
68
  */
65
69
  private Rx2Dnssd createDnssd(Context context) {
@@ -67,52 +71,101 @@ public class DnssdImpl implements Zeroconf {
67
71
  }
68
72
 
69
73
  @Override
70
- public void scan(String type, String protocol, String domain) {
71
- this.stop();
72
-
73
- if (multicastLock == null) {
74
- @SuppressLint("WifiManagerLeak") WifiManager wifi = (WifiManager) reactApplicationContext.getSystemService(Context.WIFI_SERVICE);
75
- multicastLock = wifi.createMulticastLock("multicastLock");
76
- multicastLock.setReferenceCounted(true);
77
- multicastLock.acquire();
78
- }
74
+ public void scan(final String scanId, String type, String protocol, String domain) {
75
+ this.stop(scanId);
76
+ acquireMulticastLock();
79
77
 
80
78
  String serviceType = getServiceType(type, protocol);
81
- Log.d(TAG, "Starting DNSSD scan for: " + serviceType);
79
+ Log.d(TAG, "Starting DNSSD scan " + scanId + " for: " + serviceType);
82
80
 
83
- // Emit start event
84
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_START, null);
81
+ sendScanEvent(ZeroconfModule.EVENT_START, new WritableNativeMap(), scanId);
85
82
 
86
- browseDisposable = rxDnssd.browse(serviceType, "local.")
83
+ // A service is reported once per network interface, count them so found/remove are emitted once
84
+ final Map<String, Integer> foundInterfaces = new HashMap<>();
85
+ Disposable browse = rxDnssd.browse(serviceType, "local.")
87
86
  .doOnNext(bonjourService -> {
87
+ String name = bonjourService.getServiceName();
88
+ Integer count = foundInterfaces.get(name);
89
+ int interfaces = count == null ? 0 : count;
88
90
  if (!bonjourService.isLost()) {
89
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_FOUND, serviceNameToMap(bonjourService));
91
+ foundInterfaces.put(name, interfaces + 1);
92
+ if (interfaces == 0) {
93
+ sendScanEvent(ZeroconfModule.EVENT_FOUND, serviceNameToMap(bonjourService), scanId);
94
+ }
95
+ } else if (interfaces <= 1) {
96
+ foundInterfaces.remove(name);
97
+ sendScanEvent(ZeroconfModule.EVENT_REMOVE, serviceNameToMap(bonjourService), scanId);
98
+ } else {
99
+ foundInterfaces.put(name, interfaces - 1);
90
100
  }
91
101
  })
102
+ .filter(bonjourService -> !bonjourService.isLost())
92
103
  // Resolve each service independently so a single failure doesn't end the whole browse
93
- .flatMap(bonjourService -> bonjourService.isLost()
94
- ? Flowable.just(bonjourService)
95
- : Flowable.just(bonjourService)
104
+ .flatMap(bonjourService -> Flowable.just(bonjourService)
96
105
  .compose(rxDnssd.resolve())
97
106
  .compose(rxDnssd.queryRecords())
98
107
  .onErrorResumeNext((Throwable throwable) -> {
99
108
  Log.e(TAG, "Error resolving service: ", throwable);
100
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_ERROR, "Resolving service failed: " + throwable.getMessage());
109
+ sendError(throwable, "Resolving service " + bonjourService.getServiceName() + " failed: ", bonjourService.getServiceName(), scanId);
101
110
  return Flowable.empty();
102
111
  }))
103
112
  .subscribeOn(Schedulers.io())
104
113
  .observeOn(AndroidSchedulers.mainThread())
105
114
  .subscribe(bonjourService -> {
115
+ // Lost services were filtered out above, a lost service could still come back from resolve
106
116
  if (bonjourService.isLost()) {
107
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_REMOVE, serviceNameToMap(bonjourService));
108
117
  return;
109
118
  }
110
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_RESOLVE, serviceInfoToMap(bonjourService));
119
+ sendScanEvent(ZeroconfModule.EVENT_RESOLVE, serviceInfoToMap(bonjourService), scanId);
111
120
  }, throwable -> {
112
121
  Log.e(TAG, "Error browsing services: ", throwable);
113
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_ERROR, "Browsing services failed: " + throwable.getMessage());
114
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_STOP, null);
122
+ sendError(throwable, "Browsing services failed: ", null, scanId);
123
+ if (mBrowses.remove(scanId) != null) {
124
+ releaseMulticastLock();
125
+ }
126
+ sendScanEvent(ZeroconfModule.EVENT_STOP, new WritableNativeMap(), scanId);
115
127
  });
128
+ mBrowses.put(scanId, browse);
129
+ }
130
+
131
+ private void sendScanEvent(String eventName, WritableMap body, String scanId) {
132
+ body.putString(ZeroconfModule.KEY_SCAN_ID, scanId);
133
+ zeroconfModule.sendEvent(reactApplicationContext, eventName, body);
134
+ }
135
+
136
+ private void acquireMulticastLock() {
137
+ if (multicastLock == null) {
138
+ @SuppressLint("WifiManagerLeak") WifiManager wifi = (WifiManager) reactApplicationContext.getSystemService(Context.WIFI_SERVICE);
139
+ multicastLock = wifi.createMulticastLock("multicastLock");
140
+ multicastLock.setReferenceCounted(true);
141
+ }
142
+ multicastLock.acquire();
143
+ }
144
+
145
+ private void releaseMulticastLock() {
146
+ if (multicastLock != null && multicastLock.isHeld()) {
147
+ multicastLock.release();
148
+ }
149
+ }
150
+
151
+ /**
152
+ * DNSSD errors carry their DNSServiceErrorType code, anything else is reported as an exception
153
+ */
154
+ private void sendError(Throwable throwable, String prefix, @Nullable String serviceName, @Nullable String scanId) {
155
+ if (throwable instanceof DNSSDException) {
156
+ DNSSDException dnssdException = (DNSSDException) throwable;
157
+ zeroconfModule.sendError(ZeroconfModule.ERROR_DOMAIN_DNSSD, dnssdException.getErrorCode(), prefix + throwable.getMessage(), serviceName, scanId);
158
+ } else {
159
+ zeroconfModule.sendError(ZeroconfModule.ERROR_DOMAIN_LIBRARY, ZeroconfModule.ERROR_CODE_EXCEPTION, prefix + throwable.getMessage(), serviceName, scanId);
160
+ }
161
+ }
162
+
163
+ private void rejectWith(@Nullable Promise promise, Throwable throwable, String prefix, @Nullable String serviceName) {
164
+ if (throwable instanceof DNSSDException) {
165
+ ZeroconfModule.reject(promise, ZeroconfModule.ERROR_DOMAIN_DNSSD, ((DNSSDException) throwable).getErrorCode(), prefix + throwable.getMessage(), serviceName);
166
+ } else {
167
+ ZeroconfModule.reject(promise, ZeroconfModule.ERROR_DOMAIN_LIBRARY, ZeroconfModule.ERROR_CODE_EXCEPTION, prefix + throwable.getMessage(), serviceName);
168
+ }
116
169
  }
117
170
 
118
171
  private WritableMap serviceNameToMap(BonjourService serviceInfo) {
@@ -158,42 +211,58 @@ public class DnssdImpl implements Zeroconf {
158
211
  }
159
212
 
160
213
  @Override
161
- public void stop() {
162
- if (browseDisposable != null) {
163
- browseDisposable.dispose();
164
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_STOP, null);
214
+ public void stop(String scanId) {
215
+ Disposable browse = mBrowses.remove(scanId);
216
+ if (browse == null) {
217
+ return;
165
218
  }
166
- if (multicastLock != null) {
167
- multicastLock.release();
219
+ browse.dispose();
220
+ releaseMulticastLock();
221
+ sendScanEvent(ZeroconfModule.EVENT_STOP, new WritableNativeMap(), scanId);
222
+ }
223
+
224
+ @Override
225
+ public void stopAll() {
226
+ for (String scanId : new ArrayList<>(mBrowses.keySet())) {
227
+ stop(scanId);
168
228
  }
169
- browseDisposable = null;
170
- multicastLock = null;
171
229
  }
172
230
 
173
231
  @Override
174
- public void unregisterService(String serviceName) {
232
+ public void unregisterService(String serviceName, @Nullable Promise promise) {
175
233
 
176
234
  BonjourService bs = mPublishedServices.get(serviceName);
235
+ Disposable registerDisposable = mRegisteredDisposables.get(serviceName);
236
+ if (bs == null && registerDisposable == null) {
237
+ ZeroconfModule.reject(promise, ZeroconfModule.ERROR_DOMAIN_LIBRARY, ZeroconfModule.ERROR_CODE_NOT_PUBLISHED, "Service " + serviceName + " is not published", serviceName);
238
+ return;
239
+ }
240
+
177
241
  if (bs != null) {
178
242
  zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_UNREGISTERED, serviceInfoToMap(bs));
179
243
  mPublishedServices.remove(serviceName);
180
244
  }
181
245
 
182
- Disposable registerDisposable = mRegisteredDisposables.get(serviceName);
183
246
  if (registerDisposable != null && !registerDisposable.isDisposed()) {
184
247
  registerDisposable.dispose();
185
- mRegisteredDisposables.remove(serviceName);
186
248
  }
249
+ mRegisteredDisposables.remove(serviceName);
187
250
 
251
+ // Disposing unregisters synchronously
252
+ if (promise != null) {
253
+ promise.resolve(bs != null ? serviceInfoToMap(bs) : null);
254
+ }
188
255
  }
189
256
 
190
257
  @Override
191
- public void registerService(String type, String protocol, String domain, String name, int port, ReadableArray txt) {
258
+ public void registerService(String type, String protocol, String domain, String name, int port, ReadableArray txt, Promise promise) {
192
259
  BonjourService bs = new BonjourService.Builder(0, 0, name, getServiceType(type, protocol), null)
193
260
  .port(port)
194
261
  .dnsRecords(getTxtRecordMap(txt))
195
262
  .build();
196
263
 
264
+ // Resolved once, the registration stream can emit again later
265
+ final Promise[] registerPromise = { promise };
197
266
  Disposable registerDisposable = rxDnssd.register(bs)
198
267
  .subscribeOn(Schedulers.io())
199
268
  .observeOn(AndroidSchedulers.mainThread())
@@ -202,9 +271,15 @@ public class DnssdImpl implements Zeroconf {
202
271
 
203
272
  mPublishedServices.put(bs.getServiceName(), bs);
204
273
  zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_PUBLISHED, serviceInfoToMap(bonjourService));
274
+ if (registerPromise[0] != null) {
275
+ registerPromise[0].resolve(serviceInfoToMap(bonjourService));
276
+ registerPromise[0] = null;
277
+ }
205
278
  }, throwable -> {
206
279
  Log.e(TAG, "Error registering service: ", throwable);
207
- zeroconfModule.sendEvent(reactApplicationContext, ZeroconfModule.EVENT_ERROR, "Registering service failed: " + throwable.getMessage());
280
+ sendError(throwable, "Registering service " + name + " failed: ", name, null);
281
+ rejectWith(registerPromise[0], throwable, "Registering service " + name + " failed: ", name);
282
+ registerPromise[0] = null;
208
283
  mRegisteredDisposables.remove(name);
209
284
  });
210
285
 
@@ -214,7 +289,7 @@ public class DnssdImpl implements Zeroconf {
214
289
  @Override
215
290
  public void unregisterAllServices() {
216
291
  for (String serviceName : new ArrayList<>(mRegisteredDisposables.keySet())) {
217
- unregisterService(serviceName);
292
+ unregisterService(serviceName, null);
218
293
  }
219
294
  }
220
295
 
@@ -1,10 +1,5 @@
1
1
  LOCAL_PATH := $(call my-dir)
2
2
 
3
- commonSources := \
4
- mdnsresponder/mDNSShared/dnssd_clientlib.c \
5
- mdnsresponder/mDNSShared/dnssd_clientstub.c \
6
- mdnsresponder/mDNSShared/dnssd_ipc.c
7
-
8
3
  commonFlags := \
9
4
  -O2 -g \
10
5
  -fno-strict-aliasing \
@@ -73,23 +68,5 @@ LOCAL_LDLIBS := -llog
73
68
  LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"
74
69
  include $(BUILD_SHARED_LIBRARY)
75
70
 
76
- ### DAEMONIC LIB (for Android < 12) ###
77
- include $(CLEAR_VARS)
78
-
79
- LOCAL_SDK_VERSION := 8
80
- LOCAL_MODULE := jdns_sd
81
- LOCAL_SRC_FILES := $(commonSources) JNISupport.c
82
-
83
- LOCAL_C_INCLUDES := $(LOCAL_PATH)/mdnsresponder/mDNSShared \
84
- $(LOCAL_PATH)
85
-
86
- LOCAL_CFLAGS += $(commonFlags)
87
- LOCAL_LDLIBS := -llog
88
- LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"
89
- include $(BUILD_SHARED_LIBRARY)
90
-
91
- # NOTE: Both libraries are built with 16KB page alignment for Android 15+ compatibility
92
- # However, only jdns_sd_embedded is used at runtime (see DnssdImpl.java)
93
- # - jdns_sd: Daemonic implementation (requires /dev/socket/mdnsd - not available on most devices)
94
- # - jdns_sd_embedded: Embedded mDNSResponder (used for all Android versions)
71
+ # NOTE: Built with 16KB page alignment for Android 15+ compatibility
95
72
  # See: https://developer.android.com/guide/practices/page-sizes
@@ -1,3 +1,3 @@
1
1
  APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
2
2
  APP_PLATFORM := android-21
3
- APP_STL := c++_shared
3
+ APP_STL := none