com.wallstop-studios.dxmessaging 2.1.4 → 2.1.5

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 (1219) hide show
  1. package/.artifacts/SourceGenerators.Tests/TestResults/0e800bba-2376-4062-bb19-cf916d3083a1/coverage.cobertura.xml +2624 -0
  2. package/.artifacts/SourceGenerators.Tests/TestResults/260ab294-e640-4674-9ae9-29b5344c0540/coverage.cobertura.xml +2624 -0
  3. package/.artifacts/SourceGenerators.Tests/TestResults/31c02772-7d85-4466-a2c4-93742725076e/coverage.cobertura.xml +2624 -0
  4. package/.artifacts/SourceGenerators.Tests/TestResults/ca4d2ef2-0c53-49dc-91b5-039938571ed8/coverage.cobertura.xml +2624 -0
  5. package/.artifacts/SourceGenerators.Tests/TestResults/f6cadd7e-1bf5-44b0-9351-47426600fc69/coverage.cobertura.xml +2624 -0
  6. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/.msCoverageSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
  7. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/CoverletSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
  8. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.ApplicationInsights.dll +0 -0
  9. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.CodeAnalysis.CSharp.dll +0 -0
  10. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.CodeAnalysis.dll +0 -0
  11. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.AdapterUtilities.dll +0 -0
  12. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.CommunicationUtilities.dll +0 -0
  13. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.CoreUtilities.dll +0 -0
  14. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.CrossPlatEngine.dll +0 -0
  15. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.PlatformAbstractions.dll +0 -0
  16. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.Utilities.dll +0 -0
  17. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Extensions.MSBuild.dll +0 -0
  18. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Extensions.Telemetry.dll +0 -0
  19. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll +0 -0
  20. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Extensions.VSTestBridge.dll +0 -0
  21. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Platform.dll +0 -0
  22. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll +0 -0
  23. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.VisualStudio.TestPlatform.Common.dll +0 -0
  24. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll +0 -0
  25. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/NUnit3.TestAdapter.dll +0 -0
  26. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Newtonsoft.Json.dll +0 -0
  27. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.deps.json +872 -0
  28. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  29. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.runtimeconfig.json +13 -0
  30. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
  31. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  32. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.CodeAnalysis.resources.dll +0 -0
  33. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  34. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  35. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  36. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  37. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  38. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  39. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  40. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.Testing.Platform.resources.dll +0 -0
  41. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  42. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  43. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  44. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.CodeAnalysis.resources.dll +0 -0
  45. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  46. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  47. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  48. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  49. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  50. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  51. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  52. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.Testing.Platform.resources.dll +0 -0
  53. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  54. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  55. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  56. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.CodeAnalysis.resources.dll +0 -0
  57. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  58. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  59. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  60. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  61. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  62. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  63. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  64. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.Testing.Platform.resources.dll +0 -0
  65. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  66. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  67. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  68. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.CodeAnalysis.resources.dll +0 -0
  69. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  70. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  71. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  72. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  73. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  74. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  75. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  76. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.Testing.Platform.resources.dll +0 -0
  77. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  78. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  79. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  80. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.CodeAnalysis.resources.dll +0 -0
  81. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  82. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  83. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  84. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  85. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  86. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  87. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  88. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.Testing.Platform.resources.dll +0 -0
  89. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  90. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  91. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  92. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.CodeAnalysis.resources.dll +0 -0
  93. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  94. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  95. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  96. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  97. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  98. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  99. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  100. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.Testing.Platform.resources.dll +0 -0
  101. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  102. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  103. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  104. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.CodeAnalysis.resources.dll +0 -0
  105. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  106. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  107. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  108. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  109. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  110. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  111. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  112. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.Testing.Platform.resources.dll +0 -0
  113. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  114. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  115. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.engine.api.dll +0 -0
  116. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.engine.core.dll +0 -0
  117. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.engine.dll +0 -0
  118. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.framework.dll +0 -0
  119. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.framework.legacy.dll +0 -0
  120. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  121. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.CodeAnalysis.resources.dll +0 -0
  122. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  123. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  124. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  125. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  126. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  127. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  128. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  129. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.Testing.Platform.resources.dll +0 -0
  130. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  131. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  132. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  133. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.CodeAnalysis.resources.dll +0 -0
  134. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  135. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  136. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  137. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  138. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  139. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  140. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  141. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.Testing.Platform.resources.dll +0 -0
  142. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  143. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  144. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  145. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.CodeAnalysis.resources.dll +0 -0
  146. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  147. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  148. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  149. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  150. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  151. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  152. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  153. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.Testing.Platform.resources.dll +0 -0
  154. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  155. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  156. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/testcentric.engine.metadata.dll +0 -0
  157. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/testhost.dll +0 -0
  158. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/testhost.exe +0 -0
  159. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  160. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.CodeAnalysis.resources.dll +0 -0
  161. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  162. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  163. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  164. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  165. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  166. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  167. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  168. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.Testing.Platform.resources.dll +0 -0
  169. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  170. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  171. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  172. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll +0 -0
  173. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  174. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  175. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  176. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  177. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  178. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  179. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  180. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.Testing.Platform.resources.dll +0 -0
  181. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  182. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  183. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  184. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll +0 -0
  185. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  186. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  187. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  188. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  189. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  190. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  191. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  192. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.Testing.Platform.resources.dll +0 -0
  193. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  194. package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  195. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/.msCoverageSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
  196. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/CoverletSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
  197. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.ApplicationInsights.dll +0 -0
  198. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.CodeAnalysis.CSharp.dll +0 -0
  199. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.CodeAnalysis.dll +0 -0
  200. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Extensions.DependencyModel.dll +0 -0
  201. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.AdapterUtilities.dll +0 -0
  202. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.CommunicationUtilities.dll +0 -0
  203. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.CoreUtilities.dll +0 -0
  204. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.CrossPlatEngine.dll +0 -0
  205. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.PlatformAbstractions.dll +0 -0
  206. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.Utilities.dll +0 -0
  207. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Extensions.MSBuild.dll +0 -0
  208. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Extensions.Telemetry.dll +0 -0
  209. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll +0 -0
  210. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Extensions.VSTestBridge.dll +0 -0
  211. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Platform.dll +0 -0
  212. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll +0 -0
  213. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.VisualStudio.TestPlatform.Common.dll +0 -0
  214. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll +0 -0
  215. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/NUnit3.TestAdapter.dll +0 -0
  216. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Newtonsoft.Json.dll +0 -0
  217. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.deps.json +817 -0
  218. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  219. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.runtimeconfig.json +14 -0
  220. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
  221. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  222. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.CodeAnalysis.resources.dll +0 -0
  223. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  224. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  225. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  226. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  227. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  228. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  229. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  230. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.Testing.Platform.resources.dll +0 -0
  231. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  232. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  233. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  234. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.CodeAnalysis.resources.dll +0 -0
  235. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  236. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  237. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  238. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  239. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  240. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  241. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  242. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.Testing.Platform.resources.dll +0 -0
  243. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  244. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  245. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  246. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.CodeAnalysis.resources.dll +0 -0
  247. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  248. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  249. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  250. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  251. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  252. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  253. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  254. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.Testing.Platform.resources.dll +0 -0
  255. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  256. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  257. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  258. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.CodeAnalysis.resources.dll +0 -0
  259. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  260. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  261. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  262. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  263. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  264. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  265. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  266. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.Testing.Platform.resources.dll +0 -0
  267. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  268. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  269. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  270. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.CodeAnalysis.resources.dll +0 -0
  271. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  272. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  273. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  274. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  275. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  276. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  277. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  278. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.Testing.Platform.resources.dll +0 -0
  279. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  280. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  281. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  282. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.CodeAnalysis.resources.dll +0 -0
  283. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  284. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  285. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  286. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  287. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  288. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  289. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  290. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.Testing.Platform.resources.dll +0 -0
  291. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  292. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  293. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  294. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.CodeAnalysis.resources.dll +0 -0
  295. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  296. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  297. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  298. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  299. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  300. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  301. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  302. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.Testing.Platform.resources.dll +0 -0
  303. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  304. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  305. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.engine.api.dll +0 -0
  306. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.engine.core.dll +0 -0
  307. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.engine.dll +0 -0
  308. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.framework.dll +0 -0
  309. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.framework.legacy.dll +0 -0
  310. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  311. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.CodeAnalysis.resources.dll +0 -0
  312. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  313. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  314. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  315. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  316. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  317. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  318. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  319. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.Testing.Platform.resources.dll +0 -0
  320. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  321. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  322. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  323. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.CodeAnalysis.resources.dll +0 -0
  324. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  325. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  326. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  327. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  328. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  329. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  330. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  331. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.Testing.Platform.resources.dll +0 -0
  332. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  333. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  334. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  335. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.CodeAnalysis.resources.dll +0 -0
  336. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  337. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  338. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  339. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  340. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  341. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  342. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  343. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.Testing.Platform.resources.dll +0 -0
  344. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  345. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  346. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/testcentric.engine.metadata.dll +0 -0
  347. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/testhost.dll +0 -0
  348. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/testhost.exe +0 -0
  349. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  350. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.CodeAnalysis.resources.dll +0 -0
  351. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  352. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  353. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  354. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  355. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  356. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  357. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  358. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.Testing.Platform.resources.dll +0 -0
  359. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  360. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  361. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  362. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll +0 -0
  363. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  364. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  365. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  366. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  367. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  368. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  369. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  370. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.Testing.Platform.resources.dll +0 -0
  371. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  372. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  373. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  374. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll +0 -0
  375. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  376. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  377. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  378. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  379. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  380. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  381. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  382. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.Testing.Platform.resources.dll +0 -0
  383. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  384. package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  385. package/.artifacts/SourceGenerators.Tests/bin/net9.0/.msCoverageSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
  386. package/.artifacts/SourceGenerators.Tests/bin/net9.0/CoverletSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
  387. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.ApplicationInsights.dll +0 -0
  388. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.CodeAnalysis.CSharp.dll +0 -0
  389. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.CodeAnalysis.dll +0 -0
  390. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Extensions.DependencyModel.dll +0 -0
  391. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.AdapterUtilities.dll +0 -0
  392. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.CommunicationUtilities.dll +0 -0
  393. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.CoreUtilities.dll +0 -0
  394. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.CrossPlatEngine.dll +0 -0
  395. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.PlatformAbstractions.dll +0 -0
  396. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.Utilities.dll +0 -0
  397. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Extensions.MSBuild.dll +0 -0
  398. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Extensions.Telemetry.dll +0 -0
  399. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll +0 -0
  400. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Extensions.VSTestBridge.dll +0 -0
  401. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Platform.dll +0 -0
  402. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll +0 -0
  403. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.VisualStudio.TestPlatform.Common.dll +0 -0
  404. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll +0 -0
  405. package/.artifacts/SourceGenerators.Tests/bin/net9.0/NUnit3.TestAdapter.dll +0 -0
  406. package/.artifacts/SourceGenerators.Tests/bin/net9.0/Newtonsoft.Json.dll +0 -0
  407. package/.artifacts/SourceGenerators.Tests/bin/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.deps.json +872 -0
  408. package/.artifacts/SourceGenerators.Tests/bin/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  409. package/.artifacts/SourceGenerators.Tests/bin/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.runtimeconfig.json +13 -0
  410. package/.artifacts/SourceGenerators.Tests/bin/net9.0/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
  411. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  412. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.CodeAnalysis.resources.dll +0 -0
  413. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  414. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  415. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  416. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  417. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  418. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  419. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  420. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.Testing.Platform.resources.dll +0 -0
  421. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  422. package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  423. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  424. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.CodeAnalysis.resources.dll +0 -0
  425. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  426. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  427. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  428. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  429. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  430. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  431. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  432. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.Testing.Platform.resources.dll +0 -0
  433. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  434. package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  435. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  436. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.CodeAnalysis.resources.dll +0 -0
  437. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  438. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  439. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  440. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  441. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  442. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  443. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  444. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.Testing.Platform.resources.dll +0 -0
  445. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  446. package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  447. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  448. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.CodeAnalysis.resources.dll +0 -0
  449. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  450. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  451. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  452. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  453. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  454. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  455. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  456. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.Testing.Platform.resources.dll +0 -0
  457. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  458. package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  459. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  460. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.CodeAnalysis.resources.dll +0 -0
  461. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  462. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  463. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  464. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  465. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  466. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  467. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  468. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.Testing.Platform.resources.dll +0 -0
  469. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  470. package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  471. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  472. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.CodeAnalysis.resources.dll +0 -0
  473. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  474. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  475. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  476. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  477. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  478. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  479. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  480. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.Testing.Platform.resources.dll +0 -0
  481. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  482. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  483. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  484. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.CodeAnalysis.resources.dll +0 -0
  485. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  486. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  487. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  488. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  489. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  490. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  491. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  492. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.Testing.Platform.resources.dll +0 -0
  493. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  494. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  495. package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.engine.api.dll +0 -0
  496. package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.engine.core.dll +0 -0
  497. package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.engine.dll +0 -0
  498. package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.framework.dll +0 -0
  499. package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.framework.legacy.dll +0 -0
  500. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  501. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.CodeAnalysis.resources.dll +0 -0
  502. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  503. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  504. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  505. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  506. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  507. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  508. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  509. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.Testing.Platform.resources.dll +0 -0
  510. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  511. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  512. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  513. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.CodeAnalysis.resources.dll +0 -0
  514. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  515. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  516. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  517. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  518. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  519. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  520. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  521. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.Testing.Platform.resources.dll +0 -0
  522. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  523. package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  524. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  525. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.CodeAnalysis.resources.dll +0 -0
  526. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  527. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  528. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  529. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  530. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  531. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  532. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  533. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.Testing.Platform.resources.dll +0 -0
  534. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  535. package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  536. package/.artifacts/SourceGenerators.Tests/bin/net9.0/testcentric.engine.metadata.dll +0 -0
  537. package/.artifacts/SourceGenerators.Tests/bin/net9.0/testhost.dll +0 -0
  538. package/.artifacts/SourceGenerators.Tests/bin/net9.0/testhost.exe +0 -0
  539. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  540. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.CodeAnalysis.resources.dll +0 -0
  541. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  542. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  543. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  544. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  545. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  546. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  547. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  548. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.Testing.Platform.resources.dll +0 -0
  549. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  550. package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  551. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  552. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll +0 -0
  553. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  554. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  555. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  556. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  557. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  558. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  559. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  560. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.Testing.Platform.resources.dll +0 -0
  561. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  562. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  563. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
  564. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll +0 -0
  565. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
  566. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
  567. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
  568. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
  569. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
  570. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
  571. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
  572. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.Testing.Platform.resources.dll +0 -0
  573. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
  574. package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
  575. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
  576. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/Wallstop.9ADB0525.Up2Date +0 -0
  577. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.AssemblyInfo.cs +22 -0
  578. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GeneratedMSBuildEditorConfig.editorconfig +25 -0
  579. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GlobalUsings.g.cs +8 -0
  580. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.FileListAbsolute.txt +28 -0
  581. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  582. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.sourcelink.json +1 -0
  583. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/ref/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  584. package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/refint/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  585. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
  586. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/Wallstop.9ADB0525.Up2Date +0 -0
  587. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.AssemblyInfo.cs +23 -0
  588. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GeneratedMSBuildEditorConfig.editorconfig +17 -0
  589. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GlobalUsings.g.cs +8 -0
  590. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.BuildWithSkipAnalyzers +0 -0
  591. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.FileListAbsolute.txt +84 -0
  592. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  593. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.sourcelink.json +1 -0
  594. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/ref/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  595. package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/refint/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  596. package/.artifacts/SourceGenerators.Tests/obj/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
  597. package/.artifacts/SourceGenerators.Tests/obj/net9.0/Wallstop.9ADB0525.Up2Date +0 -0
  598. package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.AssemblyInfo.cs +22 -0
  599. package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GeneratedMSBuildEditorConfig.editorconfig +23 -0
  600. package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GlobalUsings.g.cs +8 -0
  601. package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.FileListAbsolute.txt +55 -0
  602. package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  603. package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.sourcelink.json +1 -0
  604. package/.artifacts/SourceGenerators.Tests/obj/net9.0/ref/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  605. package/.artifacts/SourceGenerators.Tests/obj/net9.0/refint/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
  606. package/.config/dotnet-tools.json +1 -1
  607. package/.csharpierignore +1 -1
  608. package/.cspell.json +219 -0
  609. package/.cursorrules +3 -0
  610. package/.devcontainer/.dockerignore +92 -0
  611. package/.devcontainer/Dockerfile +475 -0
  612. package/.devcontainer/devcontainer.json +54 -0
  613. package/.devcontainer/verify-tools.sh +183 -0
  614. package/.editorconfig +6 -0
  615. package/.gitattributes +12 -0
  616. package/.github/ISSUE_TEMPLATE/bug_report.yml +95 -0
  617. package/.github/ISSUE_TEMPLATE/config.yml +5 -0
  618. package/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
  619. package/.github/copilot-instructions.md +3 -0
  620. package/.github/dependabot.yml +36 -2
  621. package/.github/pull_request_template.md +30 -0
  622. package/.github/release-drafter.yml +92 -0
  623. package/.github/scripts/check-markdown-links.ps1 +27 -3
  624. package/.github/scripts/check_markdown_links.py +132 -34
  625. package/.github/scripts/test_check_markdown_links.py +545 -0
  626. package/.github/workflows/actionlint.yml +37 -0
  627. package/.github/workflows/csharpier-autofix.yml +15 -6
  628. package/.github/workflows/deploy-docs.yml +118 -0
  629. package/.github/workflows/dotnet-tests.yml +2 -2
  630. package/.github/workflows/format-on-demand.yml +28 -18
  631. package/.github/workflows/json-format-check.yml +2 -1
  632. package/.github/workflows/lint-doc-links.yml +2 -1
  633. package/.github/workflows/markdown-json.yml +2 -1
  634. package/.github/workflows/markdown-link-text-check.yml +2 -1
  635. package/.github/workflows/markdown-link-validity.yml +2 -1
  636. package/.github/workflows/markdownlint.yml +25 -1
  637. package/.github/workflows/prettier-autofix.yml +23 -8
  638. package/.github/workflows/release-drafter.yml +135 -0
  639. package/.github/workflows/spellcheck.yml +56 -0
  640. package/.github/workflows/sync-wiki.yml +139 -0
  641. package/.github/workflows/update-dotnet-tools.yml +7 -3
  642. package/.github/workflows/validate-docs.yml +196 -0
  643. package/.github/workflows/validate-skills.yml +46 -0
  644. package/.github/workflows/yaml-format-lint.yml +2 -1
  645. package/.llm/context.md +269 -0
  646. package/.llm/skills/documentation/changelog-entry-writing.md +277 -0
  647. package/.llm/skills/documentation/changelog-management.md +190 -0
  648. package/.llm/skills/documentation/changelog-release-workflow.md +249 -0
  649. package/.llm/skills/documentation/documentation-code-samples.md +262 -0
  650. package/.llm/skills/documentation/documentation-style-guide.md +185 -0
  651. package/.llm/skills/documentation/documentation-update-workflow.md +146 -0
  652. package/.llm/skills/documentation/documentation-updates.md +146 -0
  653. package/.llm/skills/documentation/documentation-xml-docs.md +190 -0
  654. package/.llm/skills/documentation/external-url-fragment-validation.md +181 -0
  655. package/.llm/skills/documentation/github-actions-version-consistency.md +203 -0
  656. package/.llm/skills/documentation/link-quality-guidelines.md +267 -0
  657. package/.llm/skills/documentation/skill-file-sizing.md +260 -0
  658. package/.llm/skills/index.md +231 -0
  659. package/.llm/skills/performance/aggressive-inlining-performance-notes.md +94 -0
  660. package/.llm/skills/performance/aggressive-inlining.md +342 -0
  661. package/.llm/skills/performance/array-pooling-usage-examples.md +145 -0
  662. package/.llm/skills/performance/array-pooling.md +315 -0
  663. package/.llm/skills/performance/cache-eviction-builder.md +203 -0
  664. package/.llm/skills/performance/cache-eviction-implementation.md +340 -0
  665. package/.llm/skills/performance/cache-eviction-policies.md +176 -0
  666. package/.llm/skills/performance/collection-pooling.md +313 -0
  667. package/.llm/skills/performance/object-pooling-anti-patterns.md +144 -0
  668. package/.llm/skills/performance/object-pooling-usage-examples.md +114 -0
  669. package/.llm/skills/performance/object-pooling-variations.md +147 -0
  670. package/.llm/skills/performance/object-pooling.md +319 -0
  671. package/.llm/skills/performance/readonly-struct-cached-hash-performance-notes.md +91 -0
  672. package/.llm/skills/performance/readonly-struct-cached-hash.md +337 -0
  673. package/.llm/skills/performance/serializable-dictionary-property-drawer.md +147 -0
  674. package/.llm/skills/performance/serializable-dictionary-usage-examples.md +135 -0
  675. package/.llm/skills/performance/serializable-dictionary.md +281 -0
  676. package/.llm/skills/performance/singleton-autoload.md +111 -0
  677. package/.llm/skills/performance/singleton-patterns.md +165 -0
  678. package/.llm/skills/performance/singleton-runtime.md +187 -0
  679. package/.llm/skills/performance/singleton-scriptableobject.md +177 -0
  680. package/.llm/skills/performance/singleton-usage-examples.md +139 -0
  681. package/.llm/skills/performance/stringbuilder-pooling.md +319 -0
  682. package/.llm/skills/performance/yield-instruction-pooling.md +347 -0
  683. package/.llm/skills/scripting/cross-platform-compatibility.md +224 -0
  684. package/{Docs/Comparisons.md.meta → .llm/skills/scripting/cross-platform-compatibility.md.meta} +1 -1
  685. package/.llm/skills/scripting/powershell-best-practices.md +386 -0
  686. package/.llm/skills/scripting/shell-best-practices.md +335 -0
  687. package/.llm/skills/solid/collection-extensions-accessors.md +229 -0
  688. package/.llm/skills/solid/collection-extensions-shuffle.md +144 -0
  689. package/.llm/skills/solid/collection-extensions-type-specialization.md +168 -0
  690. package/.llm/skills/solid/collection-extensions.md +144 -0
  691. package/.llm/skills/solid/fluent-builder-pattern-templates.md +117 -0
  692. package/.llm/skills/solid/fluent-builder-pattern-usage-examples.md +128 -0
  693. package/.llm/skills/solid/fluent-builder-pattern.md +322 -0
  694. package/.llm/skills/solid/iequatable-implementation-usage.md +111 -0
  695. package/.llm/skills/solid/iequatable-implementation-variants.md +201 -0
  696. package/.llm/skills/solid/iequatable-implementation.md +239 -0
  697. package/.llm/skills/solid/try-pattern-apis-usage.md +136 -0
  698. package/.llm/skills/solid/try-pattern-apis-variants.md +233 -0
  699. package/.llm/skills/solid/try-pattern-apis.md +220 -0
  700. package/.llm/skills/specification.md +465 -0
  701. package/.llm/skills/templates/skill-template.md +143 -0
  702. package/.llm/skills/testing/comprehensive-test-coverage.md +141 -0
  703. package/.llm/skills/testing/data-driven-tests-sources.md +255 -0
  704. package/.llm/skills/testing/data-driven-tests-usage.md +107 -0
  705. package/.llm/skills/testing/data-driven-tests.md +197 -0
  706. package/.llm/skills/testing/git-workflow-robustness.md +369 -0
  707. package/.llm/skills/testing/script-test-coverage.md +259 -0
  708. package/{Docs/DesignAndArchitecture.md.meta → .llm/skills/testing/script-test-coverage.md.meta} +1 -1
  709. package/.llm/skills/testing/shared-test-fixtures-generic-base.md +185 -0
  710. package/.llm/skills/testing/shared-test-fixtures-reference-counting.md +252 -0
  711. package/.llm/skills/testing/shared-test-fixtures.md +165 -0
  712. package/.llm/skills/testing/test-base-class-cleanup-usage.md +218 -0
  713. package/.llm/skills/testing/test-base-class-cleanup.md +323 -0
  714. package/.llm/skills/testing/test-categories-execution.md +142 -0
  715. package/.llm/skills/testing/test-categories.md +287 -0
  716. package/.llm/skills/testing/test-coverage-data-driven.md +172 -0
  717. package/.llm/skills/testing/test-coverage-organization-assertions.md +171 -0
  718. package/.llm/skills/testing/test-coverage-scenario-categories.md +223 -0
  719. package/.llm/skills/testing/test-coverage-unity-anti-patterns.md +232 -0
  720. package/.llm/skills/testing/test-diagnostics-patterns.md +189 -0
  721. package/.llm/skills/testing/test-diagnostics-usage.md +196 -0
  722. package/.llm/skills/testing/test-diagnostics.md +247 -0
  723. package/.llm/skills/testing/test-failure-investigation-procedure.md +216 -0
  724. package/.llm/skills/testing/test-failure-investigation-root-causes.md +186 -0
  725. package/.llm/skills/testing/test-failure-investigation.md +119 -0
  726. package/.llm/skills/testing/test-invalid-skill.md +26 -0
  727. package/.lychee.toml +3 -1
  728. package/.markdownlint.json +2 -0
  729. package/.markdownlint.jsonc +2 -0
  730. package/.markdownlintignore +7 -7
  731. package/.pre-commit-config.yaml +80 -3
  732. package/.prettierignore +21 -21
  733. package/.vs/ProjectEvaluation/com.wallstop-studios.dxmessaging.metadata.v10.bin +0 -0
  734. package/.vs/ProjectEvaluation/com.wallstop-studios.dxmessaging.projects.v10.bin +0 -0
  735. package/.vs/ProjectEvaluation/com.wallstop-studios.dxmessaging.strings.v10.bin +0 -0
  736. package/.vs/ProjectSettings.json +3 -0
  737. package/.vs/VSWorkspaceState.json +9 -0
  738. package/.vs/com.wallstop-studios.dxmessaging/CopilotIndices/17.14.1347.20289/CodeChunks.db +0 -0
  739. package/.vs/com.wallstop-studios.dxmessaging/CopilotIndices/17.14.1347.20289/SemanticSymbols.db +0 -0
  740. package/.vs/com.wallstop-studios.dxmessaging/DesignTimeBuild/.dtbcache.v2 +0 -0
  741. package/.vs/com.wallstop-studios.dxmessaging/FileContentIndex/41b4588f-fa0f-484b-a29b-733b6ce84c26.vsidx +0 -0
  742. package/.vs/com.wallstop-studios.dxmessaging/FileContentIndex/9a73875f-5693-4296-95fd-0672bf61c5ac.vsidx +0 -0
  743. package/.vs/com.wallstop-studios.dxmessaging/FileContentIndex/fd44ab3e-7015-4c20-918a-a0a916be8934.vsidx +0 -0
  744. package/.vs/com.wallstop-studios.dxmessaging/v17/.futdcache.v2 +0 -0
  745. package/.vs/com.wallstop-studios.dxmessaging/v17/.wsuo +0 -0
  746. package/.vs/com.wallstop-studios.dxmessaging/v17/DocumentLayout.backup.json +82 -0
  747. package/.vs/com.wallstop-studios.dxmessaging/v17/DocumentLayout.json +82 -0
  748. package/.vs/com.wallstop-studios.dxmessaging/v17/TestStore/0/000.testlog +0 -0
  749. package/.vs/com.wallstop-studios.dxmessaging/v17/TestStore/0/testlog.manifest +0 -0
  750. package/.vs/com.wallstop-studios.dxmessaging/v17/csharpier.json +1 -0
  751. package/.vs/com.wallstop-studios.dxmessaging/v18/.futdcache.v2 +0 -0
  752. package/.vs/com.wallstop-studios.dxmessaging/v18/DocumentLayout.backup.json +86 -0
  753. package/.vs/com.wallstop-studios.dxmessaging/v18/DocumentLayout.json +86 -0
  754. package/.vs/slnx.sqlite +0 -0
  755. package/AGENTS.md +1 -50
  756. package/CHANGELOG.md +31 -0
  757. package/CLAUDE.md +3 -0
  758. package/{Docs/Compatibility.md.meta → CLAUDE.md.meta} +1 -1
  759. package/CONTRIBUTING.md +8 -4
  760. package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
  761. package/Editor/Settings/DxMessagingSettings.cs +2 -3
  762. package/README.md +144 -109
  763. package/Runtime/Core/MessageBus/IMessageBus.cs +20 -1
  764. package/Runtime/Core/MessageBus/MessageBus.cs +2267 -1061
  765. package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs +4 -2
  766. package/Runtime/Core/MessageHandler.cs +519 -6
  767. package/Samples~/DI/README.md +2 -2
  768. package/Samples~/Mini Combat/README.md +7 -7
  769. package/Samples~/Mini Combat/Walkthrough.md +12 -12
  770. package/Samples~/UI Buttons + Inspector/README.md +8 -8
  771. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/CopilotIndices/17.14.1231.31060/CodeChunks.db +0 -0
  772. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/CopilotIndices/17.14.1231.31060/SemanticSymbols.db +0 -0
  773. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/DesignTimeBuild/.dtbcache.v2 +0 -0
  774. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/FileContentIndex/c90afd9b-d899-4546-bd92-ab874e448437.vsidx +0 -0
  775. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/v17/.futdcache.v2 +0 -0
  776. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/DocsSnippetCompilationTests.cs +355 -4
  777. package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj +2 -2
  778. package/Tests/Runtime/Benchmarks/BenchmarkSession.cs +6 -3
  779. package/Tests/Runtime/Core/BroadcastTests.cs +80 -66
  780. package/Tests/Runtime/Core/CyclicBufferTests.cs +284 -14
  781. package/Tests/Runtime/Core/DiagnosticsTests.cs +72 -0
  782. package/Tests/Runtime/Core/DxMessagingStaticStateTests.cs +1 -1
  783. package/Tests/Runtime/Core/GlobalAcceptAllTests.cs +26 -26
  784. package/Tests/Runtime/Core/MutationDedupeTests.cs +24 -24
  785. package/Tests/Runtime/Core/MutationDuringEmissionTests.cs +126 -9
  786. package/Tests/Runtime/Core/MutationHighVolumeStressTests.cs +512 -0
  787. package/Tests/Runtime/Core/MutationHighVolumeStressTests.cs.meta +11 -0
  788. package/Tests/Runtime/Core/NominalTests.cs +82 -81
  789. package/Tests/Runtime/Core/PostProcessorTests.cs +108 -99
  790. package/Tests/Runtime/Core/RegistrationTests.cs +159 -159
  791. package/Tests/Runtime/Core/TargetedTests.cs +80 -66
  792. package/Tests/Runtime/Core/UntargetedTests.cs +25 -20
  793. package/Tests/Runtime/Integrations/Zenject/ZenjectIntegrationTests.cs +0 -1
  794. package/coverage/clover.xml +6 -0
  795. package/{Docs/Advanced.md.meta → coverage/clover.xml.meta} +7 -7
  796. package/coverage/coverage-final.json +1 -0
  797. package/coverage/coverage-final.json.meta +7 -0
  798. package/coverage/lcov-report/base.css +224 -0
  799. package/coverage/lcov-report/base.css.meta +7 -0
  800. package/coverage/lcov-report/block-navigation.js +87 -0
  801. package/coverage/lcov-report/block-navigation.js.meta +7 -0
  802. package/coverage/lcov-report/favicon.png +0 -0
  803. package/coverage/lcov-report/favicon.png.meta +127 -0
  804. package/coverage/lcov-report/index.html +101 -0
  805. package/coverage/lcov-report/index.html.meta +7 -0
  806. package/coverage/lcov-report/prettify.css +1 -0
  807. package/coverage/lcov-report/prettify.css.meta +7 -0
  808. package/coverage/lcov-report/prettify.js +2 -0
  809. package/coverage/lcov-report/prettify.js.meta +7 -0
  810. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  811. package/coverage/lcov-report/sort-arrow-sprite.png.meta +127 -0
  812. package/coverage/lcov-report/sorter.js +210 -0
  813. package/coverage/lcov-report/sorter.js.meta +7 -0
  814. package/coverage/lcov-report/transform-docs-to-wiki.js.html +1312 -0
  815. package/coverage/lcov-report/transform-docs-to-wiki.js.html.meta +7 -0
  816. package/coverage/lcov-report/vendor.meta +8 -0
  817. package/coverage/lcov-report.meta +8 -0
  818. package/coverage/lcov.info +0 -0
  819. package/coverage/lcov.info.meta +7 -0
  820. package/{Docs/EmitShorthands.md → docs/advanced/emit-shorthands.md} +17 -17
  821. package/docs/advanced/emit-shorthands.md.meta +7 -0
  822. package/{Docs/MessageBusProviders.md → docs/advanced/message-bus-providers.md} +5 -4
  823. package/docs/advanced/message-bus-providers.md.meta +7 -0
  824. package/docs/advanced/registration-builders.md +444 -0
  825. package/docs/advanced/registration-builders.md.meta +7 -0
  826. package/{Docs/RuntimeConfiguration.md → docs/advanced/runtime-configuration.md} +5 -4
  827. package/docs/advanced/runtime-configuration.md.meta +7 -0
  828. package/{Docs/StringMessages.md → docs/advanced/string-messages.md} +2 -2
  829. package/docs/advanced/string-messages.md.meta +7 -0
  830. package/docs/advanced.meta +8 -0
  831. package/{Docs/Comparisons.md → docs/architecture/comparisons.md} +71 -66
  832. package/docs/architecture/comparisons.md.meta +7 -0
  833. package/{Docs/DesignAndArchitecture.md → docs/architecture/design-and-architecture.md} +17 -16
  834. package/docs/architecture/design-and-architecture.md.meta +7 -0
  835. package/docs/architecture/performance.md +53 -0
  836. package/docs/architecture/performance.md.meta +7 -0
  837. package/docs/architecture.meta +8 -0
  838. package/{Docs/InterceptorsAndOrdering.md → docs/concepts/interceptors-and-ordering.md} +58 -55
  839. package/docs/concepts/interceptors-and-ordering.md.meta +7 -0
  840. package/{Docs/ListeningPatterns.md → docs/concepts/listening-patterns.md} +17 -15
  841. package/docs/concepts/listening-patterns.md.meta +7 -0
  842. package/{Docs/MessageTypes.md → docs/concepts/message-types.md} +19 -13
  843. package/docs/concepts/message-types.md.meta +7 -0
  844. package/{Docs/TargetingAndContext.md → docs/concepts/targeting-and-context.md} +10 -10
  845. package/docs/concepts/targeting-and-context.md.meta +7 -0
  846. package/docs/concepts.meta +8 -0
  847. package/docs/examples/end-to-end-scene-transitions.md.meta +7 -0
  848. package/{Docs/EndToEnd.md → docs/examples/end-to-end.md} +1 -1
  849. package/docs/examples/end-to-end.md.meta +7 -0
  850. package/docs/examples.meta +8 -0
  851. package/{Docs/GettingStarted.md → docs/getting-started/getting-started.md} +30 -28
  852. package/docs/getting-started/getting-started.md.meta +7 -0
  853. package/docs/getting-started/index.md +316 -0
  854. package/docs/getting-started/index.md.meta +7 -0
  855. package/docs/getting-started/install.md +89 -0
  856. package/docs/getting-started/install.md.meta +7 -0
  857. package/{Docs/Overview.md → docs/getting-started/overview.md} +36 -35
  858. package/docs/getting-started/overview.md.meta +7 -0
  859. package/{Docs/QuickStart.md → docs/getting-started/quick-start.md} +42 -47
  860. package/docs/getting-started/quick-start.md.meta +7 -0
  861. package/{Docs/VisualGuide.md → docs/getting-started/visual-guide.md} +117 -108
  862. package/docs/getting-started/visual-guide.md.meta +7 -0
  863. package/docs/getting-started.meta +8 -0
  864. package/{Docs/Advanced.md → docs/guides/advanced.md} +4 -4
  865. package/docs/guides/advanced.md.meta +7 -0
  866. package/docs/guides/diagnostics.md +300 -0
  867. package/docs/guides/diagnostics.md.meta +7 -0
  868. package/{Docs/MigrationGuide.md → docs/guides/migration-guide.md} +3 -3
  869. package/docs/guides/migration-guide.md.meta +7 -0
  870. package/{Docs/Patterns.md → docs/guides/patterns.md} +22 -22
  871. package/docs/guides/patterns.md.meta +7 -0
  872. package/docs/guides/testing.md +243 -0
  873. package/docs/guides/testing.md.meta +7 -0
  874. package/{Docs/UnityIntegration.md → docs/guides/unity-integration.md} +13 -13
  875. package/docs/guides/unity-integration.md.meta +7 -0
  876. package/docs/guides.meta +8 -0
  877. package/docs/hooks.py +168 -0
  878. package/docs/hooks.py.meta +7 -0
  879. package/docs/images/DxMessaging-banner.svg +119 -0
  880. package/docs/images/DxMessaging-banner.svg.meta +7 -0
  881. package/docs/images.meta +8 -0
  882. package/docs/index.md +61 -0
  883. package/docs/integrations/index.md +66 -0
  884. package/docs/integrations/index.md.meta +7 -0
  885. package/{Docs/Integrations/Reflex.md → docs/integrations/reflex.md} +43 -18
  886. package/{Docs/Integrations/VContainer.md → docs/integrations/vcontainer.md} +18 -9
  887. package/{Docs/Integrations/Zenject.md → docs/integrations/zenject.md} +6 -6
  888. package/docs/javascripts/csharp-highlight.js +246 -0
  889. package/docs/javascripts/csharp-highlight.js.meta +7 -0
  890. package/docs/javascripts/mermaid-config.js +347 -0
  891. package/docs/javascripts/mermaid-config.js.meta +7 -0
  892. package/docs/javascripts.meta +8 -0
  893. package/{Docs/Compatibility.md → docs/reference/compatibility.md} +7 -7
  894. package/docs/reference/compatibility.md.meta +7 -0
  895. package/{Docs/FAQ.md → docs/reference/faq.md} +21 -26
  896. package/docs/reference/faq.md.meta +7 -0
  897. package/{Docs/Glossary.md → docs/reference/glossary.md} +18 -13
  898. package/docs/reference/glossary.md.meta +7 -0
  899. package/{Docs/Helpers.md → docs/reference/helpers.md} +409 -81
  900. package/docs/reference/helpers.md.meta +7 -0
  901. package/{Docs/QuickReference.md → docs/reference/quick-reference.md} +128 -58
  902. package/docs/reference/quick-reference.md.meta +7 -0
  903. package/docs/reference/reference.md +371 -0
  904. package/docs/reference/reference.md.meta +7 -0
  905. package/{Docs/Troubleshooting.md → docs/reference/troubleshooting.md} +12 -17
  906. package/docs/reference/troubleshooting.md.meta +7 -0
  907. package/docs/reference.meta +8 -0
  908. package/docs/stylesheets/extra.css +485 -0
  909. package/docs/stylesheets/extra.css.meta +7 -0
  910. package/docs/stylesheets.meta +8 -0
  911. package/mkdocs.yml +198 -0
  912. package/mkdocs.yml.meta +7 -0
  913. package/package.json +8 -6
  914. package/requirements-docs.txt +23 -0
  915. package/requirements-docs.txt.meta +7 -0
  916. package/scripts/__tests__/sync-banner-version.test.js +606 -0
  917. package/scripts/__tests__/sync-banner-version.test.js.meta +7 -0
  918. package/scripts/__tests__.meta +8 -0
  919. package/scripts/check-eol.js +290 -19
  920. package/scripts/check-eol.ps1 +103 -15
  921. package/scripts/fix-eol.js +40 -8
  922. package/scripts/generate-skills-index.js +512 -0
  923. package/scripts/generate-skills-index.js.meta +7 -0
  924. package/scripts/generate-skills-index.ps1 +38 -0
  925. package/scripts/generate-skills-index.ps1.meta +7 -0
  926. package/scripts/hooks/pre-commit +59 -0
  927. package/scripts/hooks/pre-commit.meta +7 -0
  928. package/scripts/hooks.meta +8 -0
  929. package/scripts/sync-banner-version.ps1 +133 -0
  930. package/scripts/sync-banner-version.ps1.meta +7 -0
  931. package/scripts/sync-banner-version.sh +16 -0
  932. package/scripts/sync-banner-version.sh.meta +7 -0
  933. package/scripts/validate-skills.js +557 -0
  934. package/scripts/validate-skills.js.meta +7 -0
  935. package/scripts/wiki/__tests__/transform.test.js +380 -0
  936. package/scripts/wiki/__tests__/transform.test.js.meta +7 -0
  937. package/scripts/wiki/__tests__.meta +7 -0
  938. package/scripts/wiki/generate-wiki-sidebar.js +122 -0
  939. package/{Docs/EmitShorthands.md.meta → scripts/wiki/generate-wiki-sidebar.js.meta} +8 -2
  940. package/scripts/wiki/transform-docs-to-wiki.js +409 -0
  941. package/scripts/wiki/transform-docs-to-wiki.js.meta +7 -0
  942. package/scripts/wiki.meta +8 -0
  943. package/site/404.html +1 -0
  944. package/site/404.html.meta +7 -0
  945. package/site/advanced/emit-shorthands/index.html +212 -0
  946. package/site/advanced/emit-shorthands/index.html.meta +7 -0
  947. package/site/advanced/emit-shorthands.meta +8 -0
  948. package/site/advanced/message-bus-providers/index.html +241 -0
  949. package/site/advanced/message-bus-providers/index.html.meta +7 -0
  950. package/site/advanced/message-bus-providers.meta +8 -0
  951. package/site/advanced/registration-builders/index.html +228 -0
  952. package/site/advanced/registration-builders/index.html.meta +7 -0
  953. package/site/advanced/registration-builders.meta +8 -0
  954. package/site/advanced/runtime-configuration/index.html +196 -0
  955. package/site/advanced/runtime-configuration/index.html.meta +7 -0
  956. package/site/advanced/runtime-configuration.meta +8 -0
  957. package/site/advanced/string-messages/index.html +29 -0
  958. package/site/advanced/string-messages/index.html.meta +7 -0
  959. package/site/advanced/string-messages.meta +8 -0
  960. package/site/advanced.meta +8 -0
  961. package/site/architecture/comparisons/index.html +356 -0
  962. package/site/architecture/comparisons/index.html.meta +7 -0
  963. package/site/architecture/comparisons.meta +8 -0
  964. package/site/architecture/design-and-architecture/index.html +34 -0
  965. package/site/architecture/design-and-architecture/index.html.meta +7 -0
  966. package/site/architecture/design-and-architecture.meta +8 -0
  967. package/site/architecture/performance/index.html +1 -0
  968. package/site/architecture/performance/index.html.meta +7 -0
  969. package/site/architecture/performance.meta +8 -0
  970. package/site/architecture.meta +8 -0
  971. package/site/assets/images/favicon.png +0 -0
  972. package/site/assets/images/favicon.png.meta +127 -0
  973. package/site/assets/images.meta +8 -0
  974. package/site/assets/javascripts/bundle.79ae519e.min.js +16 -0
  975. package/site/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
  976. package/site/assets/javascripts/bundle.79ae519e.min.js.map.meta +7 -0
  977. package/site/assets/javascripts/bundle.79ae519e.min.js.meta +7 -0
  978. package/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  979. package/site/assets/javascripts/lunr/min/lunr.ar.min.js.meta +7 -0
  980. package/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  981. package/site/assets/javascripts/lunr/min/lunr.da.min.js.meta +7 -0
  982. package/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  983. package/site/assets/javascripts/lunr/min/lunr.de.min.js.meta +7 -0
  984. package/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  985. package/site/assets/javascripts/lunr/min/lunr.du.min.js.meta +7 -0
  986. package/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  987. package/site/assets/javascripts/lunr/min/lunr.el.min.js.meta +7 -0
  988. package/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  989. package/site/assets/javascripts/lunr/min/lunr.es.min.js.meta +7 -0
  990. package/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  991. package/site/assets/javascripts/lunr/min/lunr.fi.min.js.meta +7 -0
  992. package/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  993. package/site/assets/javascripts/lunr/min/lunr.fr.min.js.meta +7 -0
  994. package/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  995. package/site/assets/javascripts/lunr/min/lunr.he.min.js.meta +7 -0
  996. package/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  997. package/site/assets/javascripts/lunr/min/lunr.hi.min.js.meta +7 -0
  998. package/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  999. package/site/assets/javascripts/lunr/min/lunr.hu.min.js.meta +7 -0
  1000. package/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  1001. package/site/assets/javascripts/lunr/min/lunr.hy.min.js.meta +7 -0
  1002. package/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  1003. package/site/assets/javascripts/lunr/min/lunr.it.min.js.meta +7 -0
  1004. package/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  1005. package/site/assets/javascripts/lunr/min/lunr.ja.min.js.meta +7 -0
  1006. package/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  1007. package/site/assets/javascripts/lunr/min/lunr.jp.min.js.meta +7 -0
  1008. package/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  1009. package/site/assets/javascripts/lunr/min/lunr.kn.min.js.meta +7 -0
  1010. package/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  1011. package/site/assets/javascripts/lunr/min/lunr.ko.min.js.meta +7 -0
  1012. package/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  1013. package/site/assets/javascripts/lunr/min/lunr.multi.min.js.meta +7 -0
  1014. package/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  1015. package/site/assets/javascripts/lunr/min/lunr.nl.min.js.meta +7 -0
  1016. package/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  1017. package/site/assets/javascripts/lunr/min/lunr.no.min.js.meta +7 -0
  1018. package/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  1019. package/site/assets/javascripts/lunr/min/lunr.pt.min.js.meta +7 -0
  1020. package/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  1021. package/site/assets/javascripts/lunr/min/lunr.ro.min.js.meta +7 -0
  1022. package/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  1023. package/site/assets/javascripts/lunr/min/lunr.ru.min.js.meta +7 -0
  1024. package/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  1025. package/site/assets/javascripts/lunr/min/lunr.sa.min.js.meta +7 -0
  1026. package/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  1027. package/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js.meta +7 -0
  1028. package/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  1029. package/site/assets/javascripts/lunr/min/lunr.sv.min.js.meta +7 -0
  1030. package/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  1031. package/site/assets/javascripts/lunr/min/lunr.ta.min.js.meta +7 -0
  1032. package/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  1033. package/site/assets/javascripts/lunr/min/lunr.te.min.js.meta +7 -0
  1034. package/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  1035. package/site/assets/javascripts/lunr/min/lunr.th.min.js.meta +7 -0
  1036. package/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  1037. package/site/assets/javascripts/lunr/min/lunr.tr.min.js.meta +7 -0
  1038. package/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  1039. package/site/assets/javascripts/lunr/min/lunr.vi.min.js.meta +7 -0
  1040. package/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  1041. package/site/assets/javascripts/lunr/min/lunr.zh.min.js.meta +7 -0
  1042. package/site/assets/javascripts/lunr/min.meta +8 -0
  1043. package/site/assets/javascripts/lunr/tinyseg.js +206 -0
  1044. package/site/assets/javascripts/lunr/tinyseg.js.meta +7 -0
  1045. package/site/assets/javascripts/lunr/wordcut.js +6708 -0
  1046. package/site/assets/javascripts/lunr/wordcut.js.meta +7 -0
  1047. package/site/assets/javascripts/lunr.meta +8 -0
  1048. package/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
  1049. package/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
  1050. package/site/assets/javascripts/workers/search.2c215733.min.js.map.meta +7 -0
  1051. package/site/assets/javascripts/workers/search.2c215733.min.js.meta +7 -0
  1052. package/site/assets/javascripts/workers.meta +8 -0
  1053. package/site/assets/javascripts.meta +8 -0
  1054. package/site/assets/stylesheets/main.484c7ddc.min.css +1 -0
  1055. package/site/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
  1056. package/site/assets/stylesheets/main.484c7ddc.min.css.map.meta +7 -0
  1057. package/site/assets/stylesheets/main.484c7ddc.min.css.meta +7 -0
  1058. package/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  1059. package/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
  1060. package/site/assets/stylesheets/palette.ab4e12ef.min.css.map.meta +7 -0
  1061. package/site/assets/stylesheets/palette.ab4e12ef.min.css.meta +7 -0
  1062. package/site/assets/stylesheets.meta +8 -0
  1063. package/site/assets.meta +8 -0
  1064. package/site/concepts/interceptors-and-ordering/index.html +352 -0
  1065. package/site/concepts/interceptors-and-ordering/index.html.meta +7 -0
  1066. package/site/concepts/interceptors-and-ordering.meta +8 -0
  1067. package/site/concepts/listening-patterns/index.html +193 -0
  1068. package/site/concepts/listening-patterns/index.html.meta +7 -0
  1069. package/site/concepts/listening-patterns.meta +8 -0
  1070. package/site/concepts/message-types/index.html +111 -0
  1071. package/site/concepts/message-types/index.html.meta +7 -0
  1072. package/site/concepts/message-types.meta +8 -0
  1073. package/site/concepts/targeting-and-context/index.html +201 -0
  1074. package/site/concepts/targeting-and-context/index.html.meta +7 -0
  1075. package/site/concepts/targeting-and-context.meta +8 -0
  1076. package/site/concepts.meta +8 -0
  1077. package/site/css/timeago.css +15 -0
  1078. package/site/css/timeago.css.meta +7 -0
  1079. package/site/css.meta +8 -0
  1080. package/site/examples/end-to-end/index.html +85 -0
  1081. package/site/examples/end-to-end/index.html.meta +7 -0
  1082. package/site/examples/end-to-end-scene-transitions/index.html +84 -0
  1083. package/site/examples/end-to-end-scene-transitions/index.html.meta +7 -0
  1084. package/site/examples/end-to-end-scene-transitions.meta +8 -0
  1085. package/site/examples/end-to-end.meta +8 -0
  1086. package/site/examples.meta +8 -0
  1087. package/site/getting-started/getting-started/index.html +66 -0
  1088. package/site/getting-started/getting-started/index.html.meta +7 -0
  1089. package/site/getting-started/getting-started.meta +8 -0
  1090. package/site/getting-started/index.html +29 -0
  1091. package/site/getting-started/index.html.meta +7 -0
  1092. package/site/getting-started/install/index.html +8 -0
  1093. package/site/getting-started/install/index.html.meta +7 -0
  1094. package/site/getting-started/install.meta +8 -0
  1095. package/site/getting-started/overview/index.html +33 -0
  1096. package/site/getting-started/overview/index.html.meta +7 -0
  1097. package/site/getting-started/overview.meta +8 -0
  1098. package/site/getting-started/quick-start/index.html +81 -0
  1099. package/site/getting-started/quick-start/index.html.meta +7 -0
  1100. package/site/getting-started/quick-start.meta +8 -0
  1101. package/site/getting-started/visual-guide/index.html +256 -0
  1102. package/site/getting-started/visual-guide/index.html.meta +7 -0
  1103. package/site/getting-started/visual-guide.meta +8 -0
  1104. package/site/getting-started.meta +8 -0
  1105. package/site/guides/advanced/index.html +119 -0
  1106. package/site/guides/advanced/index.html.meta +7 -0
  1107. package/site/guides/advanced.meta +8 -0
  1108. package/site/guides/diagnostics/index.html +110 -0
  1109. package/site/guides/diagnostics/index.html.meta +7 -0
  1110. package/site/guides/diagnostics.meta +8 -0
  1111. package/site/guides/migration-guide/index.html +199 -0
  1112. package/site/guides/migration-guide/index.html.meta +7 -0
  1113. package/site/guides/migration-guide.meta +8 -0
  1114. package/site/guides/patterns/index.html +545 -0
  1115. package/site/guides/patterns/index.html.meta +7 -0
  1116. package/site/guides/patterns.meta +8 -0
  1117. package/site/guides/testing/index.html +153 -0
  1118. package/site/guides/testing/index.html.meta +7 -0
  1119. package/site/guides/testing.meta +8 -0
  1120. package/site/guides/unity-integration/index.html +67 -0
  1121. package/site/guides/unity-integration/index.html.meta +7 -0
  1122. package/site/guides/unity-integration.meta +8 -0
  1123. package/site/guides.meta +8 -0
  1124. package/site/hooks.py +168 -0
  1125. package/site/hooks.py.meta +7 -0
  1126. package/site/index.html +17 -0
  1127. package/site/index.html.meta +7 -0
  1128. package/site/integrations/index.html +8 -0
  1129. package/site/integrations/index.html.meta +7 -0
  1130. package/site/integrations/reflex/index.html +186 -0
  1131. package/site/integrations/reflex/index.html.meta +7 -0
  1132. package/site/integrations/reflex.meta +8 -0
  1133. package/site/integrations/vcontainer/index.html +192 -0
  1134. package/site/integrations/vcontainer/index.html.meta +7 -0
  1135. package/site/integrations/vcontainer.meta +8 -0
  1136. package/site/integrations/zenject/index.html +197 -0
  1137. package/site/integrations/zenject/index.html.meta +7 -0
  1138. package/site/integrations/zenject.meta +8 -0
  1139. package/site/integrations.meta +8 -0
  1140. package/site/javascripts/csharp-highlight.js +246 -0
  1141. package/site/javascripts/csharp-highlight.js.meta +7 -0
  1142. package/site/javascripts/mermaid-config.js +347 -0
  1143. package/site/javascripts/mermaid-config.js.meta +7 -0
  1144. package/site/javascripts.meta +8 -0
  1145. package/site/js/timeago.min.js +2 -0
  1146. package/site/js/timeago.min.js.meta +7 -0
  1147. package/site/js/timeago_mkdocs_material.js +33 -0
  1148. package/site/js/timeago_mkdocs_material.js.meta +7 -0
  1149. package/site/js.meta +8 -0
  1150. package/site/reference/compatibility/index.html +1 -0
  1151. package/site/reference/compatibility/index.html.meta +7 -0
  1152. package/site/reference/compatibility.meta +8 -0
  1153. package/site/reference/faq/index.html +1 -0
  1154. package/site/reference/faq/index.html.meta +7 -0
  1155. package/site/reference/faq.meta +8 -0
  1156. package/site/reference/glossary/index.html +55 -0
  1157. package/site/reference/glossary/index.html.meta +7 -0
  1158. package/site/reference/glossary.meta +8 -0
  1159. package/site/reference/helpers/index.html +475 -0
  1160. package/site/reference/helpers/index.html.meta +7 -0
  1161. package/site/reference/helpers.meta +8 -0
  1162. package/site/reference/quick-reference/index.html +138 -0
  1163. package/site/reference/quick-reference/index.html.meta +7 -0
  1164. package/site/reference/quick-reference.meta +8 -0
  1165. package/site/reference/reference/index.html +194 -0
  1166. package/site/reference/reference/index.html.meta +7 -0
  1167. package/site/reference/reference.meta +8 -0
  1168. package/site/reference/troubleshooting/index.html +1 -0
  1169. package/site/reference/troubleshooting/index.html.meta +7 -0
  1170. package/site/reference/troubleshooting.meta +8 -0
  1171. package/site/reference.meta +8 -0
  1172. package/site/search/search_index.json +1 -0
  1173. package/site/search/search_index.json.meta +7 -0
  1174. package/site/search.meta +8 -0
  1175. package/site/sitemap.xml +155 -0
  1176. package/site/sitemap.xml.gz +0 -0
  1177. package/site/sitemap.xml.gz.meta +7 -0
  1178. package/site/sitemap.xml.meta +7 -0
  1179. package/site/stylesheets/extra.css +485 -0
  1180. package/site/stylesheets/extra.css.meta +7 -0
  1181. package/site/stylesheets.meta +8 -0
  1182. package/.github/workflows/npm-publish.yml +0 -75
  1183. package/Docs/Diagnostics.md +0 -61
  1184. package/Docs/Diagnostics.md.meta +0 -7
  1185. package/Docs/EndToEnd.md.meta +0 -7
  1186. package/Docs/EndToEndSceneTransitions.md.meta +0 -7
  1187. package/Docs/FAQ.md.meta +0 -7
  1188. package/Docs/GettingStarted.md.meta +0 -7
  1189. package/Docs/Glossary.md.meta +0 -7
  1190. package/Docs/Helpers.md.meta +0 -7
  1191. package/Docs/Index.md +0 -305
  1192. package/Docs/Install.md +0 -60
  1193. package/Docs/Install.md.meta +0 -7
  1194. package/Docs/InterceptorsAndOrdering.md.meta +0 -7
  1195. package/Docs/ListeningPatterns.md.meta +0 -7
  1196. package/Docs/MessageBusProviders.md.meta +0 -7
  1197. package/Docs/MessageTypes.md.meta +0 -7
  1198. package/Docs/MigrationGuide.md.meta +0 -7
  1199. package/Docs/Overview.md.meta +0 -7
  1200. package/Docs/Patterns.md.meta +0 -7
  1201. package/Docs/Performance.md +0 -35
  1202. package/Docs/Performance.md.meta +0 -7
  1203. package/Docs/QuickReference.md.meta +0 -7
  1204. package/Docs/QuickStart.md.meta +0 -7
  1205. package/Docs/Reference.md +0 -88
  1206. package/Docs/Reference.md.meta +0 -7
  1207. package/Docs/RuntimeConfiguration.md.meta +0 -7
  1208. package/Docs/StringMessages.md.meta +0 -7
  1209. package/Docs/TargetingAndContext.md.meta +0 -7
  1210. package/Docs/Troubleshooting.md.meta +0 -7
  1211. package/Docs/UnityIntegration.md.meta +0 -7
  1212. package/Docs/VisualGuide.md.meta +0 -7
  1213. /package/{Docs/EndToEndSceneTransitions.md → docs/examples/end-to-end-scene-transitions.md} +0 -0
  1214. /package/{Docs/Index.md.meta → docs/index.md.meta} +0 -0
  1215. /package/{Docs/Integrations/Reflex.md.meta → docs/integrations/reflex.md.meta} +0 -0
  1216. /package/{Docs/Integrations/VContainer.md.meta → docs/integrations/vcontainer.md.meta} +0 -0
  1217. /package/{Docs/Integrations/Zenject.md.meta → docs/integrations/zenject.md.meta} +0 -0
  1218. /package/{Docs/Integrations.meta → docs/integrations.meta} +0 -0
  1219. /package/{Docs.meta → docs.meta} +0 -0
@@ -1,6 +1,7 @@
1
1
  namespace DxMessaging.Core.MessageBus
2
2
  {
3
3
  using System;
4
+ using System.Buffers;
4
5
  using System.Collections.Generic;
5
6
  using System.Linq.Expressions;
6
7
  using System.Reflection;
@@ -24,14 +25,178 @@ namespace DxMessaging.Core.MessageBus
24
25
  private long _emissionId;
25
26
  public long EmissionId => _emissionId;
26
27
 
28
+ private readonly struct PrefreezeDescriptor
29
+ {
30
+ public PrefreezeDescriptor(byte kind, int priority)
31
+ {
32
+ this.kind = kind;
33
+ this.priority = priority;
34
+ }
35
+
36
+ public static readonly PrefreezeDescriptor Empty = new PrefreezeDescriptor(0, 0);
37
+ public readonly byte kind;
38
+ public readonly int priority;
39
+ }
40
+
41
+ private enum DispatchCategory : byte
42
+ {
43
+ None = 0,
44
+ Untargeted = 1,
45
+ UntargetedPost = 2,
46
+ Targeted = 3,
47
+ TargetedPost = 4,
48
+ TargetedWithoutTargeting = 5,
49
+ TargetedWithoutTargetingPost = 6,
50
+ Broadcast = 7,
51
+ BroadcastPost = 8,
52
+ BroadcastWithoutSource = 9,
53
+ BroadcastWithoutSourcePost = 10,
54
+ GlobalUntargeted = 11,
55
+ GlobalTargeted = 12,
56
+ GlobalBroadcast = 13,
57
+ }
58
+
59
+ private const byte PrefreezeKindNone = 0;
60
+ private const byte PrefreezeKindTargetedWithoutTargetingHandlers = 1;
61
+ private const byte PrefreezeKindBroadcastWithoutSourceHandlers = 2;
62
+ private const byte PrefreezeKindGlobalUntargetedHandlers = 3;
63
+ private const byte PrefreezeKindGlobalTargetedHandlers = 4;
64
+ private const byte PrefreezeKindGlobalBroadcastHandlers = 5;
65
+
66
+ private static readonly ArrayPool<DispatchBucket> DispatchBucketPool =
67
+ ArrayPool<DispatchBucket>.Shared;
68
+ private static readonly ArrayPool<DispatchEntry> DispatchEntryPool =
69
+ ArrayPool<DispatchEntry>.Shared;
70
+
71
+ private readonly struct DispatchEntry
72
+ {
73
+ public DispatchEntry(
74
+ MessageHandler handler,
75
+ object dispatch,
76
+ PrefreezeDescriptor prefreeze
77
+ )
78
+ {
79
+ this.handler = handler;
80
+ this.dispatch = dispatch;
81
+ this.prefreeze = prefreeze;
82
+ }
83
+
84
+ public readonly MessageHandler handler;
85
+ public readonly object dispatch;
86
+ public readonly PrefreezeDescriptor prefreeze;
87
+ }
88
+
89
+ private struct DispatchBucket
90
+ {
91
+ public DispatchBucket(
92
+ int priority,
93
+ DispatchEntry[] entries,
94
+ int entryCount,
95
+ bool pooledEntries
96
+ )
97
+ {
98
+ this.priority = priority;
99
+ this.entries = entries;
100
+ this.entryCount = entryCount;
101
+ this.pooledEntries = pooledEntries;
102
+ }
103
+
104
+ public readonly int priority;
105
+ public DispatchEntry[] entries;
106
+ public int entryCount;
107
+ public bool pooledEntries;
108
+
109
+ public static DispatchBucket CreateEmpty(int priority)
110
+ {
111
+ return new DispatchBucket(priority, Array.Empty<DispatchEntry>(), 0, false);
112
+ }
113
+
114
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
115
+ public void ReleaseEntries()
116
+ {
117
+ if (!pooledEntries || entries == null)
118
+ {
119
+ return;
120
+ }
121
+
122
+ Array.Clear(entries, 0, entryCount);
123
+ DispatchEntryPool.Return(entries);
124
+ entries = Array.Empty<DispatchEntry>();
125
+ entryCount = 0;
126
+ pooledEntries = false;
127
+ }
128
+ }
129
+
130
+ private sealed class DispatchSnapshot
131
+ {
132
+ public static readonly DispatchSnapshot Empty = new DispatchSnapshot(
133
+ Array.Empty<DispatchBucket>(),
134
+ 0,
135
+ false
136
+ );
137
+
138
+ public DispatchSnapshot(DispatchBucket[] buckets, int count, bool pooled)
139
+ {
140
+ this.buckets = buckets;
141
+ bucketCount = count;
142
+ _pooled = pooled;
143
+ }
144
+
145
+ public DispatchBucket[] buckets;
146
+ public int bucketCount;
147
+ private bool _pooled;
148
+
149
+ public bool IsEmpty => bucketCount == 0;
150
+
151
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
152
+ public void Release()
153
+ {
154
+ if (!_pooled || buckets == null)
155
+ {
156
+ return;
157
+ }
158
+
159
+ for (int i = 0; i < bucketCount; ++i)
160
+ {
161
+ buckets[i].ReleaseEntries();
162
+ }
163
+
164
+ Array.Clear(buckets, 0, bucketCount);
165
+ DispatchBucketPool.Return(buckets);
166
+ buckets = Array.Empty<DispatchBucket>();
167
+ bucketCount = 0;
168
+ _pooled = false;
169
+ }
170
+ }
171
+
27
172
  private sealed class HandlerCache<TKey, TValue>
28
173
  {
174
+ internal sealed class DispatchState
175
+ {
176
+ public DispatchSnapshot active = DispatchSnapshot.Empty;
177
+ public DispatchSnapshot pending = DispatchSnapshot.Empty;
178
+ public bool hasPending;
179
+ public bool pendingDirty;
180
+ public long snapshotEmissionId = -1;
181
+
182
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
183
+ public void Reset()
184
+ {
185
+ ReleaseSnapshot(ref active);
186
+ ReleaseSnapshot(ref pending);
187
+ hasPending = false;
188
+ pendingDirty = false;
189
+ snapshotEmissionId = -1;
190
+ }
191
+ }
192
+
29
193
  public readonly Dictionary<TKey, TValue> handlers = new();
30
194
  public readonly List<TKey> order = new();
31
195
  public readonly List<KeyValuePair<TKey, TValue>> cache = new();
32
196
  public long version;
33
197
  public long lastSeenVersion = -1;
34
198
  public long lastSeenEmissionId;
199
+ private readonly Dictionary<DispatchCategory, DispatchState> _dispatchStates = new();
35
200
 
36
201
  /// <summary>
37
202
  /// Clears all cached handler references and resets the version tracking metadata.
@@ -44,6 +209,26 @@ namespace DxMessaging.Core.MessageBus
44
209
  version = 0;
45
210
  lastSeenVersion = -1;
46
211
  lastSeenEmissionId = 0;
212
+ if (_dispatchStates.Count > 0)
213
+ {
214
+ foreach (DispatchState state in _dispatchStates.Values)
215
+ {
216
+ state.Reset();
217
+ }
218
+ _dispatchStates.Clear();
219
+ }
220
+ }
221
+
222
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
223
+ public DispatchState GetOrCreateDispatchState(DispatchCategory category)
224
+ {
225
+ if (!_dispatchStates.TryGetValue(category, out DispatchState state))
226
+ {
227
+ state = new DispatchState();
228
+ _dispatchStates[category] = state;
229
+ }
230
+
231
+ return state;
47
232
  }
48
233
  }
49
234
 
@@ -61,11 +246,31 @@ namespace DxMessaging.Core.MessageBus
61
246
 
62
247
  private sealed class HandlerCache
63
248
  {
249
+ internal sealed class DispatchState
250
+ {
251
+ public DispatchSnapshot active = DispatchSnapshot.Empty;
252
+ public DispatchSnapshot pending = DispatchSnapshot.Empty;
253
+ public bool hasPending;
254
+ public bool pendingDirty;
255
+ public long snapshotEmissionId = -1;
256
+
257
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
258
+ public void Reset()
259
+ {
260
+ ReleaseSnapshot(ref active);
261
+ ReleaseSnapshot(ref pending);
262
+ hasPending = false;
263
+ pendingDirty = false;
264
+ snapshotEmissionId = -1;
265
+ }
266
+ }
267
+
64
268
  public readonly Dictionary<MessageHandler, int> handlers = new();
65
269
  public readonly List<MessageHandler> cache = new();
66
270
  public long version;
67
271
  public long lastSeenVersion = -1;
68
272
  public long lastSeenEmissionId;
273
+ private readonly Dictionary<DispatchCategory, DispatchState> _dispatchStates = new();
69
274
 
70
275
  /// <summary>
71
276
  /// Clears all cached handler references and resets the version tracking metadata.
@@ -77,6 +282,26 @@ namespace DxMessaging.Core.MessageBus
77
282
  version = 0;
78
283
  lastSeenVersion = -1;
79
284
  lastSeenEmissionId = 0;
285
+ if (_dispatchStates.Count > 0)
286
+ {
287
+ foreach (DispatchState state in _dispatchStates.Values)
288
+ {
289
+ state.Reset();
290
+ }
291
+ _dispatchStates.Clear();
292
+ }
293
+ }
294
+
295
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
296
+ public DispatchState GetOrCreateDispatchState(DispatchCategory category)
297
+ {
298
+ if (!_dispatchStates.TryGetValue(category, out DispatchState state))
299
+ {
300
+ state = new DispatchState();
301
+ _dispatchStates[category] = state;
302
+ }
303
+
304
+ return state;
80
305
  }
81
306
  }
82
307
 
@@ -201,13 +426,13 @@ namespace DxMessaging.Core.MessageBus
201
426
  GlobalMessageBufferSize
202
427
  );
203
428
 
204
- private bool _diagnosticsMode = IMessageBus.ShouldEnableDiagnostics();
429
+ private bool _diagnosticsMode = ShouldEnableDiagnostics();
205
430
  private bool _loggedReflexiveWarning;
206
431
 
207
432
  internal void ResetState()
208
433
  {
209
434
  _emissionId = 0;
210
- _diagnosticsMode = IMessageBus.ShouldEnableDiagnostics();
435
+ _diagnosticsMode = ShouldEnableDiagnostics();
211
436
  _loggedReflexiveWarning = false;
212
437
 
213
438
  _sinks.Clear();
@@ -333,6 +558,22 @@ namespace DxMessaging.Core.MessageBus
333
558
  )
334
559
  );
335
560
 
561
+ StageGlobalDispatchSnapshot<IUntargetedMessage>(
562
+ this,
563
+ _globalSinks,
564
+ DispatchCategory.GlobalUntargeted
565
+ );
566
+ StageGlobalDispatchSnapshot<ITargetedMessage>(
567
+ this,
568
+ _globalSinks,
569
+ DispatchCategory.GlobalTargeted
570
+ );
571
+ StageGlobalDispatchSnapshot<IBroadcastMessage>(
572
+ this,
573
+ _globalSinks,
574
+ DispatchCategory.GlobalBroadcast
575
+ );
576
+
336
577
  return () =>
337
578
  {
338
579
  _globalSinks.version++;
@@ -366,6 +607,22 @@ namespace DxMessaging.Core.MessageBus
366
607
  {
367
608
  _globalSinks.handlers[messageHandler] = count - 1;
368
609
  }
610
+
611
+ StageGlobalDispatchSnapshot<IUntargetedMessage>(
612
+ this,
613
+ _globalSinks,
614
+ DispatchCategory.GlobalUntargeted
615
+ );
616
+ StageGlobalDispatchSnapshot<ITargetedMessage>(
617
+ this,
618
+ _globalSinks,
619
+ DispatchCategory.GlobalTargeted
620
+ );
621
+ StageGlobalDispatchSnapshot<IBroadcastMessage>(
622
+ this,
623
+ _globalSinks,
624
+ DispatchCategory.GlobalBroadcast
625
+ );
369
626
  };
370
627
  }
371
628
 
@@ -390,8 +647,12 @@ namespace DxMessaging.Core.MessageBus
390
647
  _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
391
648
  }
392
649
 
393
- List<object> interceptors;
394
- if (!prioritizedInterceptors.handlers.TryGetValue(priority, out interceptors))
650
+ if (
651
+ !prioritizedInterceptors.handlers.TryGetValue(
652
+ priority,
653
+ out List<object> interceptors
654
+ )
655
+ )
395
656
  {
396
657
  interceptors = new List<object>();
397
658
  prioritizedInterceptors.handlers.Add(priority, interceptors);
@@ -508,8 +769,12 @@ namespace DxMessaging.Core.MessageBus
508
769
  _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
509
770
  }
510
771
 
511
- List<object> interceptors;
512
- if (!prioritizedInterceptors.handlers.TryGetValue(priority, out interceptors))
772
+ if (
773
+ !prioritizedInterceptors.handlers.TryGetValue(
774
+ priority,
775
+ out List<object> interceptors
776
+ )
777
+ )
513
778
  {
514
779
  interceptors = new List<object>();
515
780
  prioritizedInterceptors.handlers.Add(priority, interceptors);
@@ -626,8 +891,12 @@ namespace DxMessaging.Core.MessageBus
626
891
  _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
627
892
  }
628
893
 
629
- List<object> interceptors;
630
- if (!prioritizedInterceptors.handlers.TryGetValue(priority, out interceptors))
894
+ if (
895
+ !prioritizedInterceptors.handlers.TryGetValue(
896
+ priority,
897
+ out List<object> interceptors
898
+ )
899
+ )
631
900
  {
632
901
  interceptors = new List<object>();
633
902
  prioritizedInterceptors.handlers.Add(priority, interceptors);
@@ -849,35 +1118,21 @@ namespace DxMessaging.Core.MessageBus
849
1118
 
850
1119
  // Pre-freeze post-processing stacks for this emission so mutations during
851
1120
  // handlers/post-processors are not observed until the next emission.
1121
+ DispatchSnapshot untargetedPostSnapshot = DispatchSnapshot.Empty;
852
1122
  if (
853
1123
  _postProcessingSinks.TryGetValue<TMessage>(
854
- out HandlerCache<int, HandlerCache> prefreezeUntargetedPost
1124
+ out HandlerCache<int, HandlerCache> untargetedPostHandlers
855
1125
  )
856
- && prefreezeUntargetedPost.handlers.Count > 0
1126
+ && untargetedPostHandlers.handlers.Count > 0
857
1127
  )
858
1128
  {
859
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
860
- prefreezeUntargetedPost,
1129
+ untargetedPostSnapshot = AcquireDispatchSnapshot<TMessage>(
1130
+ this,
1131
+ untargetedPostHandlers,
1132
+ DispatchCategory.UntargetedPost,
861
1133
  _emissionId
862
1134
  );
863
- int frozenCount = frozen.Count;
864
- for (int i = 0; i < frozenCount; ++i)
865
- {
866
- KeyValuePair<int, HandlerCache> entry = frozen[i];
867
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
868
- entry.Value,
869
- _emissionId
870
- );
871
- for (int h = 0; h < mhList.Count; ++h)
872
- {
873
- mhList[h]
874
- .PrefreezeUntargetedPostProcessorsForEmission<TMessage>(
875
- entry.Key,
876
- _emissionId,
877
- this
878
- );
879
- }
880
- }
1135
+ PrefreezeUntargetedPostSnapshot<TMessage>(untargetedPostSnapshot);
881
1136
  }
882
1137
 
883
1138
  if (!RunUntargetedInterceptors(ref typedMessage))
@@ -900,71 +1155,70 @@ namespace DxMessaging.Core.MessageBus
900
1155
  && 0 < sortedHandlers.handlers.Count
901
1156
  )
902
1157
  {
903
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
904
- sortedHandlers,
905
- _emissionId
906
- );
907
- int handlerListCount = handlerList.Count;
908
- switch (handlerListCount)
909
- {
910
- case 1:
911
- {
912
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
913
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
914
- break;
915
- }
916
- case 2:
917
- {
918
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
919
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
920
- entry = handlerList[1];
921
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
922
- break;
923
- }
924
- case 3:
925
- {
926
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
927
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
928
- entry = handlerList[1];
929
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
930
- entry = handlerList[2];
931
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
932
- break;
933
- }
934
- case 4:
935
- {
936
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
937
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
938
- entry = handlerList[1];
939
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
940
- entry = handlerList[2];
941
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
942
- entry = handlerList[3];
943
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
944
- break;
945
- }
946
- case 5:
1158
+ DispatchSnapshot snapshot = untargetedPostSnapshot.IsEmpty
1159
+ ? AcquireDispatchSnapshot<TMessage>(
1160
+ this,
1161
+ sortedHandlers,
1162
+ DispatchCategory.UntargetedPost,
1163
+ _emissionId
1164
+ )
1165
+ : untargetedPostSnapshot;
1166
+ DispatchBucket[] buckets = snapshot.buckets;
1167
+ int bucketCount = snapshot.bucketCount;
1168
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
1169
+ {
1170
+ DispatchBucket bucket = buckets[bucketIndex];
1171
+ DispatchEntry[] entries = bucket.entries;
1172
+ int entryCount = bucket.entryCount;
1173
+ if (entryCount == 0)
947
1174
  {
948
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
949
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
950
- entry = handlerList[1];
951
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
952
- entry = handlerList[2];
953
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
954
- entry = handlerList[3];
955
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
956
- entry = handlerList[4];
957
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
958
- break;
1175
+ continue;
959
1176
  }
960
- default:
1177
+
1178
+ foundAnyHandlers = true;
1179
+ int priority = bucket.priority;
1180
+ switch (entryCount)
961
1181
  {
962
- for (int i = 0; i < handlerListCount; ++i)
1182
+ case 1:
963
1183
  {
964
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
965
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
1184
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[0]);
1185
+ continue;
1186
+ }
1187
+ case 2:
1188
+ {
1189
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[0]);
1190
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[1]);
1191
+ continue;
1192
+ }
1193
+ case 3:
1194
+ {
1195
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[0]);
1196
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[1]);
1197
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[2]);
1198
+ continue;
1199
+ }
1200
+ case 4:
1201
+ {
1202
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[0]);
1203
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[1]);
1204
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[2]);
1205
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[3]);
1206
+ continue;
1207
+ }
1208
+ case 5:
1209
+ {
1210
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[0]);
1211
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[1]);
1212
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[2]);
1213
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[3]);
1214
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[4]);
1215
+ continue;
966
1216
  }
967
- break;
1217
+ }
1218
+
1219
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
1220
+ {
1221
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[entryIndex]);
968
1222
  }
969
1223
  }
970
1224
  }
@@ -979,65 +1233,6 @@ namespace DxMessaging.Core.MessageBus
979
1233
  }
980
1234
  }
981
1235
 
982
- private void RunUntargetedPostProcessing<TMessage>(
983
- ref TMessage typedMessage,
984
- int priority,
985
- HandlerCache cache
986
- )
987
- where TMessage : IUntargetedMessage
988
- {
989
- if (cache.handlers.Count == 0)
990
- {
991
- return;
992
- }
993
-
994
- List<MessageHandler> list = GetOrAddMessageHandlerStack(cache, _emissionId);
995
- switch (list.Count)
996
- {
997
- case 1:
998
- {
999
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1000
- return;
1001
- }
1002
- case 2:
1003
- {
1004
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1005
- list[1].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1006
- return;
1007
- }
1008
- case 3:
1009
- {
1010
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1011
- list[1].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1012
- list[2].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1013
- return;
1014
- }
1015
- case 4:
1016
- {
1017
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1018
- list[1].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1019
- list[2].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1020
- list[3].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1021
- return;
1022
- }
1023
- case 5:
1024
- {
1025
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1026
- list[1].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1027
- list[2].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1028
- list[3].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1029
- list[4].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1030
- return;
1031
- }
1032
- }
1033
-
1034
- for (int i = 0; i < cache.cache.Count; ++i)
1035
- {
1036
- MessageHandler handler = cache.cache[i];
1037
- handler.HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1038
- }
1039
- }
1040
-
1041
1236
  /// <inheritdoc />
1042
1237
  public void UntypedTargetedBroadcast(InstanceId target, ITargetedMessage typedMessage)
1043
1238
  {
@@ -1082,70 +1277,43 @@ namespace DxMessaging.Core.MessageBus
1082
1277
  }
1083
1278
 
1084
1279
  // Pre-freeze targeted post-processing for this emission (target-specific and without targeting)
1280
+ DispatchSnapshot targetedPostSnapshot = DispatchSnapshot.Empty;
1281
+ DispatchSnapshot targetedWithoutTargetingPostSnapshot = DispatchSnapshot.Empty;
1085
1282
  if (
1086
1283
  _postProcessingTargetedSinks.TryGetValue<TMessage>(
1087
- out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> prefreezeTargeted
1284
+ out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> targetedPostHandlers
1088
1285
  )
1089
- && prefreezeTargeted.TryGetValue(
1286
+ && targetedPostHandlers.TryGetValue(
1090
1287
  target,
1091
- out HandlerCache<int, HandlerCache> prefreezeTargetedByPriority
1288
+ out HandlerCache<int, HandlerCache> targetedPostByPriority
1092
1289
  )
1093
- && prefreezeTargetedByPriority.handlers.Count > 0
1290
+ && targetedPostByPriority.handlers.Count > 0
1094
1291
  )
1095
1292
  {
1096
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
1097
- prefreezeTargetedByPriority,
1293
+ targetedPostSnapshot = AcquireDispatchSnapshot<TMessage>(
1294
+ this,
1295
+ targetedPostByPriority,
1296
+ DispatchCategory.TargetedPost,
1098
1297
  _emissionId
1099
1298
  );
1100
- int frozenCount = frozen.Count;
1101
- for (int i = 0; i < frozenCount; ++i)
1102
- {
1103
- KeyValuePair<int, HandlerCache> entry = frozen[i];
1104
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
1105
- entry.Value,
1106
- _emissionId
1107
- );
1108
- for (int h = 0; h < mhList.Count; ++h)
1109
- {
1110
- mhList[h]
1111
- .PrefreezeTargetedPostProcessorsForEmission<TMessage>(
1112
- target,
1113
- entry.Key,
1114
- _emissionId,
1115
- this
1116
- );
1117
- }
1118
- }
1299
+ PrefreezeTargetedPostSnapshot<TMessage>(ref target, targetedPostSnapshot);
1119
1300
  }
1120
1301
  if (
1121
1302
  _postProcessingTargetedWithoutTargetingSinks.TryGetValue<TMessage>(
1122
- out HandlerCache<int, HandlerCache> prefreezeTwt
1303
+ out HandlerCache<int, HandlerCache> targetedWithoutTargetingHandlers
1123
1304
  )
1124
- && prefreezeTwt.handlers.Count > 0
1305
+ && targetedWithoutTargetingHandlers.handlers.Count > 0
1125
1306
  )
1126
1307
  {
1127
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
1128
- prefreezeTwt,
1308
+ targetedWithoutTargetingPostSnapshot = AcquireDispatchSnapshot<TMessage>(
1309
+ this,
1310
+ targetedWithoutTargetingHandlers,
1311
+ DispatchCategory.TargetedWithoutTargetingPost,
1129
1312
  _emissionId
1130
1313
  );
1131
- int frozenCount = frozen.Count;
1132
- for (int i = 0; i < frozenCount; ++i)
1133
- {
1134
- KeyValuePair<int, HandlerCache> entry = frozen[i];
1135
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
1136
- entry.Value,
1137
- _emissionId
1138
- );
1139
- for (int h = 0; h < mhList.Count; ++h)
1140
- {
1141
- mhList[h]
1142
- .PrefreezeTargetedWithoutTargetingPostProcessorsForEmission<TMessage>(
1143
- entry.Key,
1144
- _emissionId,
1145
- this
1146
- );
1147
- }
1148
- }
1314
+ PrefreezeTargetedWithoutTargetingPostSnapshot<TMessage>(
1315
+ targetedWithoutTargetingPostSnapshot
1316
+ );
1149
1317
  }
1150
1318
 
1151
1319
  if (!RunTargetedInterceptors(ref typedMessage, ref target))
@@ -1377,240 +1545,235 @@ namespace DxMessaging.Core.MessageBus
1377
1545
  target,
1378
1546
  out HandlerCache<int, HandlerCache> sortedHandlers
1379
1547
  )
1380
- && 0 < sortedHandlers.handlers.Count
1548
+ && sortedHandlers.handlers.Count > 0
1381
1549
  )
1382
1550
  {
1383
- foundAnyHandlers = true;
1384
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
1551
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
1552
+ this,
1385
1553
  sortedHandlers,
1554
+ DispatchCategory.Targeted,
1386
1555
  _emissionId
1387
1556
  );
1388
- int handlerListCount = handlerList.Count;
1389
- switch (handlerListCount)
1390
- {
1391
- case 1:
1392
- {
1393
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1394
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1395
- break;
1396
- }
1397
- case 2:
1398
- {
1399
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1400
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1401
- entry = handlerList[1];
1402
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1403
- break;
1404
- }
1405
- case 3:
1406
- {
1407
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1408
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1409
- entry = handlerList[1];
1410
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1411
- entry = handlerList[2];
1412
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1413
- break;
1414
- }
1415
- case 4:
1416
- {
1417
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1418
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1419
- entry = handlerList[1];
1420
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1421
- entry = handlerList[2];
1422
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1423
- entry = handlerList[3];
1424
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1425
- break;
1426
- }
1427
- case 5:
1557
+ DispatchBucket[] buckets = snapshot.buckets;
1558
+ int bucketCount = snapshot.bucketCount;
1559
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
1560
+ {
1561
+ DispatchBucket bucket = buckets[bucketIndex];
1562
+ DispatchEntry[] entries = bucket.entries;
1563
+ int entryCount = bucket.entryCount;
1564
+ if (entryCount == 0)
1428
1565
  {
1429
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1430
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1431
- entry = handlerList[1];
1432
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1433
- entry = handlerList[2];
1434
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1435
- entry = handlerList[3];
1436
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1437
- entry = handlerList[4];
1438
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1439
- break;
1566
+ continue;
1440
1567
  }
1441
- default:
1568
+
1569
+ foundAnyHandlers = true;
1570
+ int priority = bucket.priority;
1571
+ switch (entryCount)
1442
1572
  {
1443
- for (int i = 0; i < handlerListCount; ++i)
1573
+ case 1:
1444
1574
  {
1445
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
1446
- RunTargetedBroadcast(
1447
- ref target,
1448
- ref typedMessage,
1449
- entry.Key,
1450
- entry.Value
1451
- );
1575
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[0]);
1576
+ continue;
1577
+ }
1578
+ case 2:
1579
+ {
1580
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[0]);
1581
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[1]);
1582
+ continue;
1452
1583
  }
1584
+ case 3:
1585
+ {
1586
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[0]);
1587
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[1]);
1588
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[2]);
1589
+ continue;
1590
+ }
1591
+ case 4:
1592
+ {
1593
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[0]);
1594
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[1]);
1595
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[2]);
1596
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[3]);
1597
+ continue;
1598
+ }
1599
+ case 5:
1600
+ {
1601
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[0]);
1602
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[1]);
1603
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[2]);
1604
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[3]);
1605
+ InvokeTargetedEntry(ref target, ref typedMessage, priority, entries[4]);
1606
+ continue;
1607
+ }
1608
+ }
1453
1609
 
1454
- break;
1610
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
1611
+ {
1612
+ InvokeTargetedEntry(
1613
+ ref target,
1614
+ ref typedMessage,
1615
+ priority,
1616
+ entries[entryIndex]
1617
+ );
1455
1618
  }
1456
1619
  }
1457
1620
  }
1458
1621
 
1459
- _ = InternalTargetedWithoutTargetingBroadcast(ref target, ref typedMessage);
1622
+ if (InternalTargetedWithoutTargetingBroadcast(ref target, ref typedMessage))
1623
+ {
1624
+ foundAnyHandlers = true;
1625
+ }
1460
1626
 
1461
1627
  if (
1462
1628
  _postProcessingTargetedSinks.TryGetValue<TMessage>(out targetedHandlers)
1463
1629
  && targetedHandlers.TryGetValue(target, out sortedHandlers)
1464
- && 0 < sortedHandlers.handlers.Count
1630
+ && sortedHandlers.handlers.Count > 0
1465
1631
  )
1466
1632
  {
1467
- foundAnyHandlers = true;
1468
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
1469
- sortedHandlers,
1470
- _emissionId
1471
- );
1472
- int handlerListCount = handlerList.Count;
1473
- switch (handlerListCount)
1474
- {
1475
- case 1:
1476
- {
1477
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1478
- RunTargetedPostProcessing(
1479
- ref target,
1480
- ref typedMessage,
1481
- entry.Key,
1482
- entry.Value
1483
- );
1484
- break;
1485
- }
1486
- case 2:
1487
- {
1488
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1489
- RunTargetedPostProcessing(
1490
- ref target,
1491
- ref typedMessage,
1492
- entry.Key,
1493
- entry.Value
1494
- );
1495
- entry = handlerList[1];
1496
- RunTargetedPostProcessing(
1497
- ref target,
1498
- ref typedMessage,
1499
- entry.Key,
1500
- entry.Value
1501
- );
1502
- break;
1503
- }
1504
- case 3:
1505
- {
1506
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1507
- RunTargetedPostProcessing(
1508
- ref target,
1509
- ref typedMessage,
1510
- entry.Key,
1511
- entry.Value
1512
- );
1513
- entry = handlerList[1];
1514
- RunTargetedPostProcessing(
1515
- ref target,
1516
- ref typedMessage,
1517
- entry.Key,
1518
- entry.Value
1519
- );
1520
- entry = handlerList[2];
1521
- RunTargetedPostProcessing(
1522
- ref target,
1523
- ref typedMessage,
1524
- entry.Key,
1525
- entry.Value
1526
- );
1527
- break;
1528
- }
1529
- case 4:
1530
- {
1531
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1532
- RunTargetedPostProcessing(
1533
- ref target,
1534
- ref typedMessage,
1535
- entry.Key,
1536
- entry.Value
1537
- );
1538
- entry = handlerList[1];
1539
- RunTargetedPostProcessing(
1540
- ref target,
1541
- ref typedMessage,
1542
- entry.Key,
1543
- entry.Value
1544
- );
1545
- entry = handlerList[2];
1546
- RunTargetedPostProcessing(
1547
- ref target,
1548
- ref typedMessage,
1549
- entry.Key,
1550
- entry.Value
1551
- );
1552
- entry = handlerList[3];
1553
- RunTargetedPostProcessing(
1554
- ref target,
1555
- ref typedMessage,
1556
- entry.Key,
1557
- entry.Value
1558
- );
1559
- break;
1560
- }
1561
- case 5:
1633
+ DispatchSnapshot snapshot = targetedPostSnapshot.IsEmpty
1634
+ ? AcquireDispatchSnapshot<TMessage>(
1635
+ this,
1636
+ sortedHandlers,
1637
+ DispatchCategory.TargetedPost,
1638
+ _emissionId
1639
+ )
1640
+ : targetedPostSnapshot;
1641
+ DispatchBucket[] buckets = snapshot.buckets;
1642
+ int bucketCount = snapshot.bucketCount;
1643
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
1644
+ {
1645
+ DispatchBucket bucket = buckets[bucketIndex];
1646
+ DispatchEntry[] entries = bucket.entries;
1647
+ int entryCount = bucket.entryCount;
1648
+ if (entryCount == 0)
1562
1649
  {
1563
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1564
- RunTargetedPostProcessing(
1565
- ref target,
1566
- ref typedMessage,
1567
- entry.Key,
1568
- entry.Value
1569
- );
1570
- entry = handlerList[1];
1571
- RunTargetedPostProcessing(
1572
- ref target,
1573
- ref typedMessage,
1574
- entry.Key,
1575
- entry.Value
1576
- );
1577
- entry = handlerList[2];
1578
- RunTargetedPostProcessing(
1579
- ref target,
1580
- ref typedMessage,
1581
- entry.Key,
1582
- entry.Value
1583
- );
1584
- entry = handlerList[3];
1585
- RunTargetedPostProcessing(
1586
- ref target,
1587
- ref typedMessage,
1588
- entry.Key,
1589
- entry.Value
1590
- );
1591
- entry = handlerList[4];
1592
- RunTargetedPostProcessing(
1593
- ref target,
1594
- ref typedMessage,
1595
- entry.Key,
1596
- entry.Value
1597
- );
1598
- break;
1650
+ continue;
1599
1651
  }
1600
- default:
1652
+
1653
+ foundAnyHandlers = true;
1654
+ int priority = bucket.priority;
1655
+ switch (entryCount)
1601
1656
  {
1602
- for (int i = 0; i < handlerListCount; ++i)
1657
+ case 1:
1603
1658
  {
1604
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
1605
- RunTargetedPostProcessing(
1659
+ InvokeTargetedPostEntry(
1606
1660
  ref target,
1607
1661
  ref typedMessage,
1608
- entry.Key,
1609
- entry.Value
1662
+ priority,
1663
+ entries[0]
1664
+ );
1665
+ continue;
1666
+ }
1667
+ case 2:
1668
+ {
1669
+ InvokeTargetedPostEntry(
1670
+ ref target,
1671
+ ref typedMessage,
1672
+ priority,
1673
+ entries[0]
1674
+ );
1675
+ InvokeTargetedPostEntry(
1676
+ ref target,
1677
+ ref typedMessage,
1678
+ priority,
1679
+ entries[1]
1680
+ );
1681
+ continue;
1682
+ }
1683
+ case 3:
1684
+ {
1685
+ InvokeTargetedPostEntry(
1686
+ ref target,
1687
+ ref typedMessage,
1688
+ priority,
1689
+ entries[0]
1690
+ );
1691
+ InvokeTargetedPostEntry(
1692
+ ref target,
1693
+ ref typedMessage,
1694
+ priority,
1695
+ entries[1]
1696
+ );
1697
+ InvokeTargetedPostEntry(
1698
+ ref target,
1699
+ ref typedMessage,
1700
+ priority,
1701
+ entries[2]
1702
+ );
1703
+ continue;
1704
+ }
1705
+ case 4:
1706
+ {
1707
+ InvokeTargetedPostEntry(
1708
+ ref target,
1709
+ ref typedMessage,
1710
+ priority,
1711
+ entries[0]
1712
+ );
1713
+ InvokeTargetedPostEntry(
1714
+ ref target,
1715
+ ref typedMessage,
1716
+ priority,
1717
+ entries[1]
1718
+ );
1719
+ InvokeTargetedPostEntry(
1720
+ ref target,
1721
+ ref typedMessage,
1722
+ priority,
1723
+ entries[2]
1724
+ );
1725
+ InvokeTargetedPostEntry(
1726
+ ref target,
1727
+ ref typedMessage,
1728
+ priority,
1729
+ entries[3]
1730
+ );
1731
+ continue;
1732
+ }
1733
+ case 5:
1734
+ {
1735
+ InvokeTargetedPostEntry(
1736
+ ref target,
1737
+ ref typedMessage,
1738
+ priority,
1739
+ entries[0]
1740
+ );
1741
+ InvokeTargetedPostEntry(
1742
+ ref target,
1743
+ ref typedMessage,
1744
+ priority,
1745
+ entries[1]
1746
+ );
1747
+ InvokeTargetedPostEntry(
1748
+ ref target,
1749
+ ref typedMessage,
1750
+ priority,
1751
+ entries[2]
1752
+ );
1753
+ InvokeTargetedPostEntry(
1754
+ ref target,
1755
+ ref typedMessage,
1756
+ priority,
1757
+ entries[3]
1758
+ );
1759
+ InvokeTargetedPostEntry(
1760
+ ref target,
1761
+ ref typedMessage,
1762
+ priority,
1763
+ entries[4]
1610
1764
  );
1765
+ continue;
1611
1766
  }
1767
+ }
1612
1768
 
1613
- break;
1769
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
1770
+ {
1771
+ InvokeTargetedPostEntry(
1772
+ ref target,
1773
+ ref typedMessage,
1774
+ priority,
1775
+ entries[entryIndex]
1776
+ );
1614
1777
  }
1615
1778
  }
1616
1779
  }
@@ -1622,153 +1785,150 @@ namespace DxMessaging.Core.MessageBus
1622
1785
  && postTwt.handlers.Count > 0
1623
1786
  )
1624
1787
  {
1625
- foundAnyHandlers = true;
1626
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
1627
- postTwt,
1628
- _emissionId
1629
- );
1630
- int handlerListCount = handlerList.Count;
1631
- switch (handlerListCount)
1632
- {
1633
- case 1:
1634
- {
1635
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1636
- RunTargetedWithoutTargetingPostProcessing(
1637
- ref target,
1638
- ref typedMessage,
1639
- entry.Key,
1640
- entry.Value
1641
- );
1642
- break;
1643
- }
1644
- case 2:
1645
- {
1646
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1647
- RunTargetedWithoutTargetingPostProcessing(
1648
- ref target,
1649
- ref typedMessage,
1650
- entry.Key,
1651
- entry.Value
1652
- );
1653
- entry = handlerList[1];
1654
- RunTargetedWithoutTargetingPostProcessing(
1655
- ref target,
1656
- ref typedMessage,
1657
- entry.Key,
1658
- entry.Value
1659
- );
1660
- break;
1661
- }
1662
- case 3:
1663
- {
1664
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1665
- RunTargetedWithoutTargetingPostProcessing(
1666
- ref target,
1667
- ref typedMessage,
1668
- entry.Key,
1669
- entry.Value
1670
- );
1671
- entry = handlerList[1];
1672
- RunTargetedWithoutTargetingPostProcessing(
1673
- ref target,
1674
- ref typedMessage,
1675
- entry.Key,
1676
- entry.Value
1677
- );
1678
- entry = handlerList[2];
1679
- RunTargetedWithoutTargetingPostProcessing(
1680
- ref target,
1681
- ref typedMessage,
1682
- entry.Key,
1683
- entry.Value
1684
- );
1685
- break;
1686
- }
1687
- case 4:
1688
- {
1689
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1690
- RunTargetedWithoutTargetingPostProcessing(
1691
- ref target,
1692
- ref typedMessage,
1693
- entry.Key,
1694
- entry.Value
1695
- );
1696
- entry = handlerList[1];
1697
- RunTargetedWithoutTargetingPostProcessing(
1698
- ref target,
1699
- ref typedMessage,
1700
- entry.Key,
1701
- entry.Value
1702
- );
1703
- entry = handlerList[2];
1704
- RunTargetedWithoutTargetingPostProcessing(
1705
- ref target,
1706
- ref typedMessage,
1707
- entry.Key,
1708
- entry.Value
1709
- );
1710
- entry = handlerList[3];
1711
- RunTargetedWithoutTargetingPostProcessing(
1712
- ref target,
1713
- ref typedMessage,
1714
- entry.Key,
1715
- entry.Value
1716
- );
1717
- break;
1718
- }
1719
- case 5:
1788
+ DispatchSnapshot snapshot = targetedWithoutTargetingPostSnapshot.IsEmpty
1789
+ ? AcquireDispatchSnapshot<TMessage>(
1790
+ this,
1791
+ postTwt,
1792
+ DispatchCategory.TargetedWithoutTargetingPost,
1793
+ _emissionId
1794
+ )
1795
+ : targetedWithoutTargetingPostSnapshot;
1796
+ DispatchBucket[] buckets = snapshot.buckets;
1797
+ int bucketCount = snapshot.bucketCount;
1798
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
1799
+ {
1800
+ DispatchBucket bucket = buckets[bucketIndex];
1801
+ DispatchEntry[] entries = bucket.entries;
1802
+ int entryCount = bucket.entryCount;
1803
+ if (entryCount == 0)
1720
1804
  {
1721
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1722
- RunTargetedWithoutTargetingPostProcessing(
1723
- ref target,
1724
- ref typedMessage,
1725
- entry.Key,
1726
- entry.Value
1727
- );
1728
- entry = handlerList[1];
1729
- RunTargetedWithoutTargetingPostProcessing(
1730
- ref target,
1731
- ref typedMessage,
1732
- entry.Key,
1733
- entry.Value
1734
- );
1735
- entry = handlerList[2];
1736
- RunTargetedWithoutTargetingPostProcessing(
1737
- ref target,
1738
- ref typedMessage,
1739
- entry.Key,
1740
- entry.Value
1741
- );
1742
- entry = handlerList[3];
1743
- RunTargetedWithoutTargetingPostProcessing(
1744
- ref target,
1745
- ref typedMessage,
1746
- entry.Key,
1747
- entry.Value
1748
- );
1749
- entry = handlerList[4];
1750
- RunTargetedWithoutTargetingPostProcessing(
1751
- ref target,
1752
- ref typedMessage,
1753
- entry.Key,
1754
- entry.Value
1755
- );
1756
- break;
1805
+ continue;
1757
1806
  }
1758
- default:
1807
+
1808
+ foundAnyHandlers = true;
1809
+ int priority = bucket.priority;
1810
+ switch (entryCount)
1759
1811
  {
1760
- for (int i = 0; i < handlerListCount; ++i)
1812
+ case 1:
1761
1813
  {
1762
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
1763
- RunTargetedWithoutTargetingPostProcessing(
1814
+ InvokeTargetedWithoutTargetingPostEntry(
1764
1815
  ref target,
1765
1816
  ref typedMessage,
1766
- entry.Key,
1767
- entry.Value
1817
+ priority,
1818
+ entries[0]
1819
+ );
1820
+ continue;
1821
+ }
1822
+ case 2:
1823
+ {
1824
+ InvokeTargetedWithoutTargetingPostEntry(
1825
+ ref target,
1826
+ ref typedMessage,
1827
+ priority,
1828
+ entries[0]
1829
+ );
1830
+ InvokeTargetedWithoutTargetingPostEntry(
1831
+ ref target,
1832
+ ref typedMessage,
1833
+ priority,
1834
+ entries[1]
1835
+ );
1836
+ continue;
1837
+ }
1838
+ case 3:
1839
+ {
1840
+ InvokeTargetedWithoutTargetingPostEntry(
1841
+ ref target,
1842
+ ref typedMessage,
1843
+ priority,
1844
+ entries[0]
1845
+ );
1846
+ InvokeTargetedWithoutTargetingPostEntry(
1847
+ ref target,
1848
+ ref typedMessage,
1849
+ priority,
1850
+ entries[1]
1851
+ );
1852
+ InvokeTargetedWithoutTargetingPostEntry(
1853
+ ref target,
1854
+ ref typedMessage,
1855
+ priority,
1856
+ entries[2]
1857
+ );
1858
+ continue;
1859
+ }
1860
+ case 4:
1861
+ {
1862
+ InvokeTargetedWithoutTargetingPostEntry(
1863
+ ref target,
1864
+ ref typedMessage,
1865
+ priority,
1866
+ entries[0]
1867
+ );
1868
+ InvokeTargetedWithoutTargetingPostEntry(
1869
+ ref target,
1870
+ ref typedMessage,
1871
+ priority,
1872
+ entries[1]
1873
+ );
1874
+ InvokeTargetedWithoutTargetingPostEntry(
1875
+ ref target,
1876
+ ref typedMessage,
1877
+ priority,
1878
+ entries[2]
1879
+ );
1880
+ InvokeTargetedWithoutTargetingPostEntry(
1881
+ ref target,
1882
+ ref typedMessage,
1883
+ priority,
1884
+ entries[3]
1885
+ );
1886
+ continue;
1887
+ }
1888
+ case 5:
1889
+ {
1890
+ InvokeTargetedWithoutTargetingPostEntry(
1891
+ ref target,
1892
+ ref typedMessage,
1893
+ priority,
1894
+ entries[0]
1895
+ );
1896
+ InvokeTargetedWithoutTargetingPostEntry(
1897
+ ref target,
1898
+ ref typedMessage,
1899
+ priority,
1900
+ entries[1]
1901
+ );
1902
+ InvokeTargetedWithoutTargetingPostEntry(
1903
+ ref target,
1904
+ ref typedMessage,
1905
+ priority,
1906
+ entries[2]
1907
+ );
1908
+ InvokeTargetedWithoutTargetingPostEntry(
1909
+ ref target,
1910
+ ref typedMessage,
1911
+ priority,
1912
+ entries[3]
1913
+ );
1914
+ InvokeTargetedWithoutTargetingPostEntry(
1915
+ ref target,
1916
+ ref typedMessage,
1917
+ priority,
1918
+ entries[4]
1768
1919
  );
1920
+ continue;
1769
1921
  }
1922
+ }
1770
1923
 
1771
- break;
1924
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
1925
+ {
1926
+ InvokeTargetedWithoutTargetingPostEntry(
1927
+ ref target,
1928
+ ref typedMessage,
1929
+ priority,
1930
+ entries[entryIndex]
1931
+ );
1772
1932
  }
1773
1933
  }
1774
1934
  }
@@ -2124,70 +2284,46 @@ namespace DxMessaging.Core.MessageBus
2124
2284
  }
2125
2285
 
2126
2286
  // Pre-freeze broadcast post-processing for this emission (source-specific and without source)
2287
+ DispatchSnapshot broadcastPostSnapshot = DispatchSnapshot.Empty;
2288
+ DispatchSnapshot broadcastWithoutSourcePostSnapshot = DispatchSnapshot.Empty;
2127
2289
  if (
2128
2290
  _postProcessingBroadcastSinks.TryGetValue<TMessage>(
2129
- out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> prefreezeBroadcast
2291
+ out Dictionary<
2292
+ InstanceId,
2293
+ HandlerCache<int, HandlerCache>
2294
+ > broadcastPostHandlers
2130
2295
  )
2131
- && prefreezeBroadcast.TryGetValue(
2296
+ && broadcastPostHandlers.TryGetValue(
2132
2297
  source,
2133
- out HandlerCache<int, HandlerCache> prefreezeBroadcastByPriority
2298
+ out HandlerCache<int, HandlerCache> broadcastPostByPriority
2134
2299
  )
2135
- && prefreezeBroadcastByPriority.handlers.Count > 0
2300
+ && broadcastPostByPriority.handlers.Count > 0
2136
2301
  )
2137
2302
  {
2138
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
2139
- prefreezeBroadcastByPriority,
2303
+ broadcastPostSnapshot = AcquireDispatchSnapshot<TMessage>(
2304
+ this,
2305
+ broadcastPostByPriority,
2306
+ DispatchCategory.BroadcastPost,
2140
2307
  _emissionId
2141
2308
  );
2142
- int frozenCount = frozen.Count;
2143
- for (int i = 0; i < frozenCount; ++i)
2144
- {
2145
- KeyValuePair<int, HandlerCache> entry = frozen[i];
2146
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
2147
- entry.Value,
2148
- _emissionId
2149
- );
2150
- for (int h = 0; h < mhList.Count; ++h)
2151
- {
2152
- mhList[h]
2153
- .PrefreezeBroadcastPostProcessorsForEmission<TMessage>(
2154
- source,
2155
- entry.Key,
2156
- _emissionId,
2157
- this
2158
- );
2159
- }
2160
- }
2309
+ PrefreezeBroadcastPostSnapshot<TMessage>(ref source, broadcastPostSnapshot);
2161
2310
  }
2162
2311
  if (
2163
2312
  _postProcessingBroadcastWithoutSourceSinks.TryGetValue<TMessage>(
2164
- out HandlerCache<int, HandlerCache> prefreezeBws
2313
+ out HandlerCache<int, HandlerCache> broadcastWithoutSourceHandlers
2165
2314
  )
2166
- && prefreezeBws.handlers.Count > 0
2315
+ && broadcastWithoutSourceHandlers.handlers.Count > 0
2167
2316
  )
2168
2317
  {
2169
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
2170
- prefreezeBws,
2318
+ broadcastWithoutSourcePostSnapshot = AcquireDispatchSnapshot<TMessage>(
2319
+ this,
2320
+ broadcastWithoutSourceHandlers,
2321
+ DispatchCategory.BroadcastWithoutSourcePost,
2171
2322
  _emissionId
2172
2323
  );
2173
- int frozenCount = frozen.Count;
2174
- for (int i = 0; i < frozenCount; ++i)
2175
- {
2176
- KeyValuePair<int, HandlerCache> entry = frozen[i];
2177
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
2178
- entry.Value,
2179
- _emissionId
2180
- );
2181
- for (int h = 0; h < mhList.Count; ++h)
2182
- {
2183
- mhList[h]
2184
- .PrefreezeBroadcastWithoutSourcePostProcessorsForEmission<TMessage>(
2185
- entry.Key,
2186
- _emissionId,
2187
- this
2188
- );
2189
- }
2190
- }
2324
+ PrefreezeBroadcastWithoutSourcePostSnapshot<TMessage>(
2325
+ broadcastWithoutSourcePostSnapshot
2326
+ );
2191
2327
  }
2192
2328
 
2193
2329
  if (!RunBroadcastInterceptors(ref typedMessage, ref source))
@@ -2232,8 +2368,9 @@ namespace DxMessaging.Core.MessageBus
2232
2368
  }
2233
2369
 
2234
2370
  bool foundAnyHandlers = false;
2235
- Dictionary<InstanceId, HandlerCache<int, HandlerCache>> broadcastHandlers;
2236
- _ = _broadcastSinks.TryGetValue<TMessage>(out broadcastHandlers);
2371
+ _ = _broadcastSinks.TryGetValue<TMessage>(
2372
+ out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> broadcastHandlers
2373
+ );
2237
2374
  if (
2238
2375
  broadcastHandlers != null
2239
2376
  && broadcastHandlers.TryGetValue(
@@ -2323,152 +2460,148 @@ namespace DxMessaging.Core.MessageBus
2323
2460
  )
2324
2461
  {
2325
2462
  foundAnyHandlers = true;
2326
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
2463
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
2464
+ this,
2327
2465
  sortedHandlers,
2466
+ DispatchCategory.BroadcastPost,
2328
2467
  _emissionId
2329
2468
  );
2330
- int handlerListCount = handlerList.Count;
2331
- switch (handlerListCount)
2332
- {
2333
- case 1:
2334
- {
2335
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2336
- RunBroadcastPostProcessing(
2337
- ref source,
2338
- ref typedMessage,
2339
- entry.Key,
2340
- entry.Value
2341
- );
2342
- break;
2343
- }
2344
- case 2:
2345
- {
2346
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2347
- RunBroadcastPostProcessing(
2348
- ref source,
2349
- ref typedMessage,
2350
- entry.Key,
2351
- entry.Value
2352
- );
2353
- entry = handlerList[1];
2354
- RunBroadcastPostProcessing(
2355
- ref source,
2356
- ref typedMessage,
2357
- entry.Key,
2358
- entry.Value
2359
- );
2360
- break;
2361
- }
2362
- case 3:
2469
+ DispatchBucket[] buckets = snapshot.buckets;
2470
+ int bucketCount = snapshot.bucketCount;
2471
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
2472
+ {
2473
+ DispatchBucket bucket = buckets[bucketIndex];
2474
+ DispatchEntry[] entries = bucket.entries;
2475
+ int entryCount = bucket.entryCount;
2476
+ if (entryCount == 0)
2363
2477
  {
2364
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2365
- RunBroadcastPostProcessing(
2366
- ref source,
2367
- ref typedMessage,
2368
- entry.Key,
2369
- entry.Value
2370
- );
2371
- entry = handlerList[1];
2372
- RunBroadcastPostProcessing(
2373
- ref source,
2374
- ref typedMessage,
2375
- entry.Key,
2376
- entry.Value
2377
- );
2378
- entry = handlerList[2];
2379
- RunBroadcastPostProcessing(
2380
- ref source,
2381
- ref typedMessage,
2382
- entry.Key,
2383
- entry.Value
2384
- );
2385
- break;
2478
+ continue;
2386
2479
  }
2387
- case 4:
2480
+
2481
+ foundAnyHandlers = true;
2482
+ int priority = bucket.priority;
2483
+ switch (entryCount)
2388
2484
  {
2389
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2390
- RunBroadcastPostProcessing(
2391
- ref source,
2392
- ref typedMessage,
2393
- entry.Key,
2394
- entry.Value
2395
- );
2396
- entry = handlerList[1];
2397
- RunBroadcastPostProcessing(
2398
- ref source,
2399
- ref typedMessage,
2400
- entry.Key,
2401
- entry.Value
2402
- );
2403
- entry = handlerList[2];
2404
- RunBroadcastPostProcessing(
2405
- ref source,
2406
- ref typedMessage,
2407
- entry.Key,
2408
- entry.Value
2409
- );
2410
- entry = handlerList[3];
2411
- RunBroadcastPostProcessing(
2412
- ref source,
2413
- ref typedMessage,
2414
- entry.Key,
2415
- entry.Value
2416
- );
2417
- break;
2418
- }
2419
- case 5:
2420
- {
2421
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2422
- RunBroadcastPostProcessing(
2423
- ref source,
2424
- ref typedMessage,
2425
- entry.Key,
2426
- entry.Value
2427
- );
2428
- entry = handlerList[1];
2429
- RunBroadcastPostProcessing(
2430
- ref source,
2431
- ref typedMessage,
2432
- entry.Key,
2433
- entry.Value
2434
- );
2435
- entry = handlerList[2];
2436
- RunBroadcastPostProcessing(
2437
- ref source,
2438
- ref typedMessage,
2439
- entry.Key,
2440
- entry.Value
2441
- );
2442
- entry = handlerList[3];
2443
- RunBroadcastPostProcessing(
2444
- ref source,
2445
- ref typedMessage,
2446
- entry.Key,
2447
- entry.Value
2448
- );
2449
- entry = handlerList[4];
2450
- RunBroadcastPostProcessing(
2451
- ref source,
2452
- ref typedMessage,
2453
- entry.Key,
2454
- entry.Value
2455
- );
2456
- break;
2457
- }
2458
- default:
2459
- {
2460
- for (int i = 0; i < handlerListCount; ++i)
2485
+ case 1:
2461
2486
  {
2462
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
2463
- RunBroadcastPostProcessing(
2487
+ InvokeBroadcastPostEntry(
2464
2488
  ref source,
2465
2489
  ref typedMessage,
2466
- entry.Key,
2467
- entry.Value
2490
+ priority,
2491
+ entries[0]
2492
+ );
2493
+ continue;
2494
+ }
2495
+ case 2:
2496
+ {
2497
+ InvokeBroadcastPostEntry(
2498
+ ref source,
2499
+ ref typedMessage,
2500
+ priority,
2501
+ entries[0]
2502
+ );
2503
+ InvokeBroadcastPostEntry(
2504
+ ref source,
2505
+ ref typedMessage,
2506
+ priority,
2507
+ entries[1]
2508
+ );
2509
+ continue;
2510
+ }
2511
+ case 3:
2512
+ {
2513
+ InvokeBroadcastPostEntry(
2514
+ ref source,
2515
+ ref typedMessage,
2516
+ priority,
2517
+ entries[0]
2518
+ );
2519
+ InvokeBroadcastPostEntry(
2520
+ ref source,
2521
+ ref typedMessage,
2522
+ priority,
2523
+ entries[1]
2524
+ );
2525
+ InvokeBroadcastPostEntry(
2526
+ ref source,
2527
+ ref typedMessage,
2528
+ priority,
2529
+ entries[2]
2530
+ );
2531
+ continue;
2532
+ }
2533
+ case 4:
2534
+ {
2535
+ InvokeBroadcastPostEntry(
2536
+ ref source,
2537
+ ref typedMessage,
2538
+ priority,
2539
+ entries[0]
2540
+ );
2541
+ InvokeBroadcastPostEntry(
2542
+ ref source,
2543
+ ref typedMessage,
2544
+ priority,
2545
+ entries[1]
2546
+ );
2547
+ InvokeBroadcastPostEntry(
2548
+ ref source,
2549
+ ref typedMessage,
2550
+ priority,
2551
+ entries[2]
2552
+ );
2553
+ InvokeBroadcastPostEntry(
2554
+ ref source,
2555
+ ref typedMessage,
2556
+ priority,
2557
+ entries[3]
2558
+ );
2559
+ continue;
2560
+ }
2561
+ case 5:
2562
+ {
2563
+ InvokeBroadcastPostEntry(
2564
+ ref source,
2565
+ ref typedMessage,
2566
+ priority,
2567
+ entries[0]
2568
+ );
2569
+ InvokeBroadcastPostEntry(
2570
+ ref source,
2571
+ ref typedMessage,
2572
+ priority,
2573
+ entries[1]
2574
+ );
2575
+ InvokeBroadcastPostEntry(
2576
+ ref source,
2577
+ ref typedMessage,
2578
+ priority,
2579
+ entries[2]
2580
+ );
2581
+ InvokeBroadcastPostEntry(
2582
+ ref source,
2583
+ ref typedMessage,
2584
+ priority,
2585
+ entries[3]
2586
+ );
2587
+ InvokeBroadcastPostEntry(
2588
+ ref source,
2589
+ ref typedMessage,
2590
+ priority,
2591
+ entries[4]
2468
2592
  );
2593
+ continue;
2469
2594
  }
2595
+ }
2470
2596
 
2471
- break;
2597
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2598
+ {
2599
+ InvokeBroadcastPostEntry(
2600
+ ref source,
2601
+ ref typedMessage,
2602
+ priority,
2603
+ entries[entryIndex]
2604
+ );
2472
2605
  }
2473
2606
  }
2474
2607
  }
@@ -2478,20 +2611,149 @@ namespace DxMessaging.Core.MessageBus
2478
2611
  && 0 < sortedHandlers.handlers.Count
2479
2612
  )
2480
2613
  {
2481
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
2614
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
2615
+ this,
2482
2616
  sortedHandlers,
2617
+ DispatchCategory.BroadcastWithoutSourcePost,
2483
2618
  _emissionId
2484
2619
  );
2485
- int handlerListCount = handlerList.Count;
2486
- for (int i = 0; i < handlerListCount; ++i)
2487
- {
2488
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
2489
- RunBroadcastWithoutSourcePostProcessing(
2490
- ref source,
2491
- ref typedMessage,
2492
- entry.Key,
2493
- entry.Value
2494
- );
2620
+ DispatchBucket[] buckets = snapshot.buckets;
2621
+ int bucketCount = snapshot.bucketCount;
2622
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
2623
+ {
2624
+ DispatchBucket bucket = buckets[bucketIndex];
2625
+ DispatchEntry[] entries = bucket.entries;
2626
+ int entryCount = bucket.entryCount;
2627
+ if (entryCount == 0)
2628
+ {
2629
+ continue;
2630
+ }
2631
+
2632
+ bwsFound = true;
2633
+ int priority = bucket.priority;
2634
+ switch (entryCount)
2635
+ {
2636
+ case 1:
2637
+ {
2638
+ InvokeBroadcastWithoutSourcePostEntry(
2639
+ ref source,
2640
+ ref typedMessage,
2641
+ priority,
2642
+ entries[0]
2643
+ );
2644
+ continue;
2645
+ }
2646
+ case 2:
2647
+ {
2648
+ InvokeBroadcastWithoutSourcePostEntry(
2649
+ ref source,
2650
+ ref typedMessage,
2651
+ priority,
2652
+ entries[0]
2653
+ );
2654
+ InvokeBroadcastWithoutSourcePostEntry(
2655
+ ref source,
2656
+ ref typedMessage,
2657
+ priority,
2658
+ entries[1]
2659
+ );
2660
+ continue;
2661
+ }
2662
+ case 3:
2663
+ {
2664
+ InvokeBroadcastWithoutSourcePostEntry(
2665
+ ref source,
2666
+ ref typedMessage,
2667
+ priority,
2668
+ entries[0]
2669
+ );
2670
+ InvokeBroadcastWithoutSourcePostEntry(
2671
+ ref source,
2672
+ ref typedMessage,
2673
+ priority,
2674
+ entries[1]
2675
+ );
2676
+ InvokeBroadcastWithoutSourcePostEntry(
2677
+ ref source,
2678
+ ref typedMessage,
2679
+ priority,
2680
+ entries[2]
2681
+ );
2682
+ continue;
2683
+ }
2684
+ case 4:
2685
+ {
2686
+ InvokeBroadcastWithoutSourcePostEntry(
2687
+ ref source,
2688
+ ref typedMessage,
2689
+ priority,
2690
+ entries[0]
2691
+ );
2692
+ InvokeBroadcastWithoutSourcePostEntry(
2693
+ ref source,
2694
+ ref typedMessage,
2695
+ priority,
2696
+ entries[1]
2697
+ );
2698
+ InvokeBroadcastWithoutSourcePostEntry(
2699
+ ref source,
2700
+ ref typedMessage,
2701
+ priority,
2702
+ entries[2]
2703
+ );
2704
+ InvokeBroadcastWithoutSourcePostEntry(
2705
+ ref source,
2706
+ ref typedMessage,
2707
+ priority,
2708
+ entries[3]
2709
+ );
2710
+ continue;
2711
+ }
2712
+ case 5:
2713
+ {
2714
+ InvokeBroadcastWithoutSourcePostEntry(
2715
+ ref source,
2716
+ ref typedMessage,
2717
+ priority,
2718
+ entries[0]
2719
+ );
2720
+ InvokeBroadcastWithoutSourcePostEntry(
2721
+ ref source,
2722
+ ref typedMessage,
2723
+ priority,
2724
+ entries[1]
2725
+ );
2726
+ InvokeBroadcastWithoutSourcePostEntry(
2727
+ ref source,
2728
+ ref typedMessage,
2729
+ priority,
2730
+ entries[2]
2731
+ );
2732
+ InvokeBroadcastWithoutSourcePostEntry(
2733
+ ref source,
2734
+ ref typedMessage,
2735
+ priority,
2736
+ entries[3]
2737
+ );
2738
+ InvokeBroadcastWithoutSourcePostEntry(
2739
+ ref source,
2740
+ ref typedMessage,
2741
+ priority,
2742
+ entries[4]
2743
+ );
2744
+ continue;
2745
+ }
2746
+ }
2747
+
2748
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2749
+ {
2750
+ InvokeBroadcastWithoutSourcePostEntry(
2751
+ ref source,
2752
+ ref typedMessage,
2753
+ priority,
2754
+ entries[entryIndex]
2755
+ );
2756
+ }
2495
2757
  }
2496
2758
  }
2497
2759
 
@@ -2506,32 +2768,6 @@ namespace DxMessaging.Core.MessageBus
2506
2768
  }
2507
2769
  }
2508
2770
 
2509
- private void RunBroadcastWithoutSourcePostProcessing<TMessage>(
2510
- ref InstanceId source,
2511
- ref TMessage typedMessage,
2512
- int priority,
2513
- HandlerCache cache
2514
- )
2515
- where TMessage : IBroadcastMessage
2516
- {
2517
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(cache, _emissionId);
2518
- int messageHandlersCount = messageHandlers.Count;
2519
- if (messageHandlersCount == 0)
2520
- {
2521
- return;
2522
- }
2523
- for (int i = 0; i < messageHandlersCount; ++i)
2524
- {
2525
- MessageHandler handler = messageHandlers[i];
2526
- handler.HandleSourcedBroadcastWithoutSourcePostProcessing(
2527
- ref source,
2528
- ref typedMessage,
2529
- this,
2530
- priority
2531
- );
2532
- }
2533
- }
2534
-
2535
2771
  private void RunBroadcastPostProcessing<TMessage>(
2536
2772
  ref InstanceId source,
2537
2773
  ref TMessage typedMessage,
@@ -2765,128 +3001,144 @@ namespace DxMessaging.Core.MessageBus
2765
3001
 
2766
3002
  private void BroadcastGlobalUntargeted(ref IUntargetedMessage message)
2767
3003
  {
2768
- if (_globalSinks.handlers.Count == 0)
2769
- {
2770
- return;
2771
- }
2772
-
2773
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(
3004
+ DispatchSnapshot snapshot = AcquireGlobalDispatchSnapshot<IUntargetedMessage>(
3005
+ this,
2774
3006
  _globalSinks,
3007
+ DispatchCategory.GlobalUntargeted,
2775
3008
  _emissionId
2776
3009
  );
2777
- // Freeze each handler's global untargeted caches for this emission
2778
- for (int i = 0; i < messageHandlers.Count; ++i)
3010
+ DispatchBucket[] buckets = snapshot.buckets;
3011
+ int bucketCount = snapshot.bucketCount;
3012
+ if (bucketCount == 0)
2779
3013
  {
2780
- messageHandlers[i].PrefreezeGlobalUntargetedForEmission(_emissionId, this);
3014
+ return;
2781
3015
  }
2782
- int messageHandlersCount = messageHandlers.Count;
2783
- switch (messageHandlersCount)
3016
+
3017
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
2784
3018
  {
2785
- case 1:
3019
+ DispatchBucket bucket = buckets[bucketIndex];
3020
+ DispatchEntry[] entries = bucket.entries;
3021
+ int entryCount = bucket.entryCount;
3022
+ if (entryCount == 0)
2786
3023
  {
2787
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2788
- return;
3024
+ continue;
2789
3025
  }
2790
- case 2:
3026
+
3027
+ switch (entryCount)
2791
3028
  {
2792
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2793
- messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
2794
- return;
3029
+ case 1:
3030
+ {
3031
+ InvokeGlobalUntargetedEntry(ref message, entries[0]);
3032
+ continue;
3033
+ }
3034
+ case 2:
3035
+ {
3036
+ InvokeGlobalUntargetedEntry(ref message, entries[0]);
3037
+ InvokeGlobalUntargetedEntry(ref message, entries[1]);
3038
+ continue;
3039
+ }
3040
+ case 3:
3041
+ {
3042
+ InvokeGlobalUntargetedEntry(ref message, entries[0]);
3043
+ InvokeGlobalUntargetedEntry(ref message, entries[1]);
3044
+ InvokeGlobalUntargetedEntry(ref message, entries[2]);
3045
+ continue;
3046
+ }
3047
+ case 4:
3048
+ {
3049
+ InvokeGlobalUntargetedEntry(ref message, entries[0]);
3050
+ InvokeGlobalUntargetedEntry(ref message, entries[1]);
3051
+ InvokeGlobalUntargetedEntry(ref message, entries[2]);
3052
+ InvokeGlobalUntargetedEntry(ref message, entries[3]);
3053
+ continue;
3054
+ }
3055
+ case 5:
3056
+ {
3057
+ InvokeGlobalUntargetedEntry(ref message, entries[0]);
3058
+ InvokeGlobalUntargetedEntry(ref message, entries[1]);
3059
+ InvokeGlobalUntargetedEntry(ref message, entries[2]);
3060
+ InvokeGlobalUntargetedEntry(ref message, entries[3]);
3061
+ InvokeGlobalUntargetedEntry(ref message, entries[4]);
3062
+ continue;
3063
+ }
2795
3064
  }
2796
- case 3:
3065
+
3066
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2797
3067
  {
2798
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2799
- messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
2800
- messageHandlers[2].HandleGlobalUntargetedMessage(ref message, this);
2801
- return;
2802
- }
2803
- case 4:
2804
- {
2805
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2806
- messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
2807
- messageHandlers[2].HandleGlobalUntargetedMessage(ref message, this);
2808
- messageHandlers[3].HandleGlobalUntargetedMessage(ref message, this);
2809
- return;
2810
- }
2811
- case 5:
2812
- {
2813
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2814
- messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
2815
- messageHandlers[2].HandleGlobalUntargetedMessage(ref message, this);
2816
- messageHandlers[3].HandleGlobalUntargetedMessage(ref message, this);
2817
- messageHandlers[4].HandleGlobalUntargetedMessage(ref message, this);
2818
- return;
3068
+ InvokeGlobalUntargetedEntry(ref message, entries[entryIndex]);
2819
3069
  }
2820
3070
  }
2821
-
2822
- for (int i = 0; i < messageHandlersCount; ++i)
2823
- {
2824
- MessageHandler handler = messageHandlers[i];
2825
- handler.HandleGlobalUntargetedMessage(ref message, this);
2826
- }
2827
3071
  }
2828
3072
 
2829
3073
  private void BroadcastGlobalTargeted(ref InstanceId target, ref ITargetedMessage message)
2830
3074
  {
2831
- if (_globalSinks.handlers.Count == 0)
2832
- {
2833
- return;
2834
- }
2835
-
2836
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(
3075
+ DispatchSnapshot snapshot = AcquireGlobalDispatchSnapshot<ITargetedMessage>(
3076
+ this,
2837
3077
  _globalSinks,
3078
+ DispatchCategory.GlobalTargeted,
2838
3079
  _emissionId
2839
3080
  );
2840
- // Freeze each handler's global targeted caches for this emission
2841
- for (int i = 0; i < messageHandlers.Count; ++i)
3081
+ DispatchBucket[] buckets = snapshot.buckets;
3082
+ int bucketCount = snapshot.bucketCount;
3083
+ if (bucketCount == 0)
2842
3084
  {
2843
- messageHandlers[i].PrefreezeGlobalTargetedForEmission(_emissionId, this);
3085
+ return;
2844
3086
  }
2845
- int messageHandlersCount = messageHandlers.Count;
2846
- switch (messageHandlersCount)
3087
+
3088
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
2847
3089
  {
2848
- case 1:
2849
- {
2850
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2851
- return;
2852
- }
2853
- case 2:
2854
- {
2855
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2856
- messageHandlers[1].HandleGlobalTargetedMessage(ref target, ref message, this);
2857
- return;
2858
- }
2859
- case 3:
3090
+ DispatchBucket bucket = buckets[bucketIndex];
3091
+ DispatchEntry[] entries = bucket.entries;
3092
+ int entryCount = bucket.entryCount;
3093
+ if (entryCount == 0)
2860
3094
  {
2861
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2862
- messageHandlers[1].HandleGlobalTargetedMessage(ref target, ref message, this);
2863
- messageHandlers[2].HandleGlobalTargetedMessage(ref target, ref message, this);
2864
- return;
3095
+ continue;
2865
3096
  }
2866
- case 4:
3097
+
3098
+ switch (entryCount)
2867
3099
  {
2868
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2869
- messageHandlers[1].HandleGlobalTargetedMessage(ref target, ref message, this);
2870
- messageHandlers[2].HandleGlobalTargetedMessage(ref target, ref message, this);
2871
- messageHandlers[3].HandleGlobalTargetedMessage(ref target, ref message, this);
2872
- return;
3100
+ case 1:
3101
+ {
3102
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[0]);
3103
+ continue;
3104
+ }
3105
+ case 2:
3106
+ {
3107
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[0]);
3108
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[1]);
3109
+ continue;
3110
+ }
3111
+ case 3:
3112
+ {
3113
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[0]);
3114
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[1]);
3115
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[2]);
3116
+ continue;
3117
+ }
3118
+ case 4:
3119
+ {
3120
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[0]);
3121
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[1]);
3122
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[2]);
3123
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[3]);
3124
+ continue;
3125
+ }
3126
+ case 5:
3127
+ {
3128
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[0]);
3129
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[1]);
3130
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[2]);
3131
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[3]);
3132
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[4]);
3133
+ continue;
3134
+ }
2873
3135
  }
2874
- case 5:
3136
+
3137
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2875
3138
  {
2876
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2877
- messageHandlers[1].HandleGlobalTargetedMessage(ref target, ref message, this);
2878
- messageHandlers[2].HandleGlobalTargetedMessage(ref target, ref message, this);
2879
- messageHandlers[3].HandleGlobalTargetedMessage(ref target, ref message, this);
2880
- messageHandlers[4].HandleGlobalTargetedMessage(ref target, ref message, this);
2881
- return;
3139
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[entryIndex]);
2882
3140
  }
2883
3141
  }
2884
-
2885
- for (int i = 0; i < messageHandlersCount; ++i)
2886
- {
2887
- MessageHandler handler = messageHandlers[i];
2888
- handler.HandleGlobalTargetedMessage(ref target, ref message, this);
2889
- }
2890
3142
  }
2891
3143
 
2892
3144
  private void BroadcastGlobalSourcedBroadcast(
@@ -2894,80 +3146,73 @@ namespace DxMessaging.Core.MessageBus
2894
3146
  ref IBroadcastMessage message
2895
3147
  )
2896
3148
  {
2897
- if (_globalSinks.handlers.Count == 0)
2898
- {
2899
- return;
2900
- }
2901
-
2902
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(
3149
+ DispatchSnapshot snapshot = AcquireGlobalDispatchSnapshot<IBroadcastMessage>(
3150
+ this,
2903
3151
  _globalSinks,
3152
+ DispatchCategory.GlobalBroadcast,
2904
3153
  _emissionId
2905
3154
  );
2906
- // Freeze each handler's global broadcast caches for this emission
2907
- for (int i = 0; i < messageHandlers.Count; ++i)
3155
+ DispatchBucket[] buckets = snapshot.buckets;
3156
+ int bucketCount = snapshot.bucketCount;
3157
+ if (bucketCount == 0)
2908
3158
  {
2909
- messageHandlers[i].PrefreezeGlobalBroadcastForEmission(_emissionId, this);
3159
+ return;
2910
3160
  }
2911
- int messageHandlersCount = messageHandlers.Count;
2912
- switch (messageHandlersCount)
3161
+
3162
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
2913
3163
  {
2914
- case 1:
2915
- {
2916
- messageHandlers[0]
2917
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2918
- return;
2919
- }
2920
- case 2:
2921
- {
2922
- messageHandlers[0]
2923
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2924
- messageHandlers[1]
2925
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2926
- return;
2927
- }
2928
- case 3:
3164
+ DispatchBucket bucket = buckets[bucketIndex];
3165
+ DispatchEntry[] entries = bucket.entries;
3166
+ int entryCount = bucket.entryCount;
3167
+ if (entryCount == 0)
2929
3168
  {
2930
- messageHandlers[0]
2931
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2932
- messageHandlers[1]
2933
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2934
- messageHandlers[2]
2935
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2936
- return;
3169
+ continue;
2937
3170
  }
2938
- case 4:
3171
+
3172
+ switch (entryCount)
2939
3173
  {
2940
- messageHandlers[0]
2941
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2942
- messageHandlers[1]
2943
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2944
- messageHandlers[2]
2945
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2946
- messageHandlers[3]
2947
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2948
- return;
3174
+ case 1:
3175
+ {
3176
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[0]);
3177
+ continue;
3178
+ }
3179
+ case 2:
3180
+ {
3181
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[0]);
3182
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[1]);
3183
+ continue;
3184
+ }
3185
+ case 3:
3186
+ {
3187
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[0]);
3188
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[1]);
3189
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[2]);
3190
+ continue;
3191
+ }
3192
+ case 4:
3193
+ {
3194
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[0]);
3195
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[1]);
3196
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[2]);
3197
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[3]);
3198
+ continue;
3199
+ }
3200
+ case 5:
3201
+ {
3202
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[0]);
3203
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[1]);
3204
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[2]);
3205
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[3]);
3206
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[4]);
3207
+ continue;
3208
+ }
2949
3209
  }
2950
- case 5:
3210
+
3211
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2951
3212
  {
2952
- messageHandlers[0]
2953
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2954
- messageHandlers[1]
2955
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2956
- messageHandlers[2]
2957
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2958
- messageHandlers[3]
2959
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2960
- messageHandlers[4]
2961
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2962
- return;
3213
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[entryIndex]);
2963
3214
  }
2964
3215
  }
2965
-
2966
- for (int i = 0; i < messageHandlersCount; ++i)
2967
- {
2968
- MessageHandler handler = messageHandlers[i];
2969
- handler.HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2970
- }
2971
3216
  }
2972
3217
 
2973
3218
  private bool TryGetUntargetedInterceptorCaches<TMessage>(
@@ -3191,135 +3436,152 @@ namespace DxMessaging.Core.MessageBus
3191
3436
  return false;
3192
3437
  }
3193
3438
 
3194
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
3439
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
3440
+ this,
3195
3441
  sortedHandlers,
3442
+ DispatchCategory.Untargeted,
3196
3443
  _emissionId
3197
3444
  );
3445
+ DispatchBucket[] buckets = snapshot.buckets;
3446
+ int bucketCount = snapshot.bucketCount;
3198
3447
 
3199
- int handlerListCount = handlerList.Count;
3200
- switch (handlerListCount)
3448
+ if (bucketCount == 0)
3201
3449
  {
3202
- case 1:
3203
- {
3204
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3205
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3206
- return true;
3207
- }
3208
- case 2:
3209
- {
3210
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3211
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3212
- entry = handlerList[1];
3213
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3214
- return true;
3215
- }
3216
- case 3:
3450
+ return false;
3451
+ }
3452
+
3453
+ bool invoked = false;
3454
+
3455
+ for (int i = 0; i < bucketCount; ++i)
3456
+ {
3457
+ DispatchBucket bucket = buckets[i];
3458
+ DispatchEntry[] entries = bucket.entries;
3459
+ int entryCount = bucket.entryCount;
3460
+ if (entryCount == 0)
3217
3461
  {
3218
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3219
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3220
- entry = handlerList[1];
3221
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3222
- entry = handlerList[2];
3223
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3224
- return true;
3462
+ continue;
3225
3463
  }
3226
- case 4:
3464
+
3465
+ invoked = true;
3466
+ int priority = bucket.priority;
3467
+ switch (entryCount)
3227
3468
  {
3228
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3229
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3230
- entry = handlerList[1];
3231
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3232
- entry = handlerList[2];
3233
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3234
- entry = handlerList[3];
3235
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3236
- return true;
3469
+ case 1:
3470
+ {
3471
+ InvokeUntargetedEntry(ref message, priority, entries[0]);
3472
+ continue;
3473
+ }
3474
+ case 2:
3475
+ {
3476
+ InvokeUntargetedEntry(ref message, priority, entries[0]);
3477
+ InvokeUntargetedEntry(ref message, priority, entries[1]);
3478
+ continue;
3479
+ }
3480
+ case 3:
3481
+ {
3482
+ InvokeUntargetedEntry(ref message, priority, entries[0]);
3483
+ InvokeUntargetedEntry(ref message, priority, entries[1]);
3484
+ InvokeUntargetedEntry(ref message, priority, entries[2]);
3485
+ continue;
3486
+ }
3487
+ case 4:
3488
+ {
3489
+ InvokeUntargetedEntry(ref message, priority, entries[0]);
3490
+ InvokeUntargetedEntry(ref message, priority, entries[1]);
3491
+ InvokeUntargetedEntry(ref message, priority, entries[2]);
3492
+ InvokeUntargetedEntry(ref message, priority, entries[3]);
3493
+ continue;
3494
+ }
3495
+ case 5:
3496
+ {
3497
+ InvokeUntargetedEntry(ref message, priority, entries[0]);
3498
+ InvokeUntargetedEntry(ref message, priority, entries[1]);
3499
+ InvokeUntargetedEntry(ref message, priority, entries[2]);
3500
+ InvokeUntargetedEntry(ref message, priority, entries[3]);
3501
+ InvokeUntargetedEntry(ref message, priority, entries[4]);
3502
+ continue;
3503
+ }
3237
3504
  }
3238
- case 5:
3505
+
3506
+ for (int handlerIndex = 0; handlerIndex < entryCount; ++handlerIndex)
3239
3507
  {
3240
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3241
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3242
- entry = handlerList[1];
3243
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3244
- entry = handlerList[2];
3245
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3246
- entry = handlerList[3];
3247
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3248
- entry = handlerList[4];
3249
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3250
- return true;
3508
+ InvokeUntargetedEntry(ref message, priority, entries[handlerIndex]);
3251
3509
  }
3252
3510
  }
3253
3511
 
3254
- for (int i = 0; i < handlerListCount; ++i)
3512
+ return invoked;
3513
+ }
3514
+
3515
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
3516
+ private void InvokeUntargetedEntry<TMessage>(
3517
+ ref TMessage message,
3518
+ int priority,
3519
+ DispatchEntry entry
3520
+ )
3521
+ where TMessage : IMessage
3522
+ {
3523
+ MessageHandler messageHandler = entry.handler;
3524
+ if (!messageHandler.active)
3255
3525
  {
3256
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
3257
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3526
+ return;
3258
3527
  }
3259
- return true;
3528
+
3529
+ MessageHandler.UntargetedDispatchLink<TMessage> link =
3530
+ Unsafe.As<MessageHandler.UntargetedDispatchLink<TMessage>>(entry.dispatch);
3531
+ link.Invoke(messageHandler, ref message, priority, _emissionId);
3260
3532
  }
3261
3533
 
3262
- private void RunUntargetedBroadcast<TMessage>(
3534
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
3535
+ private void InvokeUntargetedPostEntry<TMessage>(
3263
3536
  ref TMessage message,
3264
3537
  int priority,
3265
- HandlerCache cache
3538
+ DispatchEntry entry
3266
3539
  )
3267
- where TMessage : IMessage
3540
+ where TMessage : IUntargetedMessage
3268
3541
  {
3269
- if (cache.handlers.Count == 0)
3542
+ MessageHandler handler = entry.handler;
3543
+ if (!handler.active)
3270
3544
  {
3271
3545
  return;
3272
3546
  }
3273
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(cache, _emissionId);
3274
- int messageHandlersCount = messageHandlers.Count;
3275
- if (messageHandlersCount == 0)
3547
+
3548
+ MessageHandler.UntargetedPostDispatchLink<TMessage> link =
3549
+ Unsafe.As<MessageHandler.UntargetedPostDispatchLink<TMessage>>(entry.dispatch);
3550
+ link.Invoke(handler, ref message, priority, _emissionId);
3551
+ }
3552
+
3553
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
3554
+ private void PrefreezeUntargetedPostSnapshot<TMessage>(DispatchSnapshot snapshot)
3555
+ where TMessage : IUntargetedMessage
3556
+ {
3557
+ if (snapshot.IsEmpty)
3276
3558
  {
3277
3559
  return;
3278
3560
  }
3279
- switch (messageHandlersCount)
3561
+
3562
+ DispatchBucket[] buckets = snapshot.buckets;
3563
+ int bucketCount = snapshot.bucketCount;
3564
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
3280
3565
  {
3281
- case 1:
3282
- {
3283
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3284
- return;
3285
- }
3286
- case 2:
3287
- {
3288
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3289
- messageHandlers[1].HandleUntargetedMessage(ref message, this, priority);
3290
- return;
3291
- }
3292
- case 3:
3293
- {
3294
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3295
- messageHandlers[1].HandleUntargetedMessage(ref message, this, priority);
3296
- messageHandlers[2].HandleUntargetedMessage(ref message, this, priority);
3297
- return;
3298
- }
3299
- case 4:
3566
+ DispatchBucket bucket = buckets[bucketIndex];
3567
+ DispatchEntry[] entries = bucket.entries;
3568
+ int entryCount = bucket.entryCount;
3569
+ if (entryCount == 0)
3300
3570
  {
3301
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3302
- messageHandlers[1].HandleUntargetedMessage(ref message, this, priority);
3303
- messageHandlers[2].HandleUntargetedMessage(ref message, this, priority);
3304
- messageHandlers[3].HandleUntargetedMessage(ref message, this, priority);
3305
- return;
3571
+ continue;
3306
3572
  }
3307
- case 5:
3573
+
3574
+ int priority = bucket.priority;
3575
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
3308
3576
  {
3309
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3310
- messageHandlers[1].HandleUntargetedMessage(ref message, this, priority);
3311
- messageHandlers[2].HandleUntargetedMessage(ref message, this, priority);
3312
- messageHandlers[3].HandleUntargetedMessage(ref message, this, priority);
3313
- messageHandlers[4].HandleUntargetedMessage(ref message, this, priority);
3314
- return;
3577
+ entries[entryIndex]
3578
+ .handler.PrefreezeUntargetedPostProcessorsForEmission<TMessage>(
3579
+ priority,
3580
+ _emissionId,
3581
+ this
3582
+ );
3315
3583
  }
3316
3584
  }
3317
-
3318
- for (int i = 0; i < messageHandlersCount; ++i)
3319
- {
3320
- MessageHandler handler = messageHandlers[i];
3321
- handler.HandleUntargetedMessage(ref message, this, priority);
3322
- }
3323
3585
  }
3324
3586
 
3325
3587
  private bool InternalTargetedWithoutTargetingBroadcast<TMessage>(
@@ -3336,73 +3598,162 @@ namespace DxMessaging.Core.MessageBus
3336
3598
  return false;
3337
3599
  }
3338
3600
 
3339
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
3601
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
3602
+ this,
3340
3603
  sortedHandlers,
3604
+ DispatchCategory.TargetedWithoutTargeting,
3341
3605
  _emissionId
3342
3606
  );
3607
+ DispatchBucket[] buckets = snapshot.buckets;
3608
+ int bucketCount = snapshot.bucketCount;
3609
+ bool invoked = false;
3343
3610
 
3344
- int handlerListCount = handlerList.Count;
3345
- switch (handlerListCount)
3611
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
3346
3612
  {
3347
- case 1:
3348
- {
3349
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3350
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3351
- return true;
3352
- }
3353
- case 2:
3354
- {
3355
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3356
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3357
- entry = handlerList[1];
3358
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3359
- return true;
3360
- }
3361
- case 3:
3613
+ DispatchBucket bucket = buckets[bucketIndex];
3614
+ DispatchEntry[] entries = bucket.entries;
3615
+ int entryCount = bucket.entryCount;
3616
+ if (entryCount == 0)
3362
3617
  {
3363
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3364
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3365
- entry = handlerList[1];
3366
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3367
- entry = handlerList[2];
3368
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3369
- return true;
3618
+ continue;
3370
3619
  }
3371
- case 4:
3620
+
3621
+ invoked = true;
3622
+ int priority = bucket.priority;
3623
+ if (entries[0].prefreeze.kind == PrefreezeKindTargetedWithoutTargetingHandlers)
3372
3624
  {
3373
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3374
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3375
- entry = handlerList[1];
3376
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3377
- entry = handlerList[2];
3378
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3379
- entry = handlerList[3];
3380
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3381
- return true;
3625
+ PrefreezeTargetedWithoutTargetingEntries<TMessage>(
3626
+ entries,
3627
+ entryCount,
3628
+ priority
3629
+ );
3382
3630
  }
3383
- case 5:
3631
+ switch (entryCount)
3384
3632
  {
3385
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3386
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3387
- entry = handlerList[1];
3388
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3389
- entry = handlerList[2];
3390
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3391
- entry = handlerList[3];
3392
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3393
- entry = handlerList[4];
3394
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3395
- return true;
3396
- }
3397
- }
3633
+ case 1:
3634
+ {
3635
+ InvokeTargetedWithoutTargetingEntry(
3636
+ ref target,
3637
+ ref message,
3638
+ priority,
3639
+ entries[0]
3640
+ );
3641
+ continue;
3642
+ }
3643
+ case 2:
3644
+ {
3645
+ InvokeTargetedWithoutTargetingEntry(
3646
+ ref target,
3647
+ ref message,
3648
+ priority,
3649
+ entries[0]
3650
+ );
3651
+ InvokeTargetedWithoutTargetingEntry(
3652
+ ref target,
3653
+ ref message,
3654
+ priority,
3655
+ entries[1]
3656
+ );
3657
+ continue;
3658
+ }
3659
+ case 3:
3660
+ {
3661
+ InvokeTargetedWithoutTargetingEntry(
3662
+ ref target,
3663
+ ref message,
3664
+ priority,
3665
+ entries[0]
3666
+ );
3667
+ InvokeTargetedWithoutTargetingEntry(
3668
+ ref target,
3669
+ ref message,
3670
+ priority,
3671
+ entries[1]
3672
+ );
3673
+ InvokeTargetedWithoutTargetingEntry(
3674
+ ref target,
3675
+ ref message,
3676
+ priority,
3677
+ entries[2]
3678
+ );
3679
+ continue;
3680
+ }
3681
+ case 4:
3682
+ {
3683
+ InvokeTargetedWithoutTargetingEntry(
3684
+ ref target,
3685
+ ref message,
3686
+ priority,
3687
+ entries[0]
3688
+ );
3689
+ InvokeTargetedWithoutTargetingEntry(
3690
+ ref target,
3691
+ ref message,
3692
+ priority,
3693
+ entries[1]
3694
+ );
3695
+ InvokeTargetedWithoutTargetingEntry(
3696
+ ref target,
3697
+ ref message,
3698
+ priority,
3699
+ entries[2]
3700
+ );
3701
+ InvokeTargetedWithoutTargetingEntry(
3702
+ ref target,
3703
+ ref message,
3704
+ priority,
3705
+ entries[3]
3706
+ );
3707
+ continue;
3708
+ }
3709
+ case 5:
3710
+ {
3711
+ InvokeTargetedWithoutTargetingEntry(
3712
+ ref target,
3713
+ ref message,
3714
+ priority,
3715
+ entries[0]
3716
+ );
3717
+ InvokeTargetedWithoutTargetingEntry(
3718
+ ref target,
3719
+ ref message,
3720
+ priority,
3721
+ entries[1]
3722
+ );
3723
+ InvokeTargetedWithoutTargetingEntry(
3724
+ ref target,
3725
+ ref message,
3726
+ priority,
3727
+ entries[2]
3728
+ );
3729
+ InvokeTargetedWithoutTargetingEntry(
3730
+ ref target,
3731
+ ref message,
3732
+ priority,
3733
+ entries[3]
3734
+ );
3735
+ InvokeTargetedWithoutTargetingEntry(
3736
+ ref target,
3737
+ ref message,
3738
+ priority,
3739
+ entries[4]
3740
+ );
3741
+ continue;
3742
+ }
3743
+ }
3398
3744
 
3399
- for (int i = 0; i < handlerListCount; ++i)
3400
- {
3401
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
3402
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3745
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
3746
+ {
3747
+ InvokeTargetedWithoutTargetingEntry(
3748
+ ref target,
3749
+ ref message,
3750
+ priority,
3751
+ entries[entryIndex]
3752
+ );
3753
+ }
3403
3754
  }
3404
3755
 
3405
- return true;
3756
+ return invoked;
3406
3757
  }
3407
3758
 
3408
3759
  private void RunTargetedWithoutTargeting<TMessage>(
@@ -3754,6 +4105,8 @@ namespace DxMessaging.Core.MessageBus
3754
4105
 
3755
4106
  InstanceId handlerOwnerId = messageHandler.owner;
3756
4107
  HandlerCache<int, HandlerCache> handlers = sinks.GetOrAdd<T>();
4108
+ HandlerCache<int, HandlerCache> capturedHandlers = handlers;
4109
+ DispatchCategory dispatchCategory = GetDispatchCategory(registrationMethod);
3757
4110
 
3758
4111
  if (!handlers.handlers.TryGetValue(priority, out HandlerCache cache))
3759
4112
  {
@@ -3775,6 +4128,7 @@ namespace DxMessaging.Core.MessageBus
3775
4128
  int count = handler.GetValueOrDefault(messageHandler, 0);
3776
4129
 
3777
4130
  handler[messageHandler] = count + 1;
4131
+ StageDispatchSnapshot<T>(this, capturedHandlers, dispatchCategory);
3778
4132
  Type type = typeof(T);
3779
4133
  _log.Log(
3780
4134
  new MessagingRegistration(
@@ -3854,6 +4208,7 @@ namespace DxMessaging.Core.MessageBus
3854
4208
  {
3855
4209
  handler[messageHandler] = count - 1;
3856
4210
  }
4211
+ StageDispatchSnapshot<T>(this, handlers, dispatchCategory);
3857
4212
  };
3858
4213
  }
3859
4214
 
@@ -3873,6 +4228,7 @@ namespace DxMessaging.Core.MessageBus
3873
4228
 
3874
4229
  Dictionary<InstanceId, HandlerCache<int, HandlerCache>> broadcastHandlers =
3875
4230
  sinks.GetOrAdd<T>();
4231
+ DispatchCategory dispatchCategory = GetDispatchCategory(registrationMethod);
3876
4232
 
3877
4233
  if (
3878
4234
  !broadcastHandlers.TryGetValue(
@@ -3915,6 +4271,7 @@ namespace DxMessaging.Core.MessageBus
3915
4271
  registrationMethod
3916
4272
  )
3917
4273
  );
4274
+ StageDispatchSnapshot<T>(this, handlers, dispatchCategory);
3918
4275
 
3919
4276
  return () =>
3920
4277
  {
@@ -3990,9 +4347,858 @@ namespace DxMessaging.Core.MessageBus
3990
4347
  {
3991
4348
  handler[messageHandler] = count - 1;
3992
4349
  }
4350
+ StageDispatchSnapshot<T>(this, handlers, dispatchCategory);
3993
4351
  };
3994
4352
  }
3995
4353
 
4354
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4355
+ private static void StageDispatchSnapshot<TMessage>(
4356
+ MessageBus messageBus,
4357
+ HandlerCache<int, HandlerCache> handlers,
4358
+ DispatchCategory category
4359
+ )
4360
+ where TMessage : IMessage
4361
+ {
4362
+ if (handlers == null || category == DispatchCategory.None)
4363
+ {
4364
+ return;
4365
+ }
4366
+
4367
+ HandlerCache<int, HandlerCache>.DispatchState state = handlers.GetOrCreateDispatchState(
4368
+ category
4369
+ );
4370
+ if (state.hasPending)
4371
+ {
4372
+ ReleaseSnapshot(ref state.pending);
4373
+ }
4374
+ state.hasPending = true;
4375
+ state.pendingDirty = true;
4376
+ }
4377
+
4378
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4379
+ private static void StageGlobalDispatchSnapshot<TMessage>(
4380
+ MessageBus messageBus,
4381
+ HandlerCache handlers,
4382
+ DispatchCategory category
4383
+ )
4384
+ where TMessage : IMessage
4385
+ {
4386
+ if (handlers == null || category == DispatchCategory.None)
4387
+ {
4388
+ return;
4389
+ }
4390
+
4391
+ HandlerCache.DispatchState state = handlers.GetOrCreateDispatchState(category);
4392
+ if (state.hasPending)
4393
+ {
4394
+ ReleaseSnapshot(ref state.pending);
4395
+ }
4396
+
4397
+ state.hasPending = true;
4398
+ state.pendingDirty = true;
4399
+ }
4400
+
4401
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4402
+ private static void ReleaseSnapshot(ref DispatchSnapshot snapshot)
4403
+ {
4404
+ if (snapshot == null)
4405
+ {
4406
+ return;
4407
+ }
4408
+
4409
+ snapshot.Release();
4410
+ snapshot = DispatchSnapshot.Empty;
4411
+ }
4412
+
4413
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4414
+ private static DispatchSnapshot AcquireDispatchSnapshot<TMessage>(
4415
+ MessageBus messageBus,
4416
+ HandlerCache<int, HandlerCache> handlers,
4417
+ DispatchCategory category,
4418
+ long emissionId
4419
+ )
4420
+ where TMessage : IMessage
4421
+ {
4422
+ if (handlers == null)
4423
+ {
4424
+ return DispatchSnapshot.Empty;
4425
+ }
4426
+
4427
+ if (category == DispatchCategory.None)
4428
+ {
4429
+ return DispatchSnapshot.Empty;
4430
+ }
4431
+
4432
+ HandlerCache<int, HandlerCache>.DispatchState state = handlers.GetOrCreateDispatchState(
4433
+ category
4434
+ );
4435
+
4436
+ bool hasHandlers = handlers.handlers.Count > 0;
4437
+
4438
+ if (state.hasPending)
4439
+ {
4440
+ if (state.pendingDirty || (hasHandlers && state.pending.IsEmpty))
4441
+ {
4442
+ ReleaseSnapshot(ref state.pending);
4443
+ state.pending = hasHandlers
4444
+ ? BuildDispatchSnapshot<TMessage>(messageBus, handlers, category)
4445
+ : DispatchSnapshot.Empty;
4446
+
4447
+ state.pendingDirty = false;
4448
+ }
4449
+ }
4450
+ else if (state.active.IsEmpty && hasHandlers)
4451
+ {
4452
+ ReleaseSnapshot(ref state.pending);
4453
+ state.pending = BuildDispatchSnapshot<TMessage>(messageBus, handlers, category);
4454
+ state.hasPending = true;
4455
+ state.pendingDirty = false;
4456
+ }
4457
+
4458
+ if (state.snapshotEmissionId != emissionId)
4459
+ {
4460
+ if (state.hasPending)
4461
+ {
4462
+ ReleaseSnapshot(ref state.active);
4463
+ if (state.pendingDirty || (hasHandlers && state.pending.IsEmpty))
4464
+ {
4465
+ ReleaseSnapshot(ref state.pending);
4466
+ state.pending = hasHandlers
4467
+ ? BuildDispatchSnapshot<TMessage>(messageBus, handlers, category)
4468
+ : DispatchSnapshot.Empty;
4469
+
4470
+ state.pendingDirty = false;
4471
+ }
4472
+
4473
+ state.active = state.pending ?? DispatchSnapshot.Empty;
4474
+ state.pending = DispatchSnapshot.Empty;
4475
+ state.hasPending = false;
4476
+ state.pendingDirty = false;
4477
+ }
4478
+ else if (!hasHandlers && !state.active.IsEmpty)
4479
+ {
4480
+ ReleaseSnapshot(ref state.active);
4481
+ state.active = DispatchSnapshot.Empty;
4482
+ }
4483
+
4484
+ state.snapshotEmissionId = emissionId;
4485
+ }
4486
+
4487
+ return state.active;
4488
+ }
4489
+
4490
+ private static DispatchSnapshot BuildDispatchSnapshot<TMessage>(
4491
+ MessageBus messageBus,
4492
+ HandlerCache<int, HandlerCache> handlers,
4493
+ DispatchCategory category
4494
+ )
4495
+ where TMessage : IMessage
4496
+ {
4497
+ if (handlers == null || handlers.order.Count == 0)
4498
+ {
4499
+ return DispatchSnapshot.Empty;
4500
+ }
4501
+
4502
+ List<int> orderedPriorities = handlers.order;
4503
+ int priorityCount = orderedPriorities.Count;
4504
+ DispatchBucket[] buckets = DispatchBucketPool.Rent(priorityCount);
4505
+
4506
+ for (int i = 0; i < priorityCount; ++i)
4507
+ {
4508
+ int priority = orderedPriorities[i];
4509
+ if (
4510
+ !handlers.handlers.TryGetValue(priority, out HandlerCache cache)
4511
+ || cache == null
4512
+ )
4513
+ {
4514
+ buckets[i] = DispatchBucket.CreateEmpty(priority);
4515
+ continue;
4516
+ }
4517
+
4518
+ Dictionary<MessageHandler, int> handlerLookup = cache.handlers;
4519
+ if (handlerLookup == null || handlerLookup.Count == 0)
4520
+ {
4521
+ buckets[i] = DispatchBucket.CreateEmpty(priority);
4522
+ continue;
4523
+ }
4524
+
4525
+ int entryCount = handlerLookup.Count;
4526
+ DispatchEntry[] entries = DispatchEntryPool.Rent(entryCount);
4527
+ FillDispatchEntries<TMessage>(
4528
+ messageBus,
4529
+ handlerLookup,
4530
+ category,
4531
+ priority,
4532
+ entries
4533
+ );
4534
+ buckets[i] = new DispatchBucket(priority, entries, entryCount, pooledEntries: true);
4535
+ }
4536
+
4537
+ return new DispatchSnapshot(buckets, priorityCount, pooled: true);
4538
+ }
4539
+
4540
+ private static void FillDispatchEntries<TMessage>(
4541
+ MessageBus messageBus,
4542
+ Dictionary<MessageHandler, int> handlerLookup,
4543
+ DispatchCategory category,
4544
+ int priority,
4545
+ DispatchEntry[] entries
4546
+ )
4547
+ where TMessage : IMessage
4548
+ {
4549
+ if (handlerLookup == null)
4550
+ {
4551
+ return;
4552
+ }
4553
+
4554
+ PrefreezeDescriptor prefreeze = CreatePrefreezeDescriptor(category, priority);
4555
+ int index = 0;
4556
+ foreach (KeyValuePair<MessageHandler, int> kvp in handlerLookup)
4557
+ {
4558
+ MessageHandler messageHandler = kvp.Key;
4559
+ object dispatch = GetDispatchLink<TMessage>(messageBus, messageHandler, category);
4560
+ entries[index++] = new DispatchEntry(messageHandler, dispatch, prefreeze);
4561
+ }
4562
+ if (index < entries.Length)
4563
+ {
4564
+ Array.Clear(entries, index, entries.Length - index);
4565
+ }
4566
+ }
4567
+
4568
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4569
+ private static DispatchSnapshot AcquireGlobalDispatchSnapshot<TMessage>(
4570
+ MessageBus messageBus,
4571
+ HandlerCache handlers,
4572
+ DispatchCategory category,
4573
+ long emissionId
4574
+ )
4575
+ where TMessage : IMessage
4576
+ {
4577
+ if (handlers == null || category == DispatchCategory.None)
4578
+ {
4579
+ return DispatchSnapshot.Empty;
4580
+ }
4581
+
4582
+ HandlerCache.DispatchState state = handlers.GetOrCreateDispatchState(category);
4583
+ bool hasHandlers = handlers.handlers.Count > 0;
4584
+
4585
+ if (state.hasPending)
4586
+ {
4587
+ if (state.pendingDirty || (hasHandlers && state.pending.IsEmpty))
4588
+ {
4589
+ ReleaseSnapshot(ref state.pending);
4590
+ if (hasHandlers)
4591
+ {
4592
+ state.pending = BuildGlobalDispatchSnapshot<TMessage>(
4593
+ messageBus,
4594
+ handlers,
4595
+ category
4596
+ );
4597
+ }
4598
+ else
4599
+ {
4600
+ state.pending = DispatchSnapshot.Empty;
4601
+ }
4602
+
4603
+ state.pendingDirty = false;
4604
+ }
4605
+ }
4606
+ else if (state.active.IsEmpty && hasHandlers)
4607
+ {
4608
+ ReleaseSnapshot(ref state.pending);
4609
+ state.pending = BuildGlobalDispatchSnapshot<TMessage>(
4610
+ messageBus,
4611
+ handlers,
4612
+ category
4613
+ );
4614
+ state.hasPending = true;
4615
+ state.pendingDirty = false;
4616
+ }
4617
+
4618
+ if (state.snapshotEmissionId != emissionId)
4619
+ {
4620
+ if (state.hasPending)
4621
+ {
4622
+ ReleaseSnapshot(ref state.active);
4623
+ if (state.pendingDirty || (hasHandlers && state.pending.IsEmpty))
4624
+ {
4625
+ ReleaseSnapshot(ref state.pending);
4626
+ state.pending = hasHandlers
4627
+ ? BuildGlobalDispatchSnapshot<TMessage>(messageBus, handlers, category)
4628
+ : DispatchSnapshot.Empty;
4629
+
4630
+ state.pendingDirty = false;
4631
+ }
4632
+
4633
+ state.active = state.pending ?? DispatchSnapshot.Empty;
4634
+ state.pending = DispatchSnapshot.Empty;
4635
+ state.hasPending = false;
4636
+ state.pendingDirty = false;
4637
+ }
4638
+ else if (!hasHandlers && !state.active.IsEmpty)
4639
+ {
4640
+ ReleaseSnapshot(ref state.active);
4641
+ state.active = DispatchSnapshot.Empty;
4642
+ }
4643
+
4644
+ state.snapshotEmissionId = emissionId;
4645
+ }
4646
+
4647
+ return state.active;
4648
+ }
4649
+
4650
+ private static DispatchSnapshot BuildGlobalDispatchSnapshot<TMessage>(
4651
+ MessageBus messageBus,
4652
+ HandlerCache handlers,
4653
+ DispatchCategory category
4654
+ )
4655
+ where TMessage : IMessage
4656
+ {
4657
+ if (handlers == null || handlers.handlers.Count == 0)
4658
+ {
4659
+ return DispatchSnapshot.Empty;
4660
+ }
4661
+
4662
+ DispatchBucket[] buckets = DispatchBucketPool.Rent(1);
4663
+ Dictionary<MessageHandler, int> handlerLookup = handlers.handlers;
4664
+ int entryCount = handlerLookup.Count;
4665
+ DispatchEntry[] entries = DispatchEntryPool.Rent(entryCount);
4666
+ PrefreezeDescriptor prefreeze = CreatePrefreezeDescriptor(category, 0);
4667
+ int index = 0;
4668
+ foreach (KeyValuePair<MessageHandler, int> kvp in handlerLookup)
4669
+ {
4670
+ MessageHandler messageHandler = kvp.Key;
4671
+ object dispatch = GetDispatchLink<TMessage>(messageBus, messageHandler, category);
4672
+ entries[index++] = new DispatchEntry(messageHandler, dispatch, prefreeze);
4673
+ }
4674
+
4675
+ buckets[0] = new DispatchBucket(0, entries, entryCount, pooledEntries: true);
4676
+ return new DispatchSnapshot(buckets, 1, pooled: true);
4677
+ }
4678
+
4679
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4680
+ private static PrefreezeDescriptor CreatePrefreezeDescriptor(
4681
+ DispatchCategory category,
4682
+ int priority
4683
+ )
4684
+ {
4685
+ switch (category)
4686
+ {
4687
+ case DispatchCategory.TargetedWithoutTargeting:
4688
+ return new PrefreezeDescriptor(
4689
+ PrefreezeKindTargetedWithoutTargetingHandlers,
4690
+ priority
4691
+ );
4692
+ case DispatchCategory.BroadcastWithoutSource:
4693
+ return new PrefreezeDescriptor(
4694
+ PrefreezeKindBroadcastWithoutSourceHandlers,
4695
+ priority
4696
+ );
4697
+ case DispatchCategory.GlobalUntargeted:
4698
+ return new PrefreezeDescriptor(PrefreezeKindGlobalUntargetedHandlers, priority);
4699
+ case DispatchCategory.GlobalTargeted:
4700
+ return new PrefreezeDescriptor(PrefreezeKindGlobalTargetedHandlers, priority);
4701
+ case DispatchCategory.GlobalBroadcast:
4702
+ return new PrefreezeDescriptor(PrefreezeKindGlobalBroadcastHandlers, priority);
4703
+ default:
4704
+ return PrefreezeDescriptor.Empty;
4705
+ }
4706
+ }
4707
+
4708
+ private static object GetDispatchLink<TMessage>(
4709
+ MessageBus messageBus,
4710
+ MessageHandler handler,
4711
+ DispatchCategory category
4712
+ )
4713
+ where TMessage : IMessage
4714
+ {
4715
+ switch (category)
4716
+ {
4717
+ case DispatchCategory.Untargeted:
4718
+ return handler.GetOrCreateUntargetedDispatchLink<TMessage>(messageBus);
4719
+ case DispatchCategory.UntargetedPost:
4720
+ return handler.GetOrCreateUntargetedPostDispatchLink<TMessage>(messageBus);
4721
+ case DispatchCategory.Targeted:
4722
+ return handler.GetOrCreateTargetedDispatchLink<TMessage>(messageBus);
4723
+ case DispatchCategory.TargetedPost:
4724
+ return handler.GetOrCreateTargetedPostDispatchLink<TMessage>(messageBus);
4725
+ case DispatchCategory.TargetedWithoutTargeting:
4726
+ return handler.GetOrCreateTargetedWithoutTargetingDispatchLink<TMessage>(
4727
+ messageBus
4728
+ );
4729
+ case DispatchCategory.TargetedWithoutTargetingPost:
4730
+ return handler.GetOrCreateTargetedWithoutTargetingPostDispatchLink<TMessage>(
4731
+ messageBus
4732
+ );
4733
+ case DispatchCategory.Broadcast:
4734
+ return handler.GetOrCreateBroadcastDispatchLink<TMessage>(messageBus);
4735
+ case DispatchCategory.BroadcastPost:
4736
+ return handler.GetOrCreateBroadcastPostDispatchLink<TMessage>(messageBus);
4737
+ case DispatchCategory.BroadcastWithoutSource:
4738
+ return handler.GetOrCreateBroadcastWithoutSourceDispatchLink<TMessage>(
4739
+ messageBus
4740
+ );
4741
+ case DispatchCategory.BroadcastWithoutSourcePost:
4742
+ return handler.GetOrCreateBroadcastWithoutSourcePostDispatchLink<TMessage>(
4743
+ messageBus
4744
+ );
4745
+ case DispatchCategory.GlobalUntargeted:
4746
+ case DispatchCategory.GlobalTargeted:
4747
+ case DispatchCategory.GlobalBroadcast:
4748
+ return null;
4749
+ default:
4750
+ return handler.GetOrCreateUntargetedDispatchLink<TMessage>(messageBus);
4751
+ }
4752
+ }
4753
+
4754
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4755
+ private static DispatchCategory GetDispatchCategory(RegistrationMethod registrationMethod)
4756
+ {
4757
+ switch (registrationMethod)
4758
+ {
4759
+ case RegistrationMethod.Untargeted:
4760
+ return DispatchCategory.Untargeted;
4761
+ case RegistrationMethod.UntargetedPostProcessor:
4762
+ return DispatchCategory.UntargetedPost;
4763
+ case RegistrationMethod.Targeted:
4764
+ return DispatchCategory.Targeted;
4765
+ case RegistrationMethod.TargetedPostProcessor:
4766
+ return DispatchCategory.TargetedPost;
4767
+ case RegistrationMethod.TargetedWithoutTargeting:
4768
+ return DispatchCategory.TargetedWithoutTargeting;
4769
+ case RegistrationMethod.TargetedWithoutTargetingPostProcessor:
4770
+ return DispatchCategory.TargetedWithoutTargetingPost;
4771
+ case RegistrationMethod.Broadcast:
4772
+ return DispatchCategory.Broadcast;
4773
+ case RegistrationMethod.BroadcastPostProcessor:
4774
+ return DispatchCategory.BroadcastPost;
4775
+ case RegistrationMethod.BroadcastWithoutSource:
4776
+ return DispatchCategory.BroadcastWithoutSource;
4777
+ case RegistrationMethod.BroadcastWithoutSourcePostProcessor:
4778
+ return DispatchCategory.BroadcastWithoutSourcePost;
4779
+ default:
4780
+ return DispatchCategory.None;
4781
+ }
4782
+ }
4783
+
4784
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4785
+ private void InvokeTargetedEntry<TMessage>(
4786
+ ref InstanceId target,
4787
+ ref TMessage message,
4788
+ int priority,
4789
+ DispatchEntry entry
4790
+ )
4791
+ where TMessage : ITargetedMessage
4792
+ {
4793
+ MessageHandler handler = entry.handler;
4794
+ if (!handler.active)
4795
+ {
4796
+ return;
4797
+ }
4798
+
4799
+ MessageHandler.TargetedDispatchLink<TMessage> link =
4800
+ Unsafe.As<MessageHandler.TargetedDispatchLink<TMessage>>(entry.dispatch);
4801
+ link.Invoke(handler, ref target, ref message, priority, _emissionId);
4802
+ }
4803
+
4804
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4805
+ private void InvokeTargetedPostEntry<TMessage>(
4806
+ ref InstanceId target,
4807
+ ref TMessage message,
4808
+ int priority,
4809
+ DispatchEntry entry
4810
+ )
4811
+ where TMessage : ITargetedMessage
4812
+ {
4813
+ MessageHandler handler = entry.handler;
4814
+ if (!handler.active)
4815
+ {
4816
+ return;
4817
+ }
4818
+
4819
+ MessageHandler.TargetedPostDispatchLink<TMessage> link =
4820
+ Unsafe.As<MessageHandler.TargetedPostDispatchLink<TMessage>>(entry.dispatch);
4821
+ link.Invoke(handler, ref target, ref message, priority, _emissionId);
4822
+ }
4823
+
4824
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4825
+ private void PrefreezeTargetedPostSnapshot<TMessage>(
4826
+ ref InstanceId target,
4827
+ DispatchSnapshot snapshot
4828
+ )
4829
+ where TMessage : ITargetedMessage
4830
+ {
4831
+ if (snapshot.IsEmpty)
4832
+ {
4833
+ return;
4834
+ }
4835
+
4836
+ DispatchBucket[] buckets = snapshot.buckets;
4837
+ int bucketCount = snapshot.bucketCount;
4838
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
4839
+ {
4840
+ DispatchBucket bucket = buckets[bucketIndex];
4841
+ DispatchEntry[] entries = bucket.entries;
4842
+ int entryCount = bucket.entryCount;
4843
+ if (entryCount == 0)
4844
+ {
4845
+ continue;
4846
+ }
4847
+
4848
+ int priority = bucket.priority;
4849
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
4850
+ {
4851
+ entries[entryIndex]
4852
+ .handler.PrefreezeTargetedPostProcessorsForEmission<TMessage>(
4853
+ target,
4854
+ priority,
4855
+ _emissionId,
4856
+ this
4857
+ );
4858
+ }
4859
+ }
4860
+ }
4861
+
4862
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4863
+ private void InvokeGlobalUntargetedEntry<TMessage>(
4864
+ ref TMessage message,
4865
+ DispatchEntry entry
4866
+ )
4867
+ where TMessage : IUntargetedMessage
4868
+ {
4869
+ MessageHandler handler = entry.handler;
4870
+ if (entry.prefreeze.kind == PrefreezeKindGlobalUntargetedHandlers)
4871
+ {
4872
+ handler.PrefreezeGlobalUntargetedForEmission(_emissionId, this);
4873
+ }
4874
+
4875
+ if (!handler.active)
4876
+ {
4877
+ return;
4878
+ }
4879
+
4880
+ ref IUntargetedMessage interfaceMessage = ref Unsafe.As<TMessage, IUntargetedMessage>(
4881
+ ref message
4882
+ );
4883
+ handler.HandleGlobalUntargetedMessage(ref interfaceMessage, this);
4884
+ }
4885
+
4886
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4887
+ private void InvokeGlobalTargetedEntry<TMessage>(
4888
+ ref InstanceId target,
4889
+ ref TMessage message,
4890
+ DispatchEntry entry
4891
+ )
4892
+ where TMessage : ITargetedMessage
4893
+ {
4894
+ MessageHandler handler = entry.handler;
4895
+ if (entry.prefreeze.kind == PrefreezeKindGlobalTargetedHandlers)
4896
+ {
4897
+ handler.PrefreezeGlobalTargetedForEmission(_emissionId, this);
4898
+ }
4899
+
4900
+ if (!handler.active)
4901
+ {
4902
+ return;
4903
+ }
4904
+
4905
+ ref ITargetedMessage interfaceMessage = ref Unsafe.As<TMessage, ITargetedMessage>(
4906
+ ref message
4907
+ );
4908
+ handler.HandleGlobalTargetedMessage(ref target, ref interfaceMessage, this);
4909
+ }
4910
+
4911
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4912
+ private void InvokeGlobalBroadcastEntry<TMessage>(
4913
+ ref InstanceId source,
4914
+ ref TMessage message,
4915
+ DispatchEntry entry
4916
+ )
4917
+ where TMessage : IBroadcastMessage
4918
+ {
4919
+ MessageHandler handler = entry.handler;
4920
+ if (entry.prefreeze.kind == PrefreezeKindGlobalBroadcastHandlers)
4921
+ {
4922
+ handler.PrefreezeGlobalBroadcastForEmission(_emissionId, this);
4923
+ }
4924
+
4925
+ if (!handler.active)
4926
+ {
4927
+ return;
4928
+ }
4929
+
4930
+ ref IBroadcastMessage interfaceMessage = ref Unsafe.As<TMessage, IBroadcastMessage>(
4931
+ ref message
4932
+ );
4933
+ handler.HandleGlobalSourcedBroadcastMessage(ref source, ref interfaceMessage, this);
4934
+ }
4935
+
4936
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4937
+ private void PrefreezeTargetedWithoutTargetingEntries<TMessage>(
4938
+ DispatchEntry[] entries,
4939
+ int entryCount,
4940
+ int priority
4941
+ )
4942
+ where TMessage : ITargetedMessage
4943
+ {
4944
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
4945
+ {
4946
+ entries[entryIndex]
4947
+ .handler.PrefreezeTargetedWithoutTargetingHandlersForEmission<TMessage>(
4948
+ priority,
4949
+ _emissionId,
4950
+ this
4951
+ );
4952
+ }
4953
+ }
4954
+
4955
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4956
+ private void InvokeTargetedWithoutTargetingEntry<TMessage>(
4957
+ ref InstanceId target,
4958
+ ref TMessage message,
4959
+ int priority,
4960
+ DispatchEntry entry
4961
+ )
4962
+ where TMessage : ITargetedMessage
4963
+ {
4964
+ MessageHandler handler = entry.handler;
4965
+ if (!handler.active)
4966
+ {
4967
+ return;
4968
+ }
4969
+
4970
+ MessageHandler.TargetedWithoutTargetingDispatchLink<TMessage> link =
4971
+ Unsafe.As<MessageHandler.TargetedWithoutTargetingDispatchLink<TMessage>>(
4972
+ entry.dispatch
4973
+ );
4974
+ link.Invoke(handler, ref target, ref message, priority, _emissionId);
4975
+ }
4976
+
4977
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
4978
+ private void InvokeTargetedWithoutTargetingPostEntry<TMessage>(
4979
+ ref InstanceId target,
4980
+ ref TMessage message,
4981
+ int priority,
4982
+ DispatchEntry entry
4983
+ )
4984
+ where TMessage : ITargetedMessage
4985
+ {
4986
+ MessageHandler handler = entry.handler;
4987
+ if (!handler.active)
4988
+ {
4989
+ return;
4990
+ }
4991
+
4992
+ MessageHandler.TargetedWithoutTargetingPostDispatchLink<TMessage> link =
4993
+ Unsafe.As<MessageHandler.TargetedWithoutTargetingPostDispatchLink<TMessage>>(
4994
+ entry.dispatch
4995
+ );
4996
+ link.Invoke(handler, ref target, ref message, priority, _emissionId);
4997
+ }
4998
+
4999
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
5000
+ private void PrefreezeTargetedWithoutTargetingPostSnapshot<TMessage>(
5001
+ DispatchSnapshot snapshot
5002
+ )
5003
+ where TMessage : ITargetedMessage
5004
+ {
5005
+ if (snapshot.IsEmpty)
5006
+ {
5007
+ return;
5008
+ }
5009
+
5010
+ DispatchBucket[] buckets = snapshot.buckets;
5011
+ int bucketCount = snapshot.bucketCount;
5012
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
5013
+ {
5014
+ DispatchBucket bucket = buckets[bucketIndex];
5015
+ DispatchEntry[] entries = bucket.entries;
5016
+ int entryCount = bucket.entryCount;
5017
+ if (entryCount == 0)
5018
+ {
5019
+ continue;
5020
+ }
5021
+
5022
+ int priority = bucket.priority;
5023
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
5024
+ {
5025
+ entries[entryIndex]
5026
+ .handler.PrefreezeTargetedWithoutTargetingPostProcessorsForEmission<TMessage>(
5027
+ priority,
5028
+ _emissionId,
5029
+ this
5030
+ );
5031
+ }
5032
+ }
5033
+ }
5034
+
5035
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
5036
+ private void InvokeBroadcastEntry<TMessage>(
5037
+ ref InstanceId source,
5038
+ ref TMessage message,
5039
+ int priority,
5040
+ DispatchEntry entry
5041
+ )
5042
+ where TMessage : IBroadcastMessage
5043
+ {
5044
+ MessageHandler handler = entry.handler;
5045
+ if (!handler.active)
5046
+ {
5047
+ return;
5048
+ }
5049
+
5050
+ MessageHandler.BroadcastDispatchLink<TMessage> link =
5051
+ Unsafe.As<MessageHandler.BroadcastDispatchLink<TMessage>>(entry.dispatch);
5052
+ link.Invoke(handler, ref source, ref message, priority, _emissionId);
5053
+ }
5054
+
5055
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
5056
+ private void InvokeBroadcastPostEntry<TMessage>(
5057
+ ref InstanceId source,
5058
+ ref TMessage message,
5059
+ int priority,
5060
+ DispatchEntry entry
5061
+ )
5062
+ where TMessage : IBroadcastMessage
5063
+ {
5064
+ MessageHandler handler = entry.handler;
5065
+ if (!handler.active)
5066
+ {
5067
+ return;
5068
+ }
5069
+
5070
+ MessageHandler.BroadcastPostDispatchLink<TMessage> link =
5071
+ Unsafe.As<MessageHandler.BroadcastPostDispatchLink<TMessage>>(entry.dispatch);
5072
+ link.Invoke(handler, ref source, ref message, priority, _emissionId);
5073
+ }
5074
+
5075
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
5076
+ private void PrefreezeBroadcastPostSnapshot<TMessage>(
5077
+ ref InstanceId source,
5078
+ DispatchSnapshot snapshot
5079
+ )
5080
+ where TMessage : IBroadcastMessage
5081
+ {
5082
+ if (snapshot.IsEmpty)
5083
+ {
5084
+ return;
5085
+ }
5086
+
5087
+ DispatchBucket[] buckets = snapshot.buckets;
5088
+ int bucketCount = snapshot.bucketCount;
5089
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
5090
+ {
5091
+ DispatchBucket bucket = buckets[bucketIndex];
5092
+ DispatchEntry[] entries = bucket.entries;
5093
+ int entryCount = bucket.entryCount;
5094
+ if (entryCount == 0)
5095
+ {
5096
+ continue;
5097
+ }
5098
+
5099
+ int priority = bucket.priority;
5100
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
5101
+ {
5102
+ entries[entryIndex]
5103
+ .handler.PrefreezeBroadcastPostProcessorsForEmission<TMessage>(
5104
+ source,
5105
+ priority,
5106
+ _emissionId,
5107
+ this
5108
+ );
5109
+ }
5110
+ }
5111
+ }
5112
+
5113
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
5114
+ private void InvokeBroadcastWithoutSourceEntry<TMessage>(
5115
+ ref InstanceId source,
5116
+ ref TMessage message,
5117
+ int priority,
5118
+ DispatchEntry entry
5119
+ )
5120
+ where TMessage : IBroadcastMessage
5121
+ {
5122
+ MessageHandler handler = entry.handler;
5123
+ if (entry.prefreeze.kind == PrefreezeKindBroadcastWithoutSourceHandlers)
5124
+ {
5125
+ handler.PrefreezeBroadcastWithoutSourceHandlersForEmission<TMessage>(
5126
+ entry.prefreeze.priority,
5127
+ _emissionId,
5128
+ this
5129
+ );
5130
+ }
5131
+
5132
+ if (!handler.active)
5133
+ {
5134
+ return;
5135
+ }
5136
+
5137
+ MessageHandler.BroadcastWithoutSourceDispatchLink<TMessage> link =
5138
+ Unsafe.As<MessageHandler.BroadcastWithoutSourceDispatchLink<TMessage>>(
5139
+ entry.dispatch
5140
+ );
5141
+ link.Invoke(handler, ref source, ref message, priority, _emissionId);
5142
+ }
5143
+
5144
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
5145
+ private void InvokeBroadcastWithoutSourcePostEntry<TMessage>(
5146
+ ref InstanceId source,
5147
+ ref TMessage message,
5148
+ int priority,
5149
+ DispatchEntry entry
5150
+ )
5151
+ where TMessage : IBroadcastMessage
5152
+ {
5153
+ MessageHandler handler = entry.handler;
5154
+ if (!handler.active)
5155
+ {
5156
+ return;
5157
+ }
5158
+
5159
+ MessageHandler.BroadcastWithoutSourcePostDispatchLink<TMessage> link =
5160
+ Unsafe.As<MessageHandler.BroadcastWithoutSourcePostDispatchLink<TMessage>>(
5161
+ entry.dispatch
5162
+ );
5163
+ link.Invoke(handler, ref source, ref message, priority, _emissionId);
5164
+ }
5165
+
5166
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
5167
+ private void PrefreezeBroadcastWithoutSourcePostSnapshot<TMessage>(
5168
+ DispatchSnapshot snapshot
5169
+ )
5170
+ where TMessage : IBroadcastMessage
5171
+ {
5172
+ if (snapshot.IsEmpty)
5173
+ {
5174
+ return;
5175
+ }
5176
+
5177
+ DispatchBucket[] buckets = snapshot.buckets;
5178
+ int bucketCount = snapshot.bucketCount;
5179
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
5180
+ {
5181
+ DispatchBucket bucket = buckets[bucketIndex];
5182
+ DispatchEntry[] entries = bucket.entries;
5183
+ int entryCount = bucket.entryCount;
5184
+ if (entryCount == 0)
5185
+ {
5186
+ continue;
5187
+ }
5188
+
5189
+ int priority = bucket.priority;
5190
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
5191
+ {
5192
+ entries[entryIndex]
5193
+ .handler.PrefreezeBroadcastWithoutSourcePostProcessorsForEmission<TMessage>(
5194
+ priority,
5195
+ _emissionId,
5196
+ this
5197
+ );
5198
+ }
5199
+ }
5200
+ }
5201
+
3996
5202
  [MethodImpl(MethodImplOptions.AggressiveInlining)]
3997
5203
  private static List<KeyValuePair<int, HandlerCache>> GetOrAddMessageHandlerStack(
3998
5204
  HandlerCache<int, HandlerCache> cache,