com.wallstop-studios.dxmessaging 2.1.3 → 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 (1222) 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 +20 -12
  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 +88 -8
  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 +14 -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 +2348 -1226
  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/Extensions/MessageBusExtensionsTests.cs +12 -31
  784. package/Tests/Runtime/Core/GlobalAcceptAllTests.cs +26 -26
  785. package/Tests/Runtime/Core/MutationDedupeTests.cs +24 -24
  786. package/Tests/Runtime/Core/MutationDuringEmissionTests.cs +126 -9
  787. package/Tests/Runtime/Core/MutationHighVolumeStressTests.cs +512 -0
  788. package/Tests/Runtime/Core/MutationHighVolumeStressTests.cs.meta +11 -0
  789. package/Tests/Runtime/Core/NominalTests.cs +82 -81
  790. package/Tests/Runtime/Core/OrderingManyRegistrationsTests.cs +683 -0
  791. package/Tests/Runtime/Core/OrderingManyRegistrationsTests.cs.meta +11 -0
  792. package/Tests/Runtime/Core/PostProcessorTests.cs +108 -99
  793. package/Tests/Runtime/Core/RegistrationTests.cs +159 -159
  794. package/Tests/Runtime/Core/TargetedTests.cs +80 -66
  795. package/Tests/Runtime/Core/UntargetedTests.cs +25 -20
  796. package/Tests/Runtime/Integrations/Zenject/ZenjectIntegrationTests.cs +0 -1
  797. package/coverage/clover.xml +6 -0
  798. package/{Docs/Advanced.md.meta → coverage/clover.xml.meta} +7 -7
  799. package/coverage/coverage-final.json +1 -0
  800. package/coverage/coverage-final.json.meta +7 -0
  801. package/coverage/lcov-report/base.css +224 -0
  802. package/coverage/lcov-report/base.css.meta +7 -0
  803. package/coverage/lcov-report/block-navigation.js +87 -0
  804. package/coverage/lcov-report/block-navigation.js.meta +7 -0
  805. package/coverage/lcov-report/favicon.png +0 -0
  806. package/coverage/lcov-report/favicon.png.meta +127 -0
  807. package/coverage/lcov-report/index.html +101 -0
  808. package/coverage/lcov-report/index.html.meta +7 -0
  809. package/coverage/lcov-report/prettify.css +1 -0
  810. package/coverage/lcov-report/prettify.css.meta +7 -0
  811. package/coverage/lcov-report/prettify.js +2 -0
  812. package/coverage/lcov-report/prettify.js.meta +7 -0
  813. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  814. package/coverage/lcov-report/sort-arrow-sprite.png.meta +127 -0
  815. package/coverage/lcov-report/sorter.js +210 -0
  816. package/coverage/lcov-report/sorter.js.meta +7 -0
  817. package/coverage/lcov-report/transform-docs-to-wiki.js.html +1312 -0
  818. package/coverage/lcov-report/transform-docs-to-wiki.js.html.meta +7 -0
  819. package/coverage/lcov-report/vendor.meta +8 -0
  820. package/coverage/lcov-report.meta +8 -0
  821. package/coverage/lcov.info +0 -0
  822. package/coverage/lcov.info.meta +7 -0
  823. package/{Docs/EmitShorthands.md → docs/advanced/emit-shorthands.md} +17 -17
  824. package/docs/advanced/emit-shorthands.md.meta +7 -0
  825. package/{Docs/MessageBusProviders.md → docs/advanced/message-bus-providers.md} +5 -4
  826. package/docs/advanced/message-bus-providers.md.meta +7 -0
  827. package/docs/advanced/registration-builders.md +444 -0
  828. package/docs/advanced/registration-builders.md.meta +7 -0
  829. package/{Docs/RuntimeConfiguration.md → docs/advanced/runtime-configuration.md} +5 -4
  830. package/docs/advanced/runtime-configuration.md.meta +7 -0
  831. package/{Docs/StringMessages.md → docs/advanced/string-messages.md} +2 -2
  832. package/docs/advanced/string-messages.md.meta +7 -0
  833. package/docs/advanced.meta +8 -0
  834. package/{Docs/Comparisons.md → docs/architecture/comparisons.md} +71 -66
  835. package/docs/architecture/comparisons.md.meta +7 -0
  836. package/{Docs/DesignAndArchitecture.md → docs/architecture/design-and-architecture.md} +17 -16
  837. package/docs/architecture/design-and-architecture.md.meta +7 -0
  838. package/docs/architecture/performance.md +53 -0
  839. package/docs/architecture/performance.md.meta +7 -0
  840. package/docs/architecture.meta +8 -0
  841. package/{Docs/InterceptorsAndOrdering.md → docs/concepts/interceptors-and-ordering.md} +58 -55
  842. package/docs/concepts/interceptors-and-ordering.md.meta +7 -0
  843. package/{Docs/ListeningPatterns.md → docs/concepts/listening-patterns.md} +17 -15
  844. package/docs/concepts/listening-patterns.md.meta +7 -0
  845. package/{Docs/MessageTypes.md → docs/concepts/message-types.md} +19 -13
  846. package/docs/concepts/message-types.md.meta +7 -0
  847. package/{Docs/TargetingAndContext.md → docs/concepts/targeting-and-context.md} +10 -10
  848. package/docs/concepts/targeting-and-context.md.meta +7 -0
  849. package/docs/concepts.meta +8 -0
  850. package/docs/examples/end-to-end-scene-transitions.md.meta +7 -0
  851. package/{Docs/EndToEnd.md → docs/examples/end-to-end.md} +1 -1
  852. package/docs/examples/end-to-end.md.meta +7 -0
  853. package/docs/examples.meta +8 -0
  854. package/{Docs/GettingStarted.md → docs/getting-started/getting-started.md} +30 -28
  855. package/docs/getting-started/getting-started.md.meta +7 -0
  856. package/docs/getting-started/index.md +316 -0
  857. package/docs/getting-started/index.md.meta +7 -0
  858. package/docs/getting-started/install.md +89 -0
  859. package/docs/getting-started/install.md.meta +7 -0
  860. package/{Docs/Overview.md → docs/getting-started/overview.md} +36 -35
  861. package/docs/getting-started/overview.md.meta +7 -0
  862. package/{Docs/QuickStart.md → docs/getting-started/quick-start.md} +42 -47
  863. package/docs/getting-started/quick-start.md.meta +7 -0
  864. package/{Docs/VisualGuide.md → docs/getting-started/visual-guide.md} +117 -108
  865. package/docs/getting-started/visual-guide.md.meta +7 -0
  866. package/docs/getting-started.meta +8 -0
  867. package/{Docs/Advanced.md → docs/guides/advanced.md} +4 -4
  868. package/docs/guides/advanced.md.meta +7 -0
  869. package/docs/guides/diagnostics.md +300 -0
  870. package/docs/guides/diagnostics.md.meta +7 -0
  871. package/{Docs/MigrationGuide.md → docs/guides/migration-guide.md} +3 -3
  872. package/docs/guides/migration-guide.md.meta +7 -0
  873. package/{Docs/Patterns.md → docs/guides/patterns.md} +22 -22
  874. package/docs/guides/patterns.md.meta +7 -0
  875. package/docs/guides/testing.md +243 -0
  876. package/docs/guides/testing.md.meta +7 -0
  877. package/{Docs/UnityIntegration.md → docs/guides/unity-integration.md} +13 -13
  878. package/docs/guides/unity-integration.md.meta +7 -0
  879. package/docs/guides.meta +8 -0
  880. package/docs/hooks.py +168 -0
  881. package/docs/hooks.py.meta +7 -0
  882. package/docs/images/DxMessaging-banner.svg +119 -0
  883. package/docs/images/DxMessaging-banner.svg.meta +7 -0
  884. package/docs/images.meta +8 -0
  885. package/docs/index.md +61 -0
  886. package/docs/integrations/index.md +66 -0
  887. package/docs/integrations/index.md.meta +7 -0
  888. package/{Docs/Integrations/Reflex.md → docs/integrations/reflex.md} +43 -18
  889. package/{Docs/Integrations/VContainer.md → docs/integrations/vcontainer.md} +18 -9
  890. package/{Docs/Integrations/Zenject.md → docs/integrations/zenject.md} +6 -6
  891. package/docs/javascripts/csharp-highlight.js +246 -0
  892. package/docs/javascripts/csharp-highlight.js.meta +7 -0
  893. package/docs/javascripts/mermaid-config.js +347 -0
  894. package/docs/javascripts/mermaid-config.js.meta +7 -0
  895. package/docs/javascripts.meta +8 -0
  896. package/{Docs/Compatibility.md → docs/reference/compatibility.md} +7 -7
  897. package/docs/reference/compatibility.md.meta +7 -0
  898. package/{Docs/FAQ.md → docs/reference/faq.md} +21 -26
  899. package/docs/reference/faq.md.meta +7 -0
  900. package/{Docs/Glossary.md → docs/reference/glossary.md} +18 -13
  901. package/docs/reference/glossary.md.meta +7 -0
  902. package/{Docs/Helpers.md → docs/reference/helpers.md} +409 -81
  903. package/docs/reference/helpers.md.meta +7 -0
  904. package/{Docs/QuickReference.md → docs/reference/quick-reference.md} +128 -58
  905. package/docs/reference/quick-reference.md.meta +7 -0
  906. package/docs/reference/reference.md +371 -0
  907. package/docs/reference/reference.md.meta +7 -0
  908. package/{Docs/Troubleshooting.md → docs/reference/troubleshooting.md} +12 -17
  909. package/docs/reference/troubleshooting.md.meta +7 -0
  910. package/docs/reference.meta +8 -0
  911. package/docs/stylesheets/extra.css +485 -0
  912. package/docs/stylesheets/extra.css.meta +7 -0
  913. package/docs/stylesheets.meta +8 -0
  914. package/mkdocs.yml +198 -0
  915. package/mkdocs.yml.meta +7 -0
  916. package/package.json +8 -6
  917. package/requirements-docs.txt +23 -0
  918. package/requirements-docs.txt.meta +7 -0
  919. package/scripts/__tests__/sync-banner-version.test.js +606 -0
  920. package/scripts/__tests__/sync-banner-version.test.js.meta +7 -0
  921. package/scripts/__tests__.meta +8 -0
  922. package/scripts/check-eol.js +290 -19
  923. package/scripts/check-eol.ps1 +103 -15
  924. package/scripts/fix-eol.js +78 -11
  925. package/scripts/generate-skills-index.js +512 -0
  926. package/scripts/generate-skills-index.js.meta +7 -0
  927. package/scripts/generate-skills-index.ps1 +38 -0
  928. package/scripts/generate-skills-index.ps1.meta +7 -0
  929. package/scripts/hooks/pre-commit +59 -0
  930. package/scripts/hooks/pre-commit.meta +7 -0
  931. package/scripts/hooks.meta +8 -0
  932. package/scripts/sync-banner-version.ps1 +133 -0
  933. package/scripts/sync-banner-version.ps1.meta +7 -0
  934. package/scripts/sync-banner-version.sh +16 -0
  935. package/scripts/sync-banner-version.sh.meta +7 -0
  936. package/scripts/validate-skills.js +557 -0
  937. package/scripts/validate-skills.js.meta +7 -0
  938. package/scripts/wiki/__tests__/transform.test.js +380 -0
  939. package/scripts/wiki/__tests__/transform.test.js.meta +7 -0
  940. package/scripts/wiki/__tests__.meta +7 -0
  941. package/scripts/wiki/generate-wiki-sidebar.js +122 -0
  942. package/{Docs/EmitShorthands.md.meta → scripts/wiki/generate-wiki-sidebar.js.meta} +8 -2
  943. package/scripts/wiki/transform-docs-to-wiki.js +409 -0
  944. package/scripts/wiki/transform-docs-to-wiki.js.meta +7 -0
  945. package/scripts/wiki.meta +8 -0
  946. package/site/404.html +1 -0
  947. package/site/404.html.meta +7 -0
  948. package/site/advanced/emit-shorthands/index.html +212 -0
  949. package/site/advanced/emit-shorthands/index.html.meta +7 -0
  950. package/site/advanced/emit-shorthands.meta +8 -0
  951. package/site/advanced/message-bus-providers/index.html +241 -0
  952. package/site/advanced/message-bus-providers/index.html.meta +7 -0
  953. package/site/advanced/message-bus-providers.meta +8 -0
  954. package/site/advanced/registration-builders/index.html +228 -0
  955. package/site/advanced/registration-builders/index.html.meta +7 -0
  956. package/site/advanced/registration-builders.meta +8 -0
  957. package/site/advanced/runtime-configuration/index.html +196 -0
  958. package/site/advanced/runtime-configuration/index.html.meta +7 -0
  959. package/site/advanced/runtime-configuration.meta +8 -0
  960. package/site/advanced/string-messages/index.html +29 -0
  961. package/site/advanced/string-messages/index.html.meta +7 -0
  962. package/site/advanced/string-messages.meta +8 -0
  963. package/site/advanced.meta +8 -0
  964. package/site/architecture/comparisons/index.html +356 -0
  965. package/site/architecture/comparisons/index.html.meta +7 -0
  966. package/site/architecture/comparisons.meta +8 -0
  967. package/site/architecture/design-and-architecture/index.html +34 -0
  968. package/site/architecture/design-and-architecture/index.html.meta +7 -0
  969. package/site/architecture/design-and-architecture.meta +8 -0
  970. package/site/architecture/performance/index.html +1 -0
  971. package/site/architecture/performance/index.html.meta +7 -0
  972. package/site/architecture/performance.meta +8 -0
  973. package/site/architecture.meta +8 -0
  974. package/site/assets/images/favicon.png +0 -0
  975. package/site/assets/images/favicon.png.meta +127 -0
  976. package/site/assets/images.meta +8 -0
  977. package/site/assets/javascripts/bundle.79ae519e.min.js +16 -0
  978. package/site/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
  979. package/site/assets/javascripts/bundle.79ae519e.min.js.map.meta +7 -0
  980. package/site/assets/javascripts/bundle.79ae519e.min.js.meta +7 -0
  981. package/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
  982. package/site/assets/javascripts/lunr/min/lunr.ar.min.js.meta +7 -0
  983. package/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
  984. package/site/assets/javascripts/lunr/min/lunr.da.min.js.meta +7 -0
  985. package/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
  986. package/site/assets/javascripts/lunr/min/lunr.de.min.js.meta +7 -0
  987. package/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
  988. package/site/assets/javascripts/lunr/min/lunr.du.min.js.meta +7 -0
  989. package/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
  990. package/site/assets/javascripts/lunr/min/lunr.el.min.js.meta +7 -0
  991. package/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
  992. package/site/assets/javascripts/lunr/min/lunr.es.min.js.meta +7 -0
  993. package/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
  994. package/site/assets/javascripts/lunr/min/lunr.fi.min.js.meta +7 -0
  995. package/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
  996. package/site/assets/javascripts/lunr/min/lunr.fr.min.js.meta +7 -0
  997. package/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
  998. package/site/assets/javascripts/lunr/min/lunr.he.min.js.meta +7 -0
  999. package/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
  1000. package/site/assets/javascripts/lunr/min/lunr.hi.min.js.meta +7 -0
  1001. package/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
  1002. package/site/assets/javascripts/lunr/min/lunr.hu.min.js.meta +7 -0
  1003. package/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
  1004. package/site/assets/javascripts/lunr/min/lunr.hy.min.js.meta +7 -0
  1005. package/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
  1006. package/site/assets/javascripts/lunr/min/lunr.it.min.js.meta +7 -0
  1007. package/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
  1008. package/site/assets/javascripts/lunr/min/lunr.ja.min.js.meta +7 -0
  1009. package/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
  1010. package/site/assets/javascripts/lunr/min/lunr.jp.min.js.meta +7 -0
  1011. package/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
  1012. package/site/assets/javascripts/lunr/min/lunr.kn.min.js.meta +7 -0
  1013. package/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
  1014. package/site/assets/javascripts/lunr/min/lunr.ko.min.js.meta +7 -0
  1015. package/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
  1016. package/site/assets/javascripts/lunr/min/lunr.multi.min.js.meta +7 -0
  1017. package/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
  1018. package/site/assets/javascripts/lunr/min/lunr.nl.min.js.meta +7 -0
  1019. package/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
  1020. package/site/assets/javascripts/lunr/min/lunr.no.min.js.meta +7 -0
  1021. package/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
  1022. package/site/assets/javascripts/lunr/min/lunr.pt.min.js.meta +7 -0
  1023. package/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
  1024. package/site/assets/javascripts/lunr/min/lunr.ro.min.js.meta +7 -0
  1025. package/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
  1026. package/site/assets/javascripts/lunr/min/lunr.ru.min.js.meta +7 -0
  1027. package/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
  1028. package/site/assets/javascripts/lunr/min/lunr.sa.min.js.meta +7 -0
  1029. package/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
  1030. package/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js.meta +7 -0
  1031. package/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
  1032. package/site/assets/javascripts/lunr/min/lunr.sv.min.js.meta +7 -0
  1033. package/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
  1034. package/site/assets/javascripts/lunr/min/lunr.ta.min.js.meta +7 -0
  1035. package/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
  1036. package/site/assets/javascripts/lunr/min/lunr.te.min.js.meta +7 -0
  1037. package/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
  1038. package/site/assets/javascripts/lunr/min/lunr.th.min.js.meta +7 -0
  1039. package/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
  1040. package/site/assets/javascripts/lunr/min/lunr.tr.min.js.meta +7 -0
  1041. package/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
  1042. package/site/assets/javascripts/lunr/min/lunr.vi.min.js.meta +7 -0
  1043. package/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
  1044. package/site/assets/javascripts/lunr/min/lunr.zh.min.js.meta +7 -0
  1045. package/site/assets/javascripts/lunr/min.meta +8 -0
  1046. package/site/assets/javascripts/lunr/tinyseg.js +206 -0
  1047. package/site/assets/javascripts/lunr/tinyseg.js.meta +7 -0
  1048. package/site/assets/javascripts/lunr/wordcut.js +6708 -0
  1049. package/site/assets/javascripts/lunr/wordcut.js.meta +7 -0
  1050. package/site/assets/javascripts/lunr.meta +8 -0
  1051. package/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
  1052. package/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
  1053. package/site/assets/javascripts/workers/search.2c215733.min.js.map.meta +7 -0
  1054. package/site/assets/javascripts/workers/search.2c215733.min.js.meta +7 -0
  1055. package/site/assets/javascripts/workers.meta +8 -0
  1056. package/site/assets/javascripts.meta +8 -0
  1057. package/site/assets/stylesheets/main.484c7ddc.min.css +1 -0
  1058. package/site/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
  1059. package/site/assets/stylesheets/main.484c7ddc.min.css.map.meta +7 -0
  1060. package/site/assets/stylesheets/main.484c7ddc.min.css.meta +7 -0
  1061. package/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
  1062. package/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
  1063. package/site/assets/stylesheets/palette.ab4e12ef.min.css.map.meta +7 -0
  1064. package/site/assets/stylesheets/palette.ab4e12ef.min.css.meta +7 -0
  1065. package/site/assets/stylesheets.meta +8 -0
  1066. package/site/assets.meta +8 -0
  1067. package/site/concepts/interceptors-and-ordering/index.html +352 -0
  1068. package/site/concepts/interceptors-and-ordering/index.html.meta +7 -0
  1069. package/site/concepts/interceptors-and-ordering.meta +8 -0
  1070. package/site/concepts/listening-patterns/index.html +193 -0
  1071. package/site/concepts/listening-patterns/index.html.meta +7 -0
  1072. package/site/concepts/listening-patterns.meta +8 -0
  1073. package/site/concepts/message-types/index.html +111 -0
  1074. package/site/concepts/message-types/index.html.meta +7 -0
  1075. package/site/concepts/message-types.meta +8 -0
  1076. package/site/concepts/targeting-and-context/index.html +201 -0
  1077. package/site/concepts/targeting-and-context/index.html.meta +7 -0
  1078. package/site/concepts/targeting-and-context.meta +8 -0
  1079. package/site/concepts.meta +8 -0
  1080. package/site/css/timeago.css +15 -0
  1081. package/site/css/timeago.css.meta +7 -0
  1082. package/site/css.meta +8 -0
  1083. package/site/examples/end-to-end/index.html +85 -0
  1084. package/site/examples/end-to-end/index.html.meta +7 -0
  1085. package/site/examples/end-to-end-scene-transitions/index.html +84 -0
  1086. package/site/examples/end-to-end-scene-transitions/index.html.meta +7 -0
  1087. package/site/examples/end-to-end-scene-transitions.meta +8 -0
  1088. package/site/examples/end-to-end.meta +8 -0
  1089. package/site/examples.meta +8 -0
  1090. package/site/getting-started/getting-started/index.html +66 -0
  1091. package/site/getting-started/getting-started/index.html.meta +7 -0
  1092. package/site/getting-started/getting-started.meta +8 -0
  1093. package/site/getting-started/index.html +29 -0
  1094. package/site/getting-started/index.html.meta +7 -0
  1095. package/site/getting-started/install/index.html +8 -0
  1096. package/site/getting-started/install/index.html.meta +7 -0
  1097. package/site/getting-started/install.meta +8 -0
  1098. package/site/getting-started/overview/index.html +33 -0
  1099. package/site/getting-started/overview/index.html.meta +7 -0
  1100. package/site/getting-started/overview.meta +8 -0
  1101. package/site/getting-started/quick-start/index.html +81 -0
  1102. package/site/getting-started/quick-start/index.html.meta +7 -0
  1103. package/site/getting-started/quick-start.meta +8 -0
  1104. package/site/getting-started/visual-guide/index.html +256 -0
  1105. package/site/getting-started/visual-guide/index.html.meta +7 -0
  1106. package/site/getting-started/visual-guide.meta +8 -0
  1107. package/site/getting-started.meta +8 -0
  1108. package/site/guides/advanced/index.html +119 -0
  1109. package/site/guides/advanced/index.html.meta +7 -0
  1110. package/site/guides/advanced.meta +8 -0
  1111. package/site/guides/diagnostics/index.html +110 -0
  1112. package/site/guides/diagnostics/index.html.meta +7 -0
  1113. package/site/guides/diagnostics.meta +8 -0
  1114. package/site/guides/migration-guide/index.html +199 -0
  1115. package/site/guides/migration-guide/index.html.meta +7 -0
  1116. package/site/guides/migration-guide.meta +8 -0
  1117. package/site/guides/patterns/index.html +545 -0
  1118. package/site/guides/patterns/index.html.meta +7 -0
  1119. package/site/guides/patterns.meta +8 -0
  1120. package/site/guides/testing/index.html +153 -0
  1121. package/site/guides/testing/index.html.meta +7 -0
  1122. package/site/guides/testing.meta +8 -0
  1123. package/site/guides/unity-integration/index.html +67 -0
  1124. package/site/guides/unity-integration/index.html.meta +7 -0
  1125. package/site/guides/unity-integration.meta +8 -0
  1126. package/site/guides.meta +8 -0
  1127. package/site/hooks.py +168 -0
  1128. package/site/hooks.py.meta +7 -0
  1129. package/site/index.html +17 -0
  1130. package/site/index.html.meta +7 -0
  1131. package/site/integrations/index.html +8 -0
  1132. package/site/integrations/index.html.meta +7 -0
  1133. package/site/integrations/reflex/index.html +186 -0
  1134. package/site/integrations/reflex/index.html.meta +7 -0
  1135. package/site/integrations/reflex.meta +8 -0
  1136. package/site/integrations/vcontainer/index.html +192 -0
  1137. package/site/integrations/vcontainer/index.html.meta +7 -0
  1138. package/site/integrations/vcontainer.meta +8 -0
  1139. package/site/integrations/zenject/index.html +197 -0
  1140. package/site/integrations/zenject/index.html.meta +7 -0
  1141. package/site/integrations/zenject.meta +8 -0
  1142. package/site/integrations.meta +8 -0
  1143. package/site/javascripts/csharp-highlight.js +246 -0
  1144. package/site/javascripts/csharp-highlight.js.meta +7 -0
  1145. package/site/javascripts/mermaid-config.js +347 -0
  1146. package/site/javascripts/mermaid-config.js.meta +7 -0
  1147. package/site/javascripts.meta +8 -0
  1148. package/site/js/timeago.min.js +2 -0
  1149. package/site/js/timeago.min.js.meta +7 -0
  1150. package/site/js/timeago_mkdocs_material.js +33 -0
  1151. package/site/js/timeago_mkdocs_material.js.meta +7 -0
  1152. package/site/js.meta +8 -0
  1153. package/site/reference/compatibility/index.html +1 -0
  1154. package/site/reference/compatibility/index.html.meta +7 -0
  1155. package/site/reference/compatibility.meta +8 -0
  1156. package/site/reference/faq/index.html +1 -0
  1157. package/site/reference/faq/index.html.meta +7 -0
  1158. package/site/reference/faq.meta +8 -0
  1159. package/site/reference/glossary/index.html +55 -0
  1160. package/site/reference/glossary/index.html.meta +7 -0
  1161. package/site/reference/glossary.meta +8 -0
  1162. package/site/reference/helpers/index.html +475 -0
  1163. package/site/reference/helpers/index.html.meta +7 -0
  1164. package/site/reference/helpers.meta +8 -0
  1165. package/site/reference/quick-reference/index.html +138 -0
  1166. package/site/reference/quick-reference/index.html.meta +7 -0
  1167. package/site/reference/quick-reference.meta +8 -0
  1168. package/site/reference/reference/index.html +194 -0
  1169. package/site/reference/reference/index.html.meta +7 -0
  1170. package/site/reference/reference.meta +8 -0
  1171. package/site/reference/troubleshooting/index.html +1 -0
  1172. package/site/reference/troubleshooting/index.html.meta +7 -0
  1173. package/site/reference/troubleshooting.meta +8 -0
  1174. package/site/reference.meta +8 -0
  1175. package/site/search/search_index.json +1 -0
  1176. package/site/search/search_index.json.meta +7 -0
  1177. package/site/search.meta +8 -0
  1178. package/site/sitemap.xml +155 -0
  1179. package/site/sitemap.xml.gz +0 -0
  1180. package/site/sitemap.xml.gz.meta +7 -0
  1181. package/site/sitemap.xml.meta +7 -0
  1182. package/site/stylesheets/extra.css +485 -0
  1183. package/site/stylesheets/extra.css.meta +7 -0
  1184. package/site/stylesheets.meta +8 -0
  1185. package/.github/workflows/npm-publish.yml +0 -75
  1186. package/Docs/Diagnostics.md +0 -61
  1187. package/Docs/Diagnostics.md.meta +0 -7
  1188. package/Docs/EndToEnd.md.meta +0 -7
  1189. package/Docs/EndToEndSceneTransitions.md.meta +0 -7
  1190. package/Docs/FAQ.md.meta +0 -7
  1191. package/Docs/GettingStarted.md.meta +0 -7
  1192. package/Docs/Glossary.md.meta +0 -7
  1193. package/Docs/Helpers.md.meta +0 -7
  1194. package/Docs/Index.md +0 -305
  1195. package/Docs/Install.md +0 -60
  1196. package/Docs/Install.md.meta +0 -7
  1197. package/Docs/InterceptorsAndOrdering.md.meta +0 -7
  1198. package/Docs/ListeningPatterns.md.meta +0 -7
  1199. package/Docs/MessageBusProviders.md.meta +0 -7
  1200. package/Docs/MessageTypes.md.meta +0 -7
  1201. package/Docs/MigrationGuide.md.meta +0 -7
  1202. package/Docs/Overview.md.meta +0 -7
  1203. package/Docs/Patterns.md.meta +0 -7
  1204. package/Docs/Performance.md +0 -35
  1205. package/Docs/Performance.md.meta +0 -7
  1206. package/Docs/QuickReference.md.meta +0 -7
  1207. package/Docs/QuickStart.md.meta +0 -7
  1208. package/Docs/Reference.md +0 -88
  1209. package/Docs/Reference.md.meta +0 -7
  1210. package/Docs/RuntimeConfiguration.md.meta +0 -7
  1211. package/Docs/StringMessages.md.meta +0 -7
  1212. package/Docs/TargetingAndContext.md.meta +0 -7
  1213. package/Docs/Troubleshooting.md.meta +0 -7
  1214. package/Docs/UnityIntegration.md.meta +0 -7
  1215. package/Docs/VisualGuide.md.meta +0 -7
  1216. /package/{Docs/EndToEndSceneTransitions.md → docs/examples/end-to-end-scene-transitions.md} +0 -0
  1217. /package/{Docs/Index.md.meta → docs/index.md.meta} +0 -0
  1218. /package/{Docs/Integrations/Reflex.md.meta → docs/integrations/reflex.md.meta} +0 -0
  1219. /package/{Docs/Integrations/VContainer.md.meta → docs/integrations/vcontainer.md.meta} +0 -0
  1220. /package/{Docs/Integrations/Zenject.md.meta → docs/integrations/zenject.md.meta} +0 -0
  1221. /package/{Docs/Integrations.meta → docs/integrations.meta} +0 -0
  1222. /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,16 +209,68 @@ 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;
232
+ }
233
+ }
234
+
235
+ private sealed class InterceptorCache<TValue>
236
+ {
237
+ public readonly SortedList<int, List<TValue>> handlers = new();
238
+ public long lastSeenEmissionId;
239
+
240
+ public void Clear()
241
+ {
242
+ handlers.Clear();
243
+ lastSeenEmissionId = 0;
47
244
  }
48
245
  }
49
246
 
50
247
  private sealed class HandlerCache
51
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
+
52
268
  public readonly Dictionary<MessageHandler, int> handlers = new();
53
269
  public readonly List<MessageHandler> cache = new();
54
270
  public long version;
55
271
  public long lastSeenVersion = -1;
56
272
  public long lastSeenEmissionId;
273
+ private readonly Dictionary<DispatchCategory, DispatchState> _dispatchStates = new();
57
274
 
58
275
  /// <summary>
59
276
  /// Clears all cached handler references and resets the version tracking metadata.
@@ -65,6 +282,26 @@ namespace DxMessaging.Core.MessageBus
65
282
  version = 0;
66
283
  lastSeenVersion = -1;
67
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;
68
305
  }
69
306
  }
70
307
 
@@ -165,12 +402,9 @@ namespace DxMessaging.Core.MessageBus
165
402
  private readonly HandlerCache _globalSinks = new();
166
403
 
167
404
  // Interceptors split by category to avoid mixing types
168
- private readonly MessageCache<HandlerCache<int, List<object>>> _untargetedInterceptsByType =
169
- new();
170
- private readonly MessageCache<HandlerCache<int, List<object>>> _targetedInterceptsByType =
171
- new();
172
- private readonly MessageCache<HandlerCache<int, List<object>>> _broadcastInterceptsByType =
173
- new();
405
+ private readonly MessageCache<InterceptorCache<object>> _untargetedInterceptsByType = new();
406
+ private readonly MessageCache<InterceptorCache<object>> _targetedInterceptsByType = new();
407
+ private readonly MessageCache<InterceptorCache<object>> _broadcastInterceptsByType = new();
174
408
  private readonly Dictionary<object, Dictionary<int, int>> _uniqueInterceptorsAndPriorities =
175
409
  new();
176
410
 
@@ -192,13 +426,13 @@ namespace DxMessaging.Core.MessageBus
192
426
  GlobalMessageBufferSize
193
427
  );
194
428
 
195
- private bool _diagnosticsMode = IMessageBus.ShouldEnableDiagnostics();
429
+ private bool _diagnosticsMode = ShouldEnableDiagnostics();
196
430
  private bool _loggedReflexiveWarning;
197
431
 
198
432
  internal void ResetState()
199
433
  {
200
434
  _emissionId = 0;
201
- _diagnosticsMode = IMessageBus.ShouldEnableDiagnostics();
435
+ _diagnosticsMode = ShouldEnableDiagnostics();
202
436
  _loggedReflexiveWarning = false;
203
437
 
204
438
  _sinks.Clear();
@@ -324,6 +558,22 @@ namespace DxMessaging.Core.MessageBus
324
558
  )
325
559
  );
326
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
+
327
577
  return () =>
328
578
  {
329
579
  _globalSinks.version++;
@@ -357,6 +607,22 @@ namespace DxMessaging.Core.MessageBus
357
607
  {
358
608
  _globalSinks.handlers[messageHandler] = count - 1;
359
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
+ );
360
626
  };
361
627
  }
362
628
 
@@ -367,38 +633,29 @@ namespace DxMessaging.Core.MessageBus
367
633
  )
368
634
  where T : IUntargetedMessage
369
635
  {
370
- HandlerCache<int, List<object>> prioritizedInterceptors =
636
+ InterceptorCache<object> prioritizedInterceptors =
371
637
  _untargetedInterceptsByType.GetOrAdd<T>();
372
638
 
373
639
  if (
374
- !prioritizedInterceptors.handlers.TryGetValue(
375
- priority,
376
- out List<object> interceptors
640
+ !_uniqueInterceptorsAndPriorities.TryGetValue(
641
+ interceptor,
642
+ out Dictionary<int, int> priorityCount
377
643
  )
378
644
  )
379
645
  {
380
- prioritizedInterceptors.version++;
381
- interceptors = new List<object>();
382
- prioritizedInterceptors.handlers[priority] = interceptors;
383
- // maintain sorted order
384
- List<int> order = prioritizedInterceptors.order;
385
- int idx = 0;
386
- while (idx < order.Count && order[idx] < priority)
387
- {
388
- idx++;
389
- }
390
- order.Insert(idx, priority);
646
+ priorityCount = new Dictionary<int, int>();
647
+ _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
391
648
  }
392
649
 
393
650
  if (
394
- !_uniqueInterceptorsAndPriorities.TryGetValue(
395
- interceptor,
396
- out Dictionary<int, int> priorityCount
651
+ !prioritizedInterceptors.handlers.TryGetValue(
652
+ priority,
653
+ out List<object> interceptors
397
654
  )
398
655
  )
399
656
  {
400
- priorityCount = new Dictionary<int, int>();
401
- _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
657
+ interceptors = new List<object>();
658
+ prioritizedInterceptors.handlers.Add(priority, interceptors);
402
659
  }
403
660
 
404
661
  if (!priorityCount.TryGetValue(priority, out int count))
@@ -464,20 +721,17 @@ namespace DxMessaging.Core.MessageBus
464
721
  {
465
722
  if (_untargetedInterceptsByType.TryGetValue<T>(out prioritizedInterceptors))
466
723
  {
467
- prioritizedInterceptors.version++;
468
724
  if (
469
- prioritizedInterceptors.handlers.TryGetValue(priority, out interceptors)
725
+ prioritizedInterceptors.handlers.TryGetValue(
726
+ priority,
727
+ out List<object> interceptors
728
+ )
470
729
  )
471
730
  {
472
731
  complete = interceptors.Remove(interceptor);
473
732
  if (interceptors.Count == 0)
474
733
  {
475
734
  _ = prioritizedInterceptors.handlers.Remove(priority);
476
- int removeIdx = prioritizedInterceptors.order.IndexOf(priority);
477
- if (removeIdx >= 0)
478
- {
479
- prioritizedInterceptors.order.RemoveAt(removeIdx);
480
- }
481
735
  }
482
736
  }
483
737
  }
@@ -501,38 +755,29 @@ namespace DxMessaging.Core.MessageBus
501
755
  )
502
756
  where T : ITargetedMessage
503
757
  {
504
- HandlerCache<int, List<object>> prioritizedInterceptors =
758
+ InterceptorCache<object> prioritizedInterceptors =
505
759
  _targetedInterceptsByType.GetOrAdd<T>();
506
760
 
507
761
  if (
508
- !prioritizedInterceptors.handlers.TryGetValue(
509
- priority,
510
- out List<object> interceptors
762
+ !_uniqueInterceptorsAndPriorities.TryGetValue(
763
+ interceptor,
764
+ out Dictionary<int, int> priorityCount
511
765
  )
512
766
  )
513
767
  {
514
- prioritizedInterceptors.version++;
515
- interceptors = new List<object>();
516
- prioritizedInterceptors.handlers[priority] = interceptors;
517
- // maintain sorted order
518
- List<int> order = prioritizedInterceptors.order;
519
- int idx = 0;
520
- while (idx < order.Count && order[idx] < priority)
521
- {
522
- idx++;
523
- }
524
- order.Insert(idx, priority);
768
+ priorityCount = new Dictionary<int, int>();
769
+ _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
525
770
  }
526
771
 
527
772
  if (
528
- !_uniqueInterceptorsAndPriorities.TryGetValue(
529
- interceptor,
530
- out Dictionary<int, int> priorityCount
773
+ !prioritizedInterceptors.handlers.TryGetValue(
774
+ priority,
775
+ out List<object> interceptors
531
776
  )
532
777
  )
533
778
  {
534
- priorityCount = new Dictionary<int, int>();
535
- _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
779
+ interceptors = new List<object>();
780
+ prioritizedInterceptors.handlers.Add(priority, interceptors);
536
781
  }
537
782
 
538
783
  if (!priorityCount.TryGetValue(priority, out int count))
@@ -598,20 +843,17 @@ namespace DxMessaging.Core.MessageBus
598
843
  {
599
844
  if (_targetedInterceptsByType.TryGetValue<T>(out prioritizedInterceptors))
600
845
  {
601
- prioritizedInterceptors.version++;
602
846
  if (
603
- prioritizedInterceptors.handlers.TryGetValue(priority, out interceptors)
847
+ prioritizedInterceptors.handlers.TryGetValue(
848
+ priority,
849
+ out List<object> interceptors
850
+ )
604
851
  )
605
852
  {
606
853
  complete = interceptors.Remove(interceptor);
607
854
  if (interceptors.Count == 0)
608
855
  {
609
856
  _ = prioritizedInterceptors.handlers.Remove(priority);
610
- int removeIdx = prioritizedInterceptors.order.IndexOf(priority);
611
- if (removeIdx >= 0)
612
- {
613
- prioritizedInterceptors.order.RemoveAt(removeIdx);
614
- }
615
857
  }
616
858
  }
617
859
  }
@@ -635,38 +877,29 @@ namespace DxMessaging.Core.MessageBus
635
877
  )
636
878
  where T : IBroadcastMessage
637
879
  {
638
- HandlerCache<int, List<object>> prioritizedInterceptors =
880
+ InterceptorCache<object> prioritizedInterceptors =
639
881
  _broadcastInterceptsByType.GetOrAdd<T>();
640
882
 
641
883
  if (
642
- !prioritizedInterceptors.handlers.TryGetValue(
643
- priority,
644
- out List<object> interceptors
884
+ !_uniqueInterceptorsAndPriorities.TryGetValue(
885
+ interceptor,
886
+ out Dictionary<int, int> priorityCount
645
887
  )
646
888
  )
647
889
  {
648
- prioritizedInterceptors.version++;
649
- interceptors = new List<object>();
650
- prioritizedInterceptors.handlers[priority] = interceptors;
651
- // maintain sorted order
652
- List<int> order = prioritizedInterceptors.order;
653
- int idx = 0;
654
- while (idx < order.Count && order[idx] < priority)
655
- {
656
- idx++;
657
- }
658
- order.Insert(idx, priority);
890
+ priorityCount = new Dictionary<int, int>();
891
+ _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
659
892
  }
660
893
 
661
894
  if (
662
- !_uniqueInterceptorsAndPriorities.TryGetValue(
663
- interceptor,
664
- out Dictionary<int, int> priorityCount
895
+ !prioritizedInterceptors.handlers.TryGetValue(
896
+ priority,
897
+ out List<object> interceptors
665
898
  )
666
899
  )
667
900
  {
668
- priorityCount = new Dictionary<int, int>();
669
- _uniqueInterceptorsAndPriorities[interceptor] = priorityCount;
901
+ interceptors = new List<object>();
902
+ prioritizedInterceptors.handlers.Add(priority, interceptors);
670
903
  }
671
904
 
672
905
  if (!priorityCount.TryGetValue(priority, out int count))
@@ -732,20 +965,17 @@ namespace DxMessaging.Core.MessageBus
732
965
  {
733
966
  if (_broadcastInterceptsByType.TryGetValue<T>(out prioritizedInterceptors))
734
967
  {
735
- prioritizedInterceptors.version++;
736
968
  if (
737
- prioritizedInterceptors.handlers.TryGetValue(priority, out interceptors)
969
+ prioritizedInterceptors.handlers.TryGetValue(
970
+ priority,
971
+ out List<object> interceptors
972
+ )
738
973
  )
739
974
  {
740
975
  complete = interceptors.Remove(interceptor);
741
976
  if (interceptors.Count == 0)
742
977
  {
743
978
  _ = prioritizedInterceptors.handlers.Remove(priority);
744
- int removeIdx = prioritizedInterceptors.order.IndexOf(priority);
745
- if (removeIdx >= 0)
746
- {
747
- prioritizedInterceptors.order.RemoveAt(removeIdx);
748
- }
749
979
  }
750
980
  }
751
981
  }
@@ -888,35 +1118,21 @@ namespace DxMessaging.Core.MessageBus
888
1118
 
889
1119
  // Pre-freeze post-processing stacks for this emission so mutations during
890
1120
  // handlers/post-processors are not observed until the next emission.
1121
+ DispatchSnapshot untargetedPostSnapshot = DispatchSnapshot.Empty;
891
1122
  if (
892
1123
  _postProcessingSinks.TryGetValue<TMessage>(
893
- out HandlerCache<int, HandlerCache> prefreezeUntargetedPost
1124
+ out HandlerCache<int, HandlerCache> untargetedPostHandlers
894
1125
  )
895
- && prefreezeUntargetedPost.handlers.Count > 0
1126
+ && untargetedPostHandlers.handlers.Count > 0
896
1127
  )
897
1128
  {
898
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
899
- prefreezeUntargetedPost,
1129
+ untargetedPostSnapshot = AcquireDispatchSnapshot<TMessage>(
1130
+ this,
1131
+ untargetedPostHandlers,
1132
+ DispatchCategory.UntargetedPost,
900
1133
  _emissionId
901
1134
  );
902
- int frozenCount = frozen.Count;
903
- for (int i = 0; i < frozenCount; ++i)
904
- {
905
- KeyValuePair<int, HandlerCache> entry = frozen[i];
906
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
907
- entry.Value,
908
- _emissionId
909
- );
910
- for (int h = 0; h < mhList.Count; ++h)
911
- {
912
- mhList[h]
913
- .PrefreezeUntargetedPostProcessorsForEmission<TMessage>(
914
- entry.Key,
915
- _emissionId,
916
- this
917
- );
918
- }
919
- }
1135
+ PrefreezeUntargetedPostSnapshot<TMessage>(untargetedPostSnapshot);
920
1136
  }
921
1137
 
922
1138
  if (!RunUntargetedInterceptors(ref typedMessage))
@@ -939,71 +1155,70 @@ namespace DxMessaging.Core.MessageBus
939
1155
  && 0 < sortedHandlers.handlers.Count
940
1156
  )
941
1157
  {
942
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
943
- sortedHandlers,
944
- _emissionId
945
- );
946
- int handlerListCount = handlerList.Count;
947
- switch (handlerListCount)
948
- {
949
- case 1:
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)
950
1174
  {
951
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
952
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
953
- break;
1175
+ continue;
954
1176
  }
955
- case 2:
1177
+
1178
+ foundAnyHandlers = true;
1179
+ int priority = bucket.priority;
1180
+ switch (entryCount)
956
1181
  {
957
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
958
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
959
- entry = handlerList[1];
960
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
961
- break;
1182
+ case 1:
1183
+ {
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;
1216
+ }
962
1217
  }
963
- case 3:
1218
+
1219
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
964
1220
  {
965
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
966
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
967
- entry = handlerList[1];
968
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
969
- entry = handlerList[2];
970
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
971
- break;
972
- }
973
- case 4:
974
- {
975
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
976
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
977
- entry = handlerList[1];
978
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
979
- entry = handlerList[2];
980
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
981
- entry = handlerList[3];
982
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
983
- break;
984
- }
985
- case 5:
986
- {
987
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
988
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
989
- entry = handlerList[1];
990
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
991
- entry = handlerList[2];
992
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
993
- entry = handlerList[3];
994
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
995
- entry = handlerList[4];
996
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
997
- break;
998
- }
999
- default:
1000
- {
1001
- for (int i = 0; i < handlerListCount; ++i)
1002
- {
1003
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
1004
- RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
1005
- }
1006
- break;
1221
+ InvokeUntargetedPostEntry(ref typedMessage, priority, entries[entryIndex]);
1007
1222
  }
1008
1223
  }
1009
1224
  }
@@ -1018,65 +1233,6 @@ namespace DxMessaging.Core.MessageBus
1018
1233
  }
1019
1234
  }
1020
1235
 
1021
- private void RunUntargetedPostProcessing<TMessage>(
1022
- ref TMessage typedMessage,
1023
- int priority,
1024
- HandlerCache cache
1025
- )
1026
- where TMessage : IUntargetedMessage
1027
- {
1028
- if (cache.handlers.Count == 0)
1029
- {
1030
- return;
1031
- }
1032
-
1033
- List<MessageHandler> list = GetOrAddMessageHandlerStack(cache, _emissionId);
1034
- switch (list.Count)
1035
- {
1036
- case 1:
1037
- {
1038
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1039
- return;
1040
- }
1041
- case 2:
1042
- {
1043
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1044
- list[1].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1045
- return;
1046
- }
1047
- case 3:
1048
- {
1049
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1050
- list[1].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1051
- list[2].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1052
- return;
1053
- }
1054
- case 4:
1055
- {
1056
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1057
- list[1].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1058
- list[2].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1059
- list[3].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1060
- return;
1061
- }
1062
- case 5:
1063
- {
1064
- list[0].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1065
- list[1].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1066
- list[2].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1067
- list[3].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1068
- list[4].HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1069
- return;
1070
- }
1071
- }
1072
-
1073
- for (int i = 0; i < cache.cache.Count; ++i)
1074
- {
1075
- MessageHandler handler = cache.cache[i];
1076
- handler.HandleUntargetedPostProcessing(ref typedMessage, this, priority);
1077
- }
1078
- }
1079
-
1080
1236
  /// <inheritdoc />
1081
1237
  public void UntypedTargetedBroadcast(InstanceId target, ITargetedMessage typedMessage)
1082
1238
  {
@@ -1121,70 +1277,43 @@ namespace DxMessaging.Core.MessageBus
1121
1277
  }
1122
1278
 
1123
1279
  // Pre-freeze targeted post-processing for this emission (target-specific and without targeting)
1280
+ DispatchSnapshot targetedPostSnapshot = DispatchSnapshot.Empty;
1281
+ DispatchSnapshot targetedWithoutTargetingPostSnapshot = DispatchSnapshot.Empty;
1124
1282
  if (
1125
1283
  _postProcessingTargetedSinks.TryGetValue<TMessage>(
1126
- out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> prefreezeTargeted
1284
+ out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> targetedPostHandlers
1127
1285
  )
1128
- && prefreezeTargeted.TryGetValue(
1286
+ && targetedPostHandlers.TryGetValue(
1129
1287
  target,
1130
- out HandlerCache<int, HandlerCache> prefreezeTargetedByPriority
1288
+ out HandlerCache<int, HandlerCache> targetedPostByPriority
1131
1289
  )
1132
- && prefreezeTargetedByPriority.handlers.Count > 0
1290
+ && targetedPostByPriority.handlers.Count > 0
1133
1291
  )
1134
1292
  {
1135
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
1136
- prefreezeTargetedByPriority,
1293
+ targetedPostSnapshot = AcquireDispatchSnapshot<TMessage>(
1294
+ this,
1295
+ targetedPostByPriority,
1296
+ DispatchCategory.TargetedPost,
1137
1297
  _emissionId
1138
1298
  );
1139
- int frozenCount = frozen.Count;
1140
- for (int i = 0; i < frozenCount; ++i)
1141
- {
1142
- KeyValuePair<int, HandlerCache> entry = frozen[i];
1143
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
1144
- entry.Value,
1145
- _emissionId
1146
- );
1147
- for (int h = 0; h < mhList.Count; ++h)
1148
- {
1149
- mhList[h]
1150
- .PrefreezeTargetedPostProcessorsForEmission<TMessage>(
1151
- target,
1152
- entry.Key,
1153
- _emissionId,
1154
- this
1155
- );
1156
- }
1157
- }
1299
+ PrefreezeTargetedPostSnapshot<TMessage>(ref target, targetedPostSnapshot);
1158
1300
  }
1159
1301
  if (
1160
1302
  _postProcessingTargetedWithoutTargetingSinks.TryGetValue<TMessage>(
1161
- out HandlerCache<int, HandlerCache> prefreezeTwt
1303
+ out HandlerCache<int, HandlerCache> targetedWithoutTargetingHandlers
1162
1304
  )
1163
- && prefreezeTwt.handlers.Count > 0
1305
+ && targetedWithoutTargetingHandlers.handlers.Count > 0
1164
1306
  )
1165
1307
  {
1166
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
1167
- prefreezeTwt,
1308
+ targetedWithoutTargetingPostSnapshot = AcquireDispatchSnapshot<TMessage>(
1309
+ this,
1310
+ targetedWithoutTargetingHandlers,
1311
+ DispatchCategory.TargetedWithoutTargetingPost,
1168
1312
  _emissionId
1169
1313
  );
1170
- int frozenCount = frozen.Count;
1171
- for (int i = 0; i < frozenCount; ++i)
1172
- {
1173
- KeyValuePair<int, HandlerCache> entry = frozen[i];
1174
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
1175
- entry.Value,
1176
- _emissionId
1177
- );
1178
- for (int h = 0; h < mhList.Count; ++h)
1179
- {
1180
- mhList[h]
1181
- .PrefreezeTargetedWithoutTargetingPostProcessorsForEmission<TMessage>(
1182
- entry.Key,
1183
- _emissionId,
1184
- this
1185
- );
1186
- }
1187
- }
1314
+ PrefreezeTargetedWithoutTargetingPostSnapshot<TMessage>(
1315
+ targetedWithoutTargetingPostSnapshot
1316
+ );
1188
1317
  }
1189
1318
 
1190
1319
  if (!RunTargetedInterceptors(ref typedMessage, ref target))
@@ -1416,398 +1545,390 @@ namespace DxMessaging.Core.MessageBus
1416
1545
  target,
1417
1546
  out HandlerCache<int, HandlerCache> sortedHandlers
1418
1547
  )
1419
- && 0 < sortedHandlers.handlers.Count
1548
+ && sortedHandlers.handlers.Count > 0
1420
1549
  )
1421
1550
  {
1422
- foundAnyHandlers = true;
1423
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
1551
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
1552
+ this,
1424
1553
  sortedHandlers,
1554
+ DispatchCategory.Targeted,
1425
1555
  _emissionId
1426
1556
  );
1427
- int handlerListCount = handlerList.Count;
1428
- switch (handlerListCount)
1429
- {
1430
- case 1:
1431
- {
1432
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1433
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1434
- break;
1435
- }
1436
- case 2:
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)
1437
1565
  {
1438
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1439
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1440
- entry = handlerList[1];
1441
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1442
- break;
1566
+ continue;
1443
1567
  }
1444
- case 3:
1568
+
1569
+ foundAnyHandlers = true;
1570
+ int priority = bucket.priority;
1571
+ switch (entryCount)
1445
1572
  {
1446
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1447
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1448
- entry = handlerList[1];
1449
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1450
- entry = handlerList[2];
1451
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1452
- break;
1573
+ case 1:
1574
+ {
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;
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
+ }
1453
1608
  }
1454
- case 4:
1609
+
1610
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
1455
1611
  {
1456
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1457
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1458
- entry = handlerList[1];
1459
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1460
- entry = handlerList[2];
1461
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1462
- entry = handlerList[3];
1463
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1464
- break;
1612
+ InvokeTargetedEntry(
1613
+ ref target,
1614
+ ref typedMessage,
1615
+ priority,
1616
+ entries[entryIndex]
1617
+ );
1465
1618
  }
1466
- case 5:
1619
+ }
1620
+ }
1621
+
1622
+ if (InternalTargetedWithoutTargetingBroadcast(ref target, ref typedMessage))
1623
+ {
1624
+ foundAnyHandlers = true;
1625
+ }
1626
+
1627
+ if (
1628
+ _postProcessingTargetedSinks.TryGetValue<TMessage>(out targetedHandlers)
1629
+ && targetedHandlers.TryGetValue(target, out sortedHandlers)
1630
+ && sortedHandlers.handlers.Count > 0
1631
+ )
1632
+ {
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)
1467
1649
  {
1468
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1469
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1470
- entry = handlerList[1];
1471
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1472
- entry = handlerList[2];
1473
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1474
- entry = handlerList[3];
1475
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1476
- entry = handlerList[4];
1477
- RunTargetedBroadcast(ref target, ref typedMessage, entry.Key, entry.Value);
1478
- break;
1650
+ continue;
1479
1651
  }
1480
- default:
1652
+
1653
+ foundAnyHandlers = true;
1654
+ int priority = bucket.priority;
1655
+ switch (entryCount)
1481
1656
  {
1482
- for (int i = 0; i < handlerListCount; ++i)
1657
+ case 1:
1483
1658
  {
1484
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
1485
- RunTargetedBroadcast(
1659
+ InvokeTargetedPostEntry(
1486
1660
  ref target,
1487
1661
  ref typedMessage,
1488
- entry.Key,
1489
- 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]
1490
1764
  );
1765
+ continue;
1491
1766
  }
1767
+ }
1492
1768
 
1493
- break;
1769
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
1770
+ {
1771
+ InvokeTargetedPostEntry(
1772
+ ref target,
1773
+ ref typedMessage,
1774
+ priority,
1775
+ entries[entryIndex]
1776
+ );
1494
1777
  }
1495
1778
  }
1496
1779
  }
1497
1780
 
1498
- _ = InternalTargetedWithoutTargetingBroadcast(ref target, ref typedMessage);
1499
-
1500
1781
  if (
1501
- _postProcessingTargetedSinks.TryGetValue<TMessage>(out targetedHandlers)
1502
- && targetedHandlers.TryGetValue(target, out sortedHandlers)
1503
- && 0 < sortedHandlers.handlers.Count
1782
+ _postProcessingTargetedWithoutTargetingSinks.TryGetValue<TMessage>(
1783
+ out HandlerCache<int, HandlerCache> postTwt
1784
+ )
1785
+ && postTwt.handlers.Count > 0
1504
1786
  )
1505
1787
  {
1506
- foundAnyHandlers = true;
1507
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
1508
- sortedHandlers,
1509
- _emissionId
1510
- );
1511
- int handlerListCount = handlerList.Count;
1512
- switch (handlerListCount)
1513
- {
1514
- case 1:
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)
1515
1804
  {
1516
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1517
- RunTargetedPostProcessing(
1518
- ref target,
1519
- ref typedMessage,
1520
- entry.Key,
1521
- entry.Value
1522
- );
1523
- break;
1805
+ continue;
1524
1806
  }
1525
- case 2:
1526
- {
1527
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1528
- RunTargetedPostProcessing(
1529
- ref target,
1530
- ref typedMessage,
1531
- entry.Key,
1532
- entry.Value
1533
- );
1534
- entry = handlerList[1];
1535
- RunTargetedPostProcessing(
1536
- ref target,
1537
- ref typedMessage,
1538
- entry.Key,
1539
- entry.Value
1540
- );
1541
- break;
1542
- }
1543
- case 3:
1544
- {
1545
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1546
- RunTargetedPostProcessing(
1547
- ref target,
1548
- ref typedMessage,
1549
- entry.Key,
1550
- entry.Value
1551
- );
1552
- entry = handlerList[1];
1553
- RunTargetedPostProcessing(
1554
- ref target,
1555
- ref typedMessage,
1556
- entry.Key,
1557
- entry.Value
1558
- );
1559
- entry = handlerList[2];
1560
- RunTargetedPostProcessing(
1561
- ref target,
1562
- ref typedMessage,
1563
- entry.Key,
1564
- entry.Value
1565
- );
1566
- break;
1567
- }
1568
- case 4:
1569
- {
1570
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1571
- RunTargetedPostProcessing(
1572
- ref target,
1573
- ref typedMessage,
1574
- entry.Key,
1575
- entry.Value
1576
- );
1577
- entry = handlerList[1];
1578
- RunTargetedPostProcessing(
1579
- ref target,
1580
- ref typedMessage,
1581
- entry.Key,
1582
- entry.Value
1583
- );
1584
- entry = handlerList[2];
1585
- RunTargetedPostProcessing(
1586
- ref target,
1587
- ref typedMessage,
1588
- entry.Key,
1589
- entry.Value
1590
- );
1591
- entry = handlerList[3];
1592
- RunTargetedPostProcessing(
1593
- ref target,
1594
- ref typedMessage,
1595
- entry.Key,
1596
- entry.Value
1597
- );
1598
- break;
1599
- }
1600
- case 5:
1601
- {
1602
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1603
- RunTargetedPostProcessing(
1604
- ref target,
1605
- ref typedMessage,
1606
- entry.Key,
1607
- entry.Value
1608
- );
1609
- entry = handlerList[1];
1610
- RunTargetedPostProcessing(
1611
- ref target,
1612
- ref typedMessage,
1613
- entry.Key,
1614
- entry.Value
1615
- );
1616
- entry = handlerList[2];
1617
- RunTargetedPostProcessing(
1618
- ref target,
1619
- ref typedMessage,
1620
- entry.Key,
1621
- entry.Value
1622
- );
1623
- entry = handlerList[3];
1624
- RunTargetedPostProcessing(
1625
- ref target,
1626
- ref typedMessage,
1627
- entry.Key,
1628
- entry.Value
1629
- );
1630
- entry = handlerList[4];
1631
- RunTargetedPostProcessing(
1632
- ref target,
1633
- ref typedMessage,
1634
- entry.Key,
1635
- entry.Value
1636
- );
1637
- break;
1638
- }
1639
- default:
1807
+
1808
+ foundAnyHandlers = true;
1809
+ int priority = bucket.priority;
1810
+ switch (entryCount)
1640
1811
  {
1641
- for (int i = 0; i < handlerListCount; ++i)
1812
+ case 1:
1642
1813
  {
1643
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
1644
- RunTargetedPostProcessing(
1814
+ InvokeTargetedWithoutTargetingPostEntry(
1645
1815
  ref target,
1646
1816
  ref typedMessage,
1647
- entry.Key,
1648
- entry.Value
1817
+ priority,
1818
+ entries[0]
1649
1819
  );
1820
+ continue;
1650
1821
  }
1651
-
1652
- break;
1653
- }
1654
- }
1655
- }
1656
-
1657
- if (
1658
- _postProcessingTargetedWithoutTargetingSinks.TryGetValue<TMessage>(
1659
- out HandlerCache<int, HandlerCache> postTwt
1660
- )
1661
- && postTwt.handlers.Count > 0
1662
- )
1663
- {
1664
- foundAnyHandlers = true;
1665
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
1666
- postTwt,
1667
- _emissionId
1668
- );
1669
- int handlerListCount = handlerList.Count;
1670
- switch (handlerListCount)
1671
- {
1672
- case 1:
1673
- {
1674
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1675
- RunTargetedWithoutTargetingPostProcessing(
1676
- ref target,
1677
- ref typedMessage,
1678
- entry.Key,
1679
- entry.Value
1680
- );
1681
- break;
1682
- }
1683
- case 2:
1684
- {
1685
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1686
- RunTargetedWithoutTargetingPostProcessing(
1687
- ref target,
1688
- ref typedMessage,
1689
- entry.Key,
1690
- entry.Value
1691
- );
1692
- entry = handlerList[1];
1693
- RunTargetedWithoutTargetingPostProcessing(
1694
- ref target,
1695
- ref typedMessage,
1696
- entry.Key,
1697
- entry.Value
1698
- );
1699
- break;
1700
- }
1701
- case 3:
1702
- {
1703
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1704
- RunTargetedWithoutTargetingPostProcessing(
1705
- ref target,
1706
- ref typedMessage,
1707
- entry.Key,
1708
- entry.Value
1709
- );
1710
- entry = handlerList[1];
1711
- RunTargetedWithoutTargetingPostProcessing(
1712
- ref target,
1713
- ref typedMessage,
1714
- entry.Key,
1715
- entry.Value
1716
- );
1717
- entry = handlerList[2];
1718
- RunTargetedWithoutTargetingPostProcessing(
1719
- ref target,
1720
- ref typedMessage,
1721
- entry.Key,
1722
- entry.Value
1723
- );
1724
- break;
1725
- }
1726
- case 4:
1727
- {
1728
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1729
- RunTargetedWithoutTargetingPostProcessing(
1730
- ref target,
1731
- ref typedMessage,
1732
- entry.Key,
1733
- entry.Value
1734
- );
1735
- entry = handlerList[1];
1736
- RunTargetedWithoutTargetingPostProcessing(
1737
- ref target,
1738
- ref typedMessage,
1739
- entry.Key,
1740
- entry.Value
1741
- );
1742
- entry = handlerList[2];
1743
- RunTargetedWithoutTargetingPostProcessing(
1744
- ref target,
1745
- ref typedMessage,
1746
- entry.Key,
1747
- entry.Value
1748
- );
1749
- entry = handlerList[3];
1750
- RunTargetedWithoutTargetingPostProcessing(
1751
- ref target,
1752
- ref typedMessage,
1753
- entry.Key,
1754
- entry.Value
1755
- );
1756
- break;
1757
- }
1758
- case 5:
1759
- {
1760
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
1761
- RunTargetedWithoutTargetingPostProcessing(
1762
- ref target,
1763
- ref typedMessage,
1764
- entry.Key,
1765
- entry.Value
1766
- );
1767
- entry = handlerList[1];
1768
- RunTargetedWithoutTargetingPostProcessing(
1769
- ref target,
1770
- ref typedMessage,
1771
- entry.Key,
1772
- entry.Value
1773
- );
1774
- entry = handlerList[2];
1775
- RunTargetedWithoutTargetingPostProcessing(
1776
- ref target,
1777
- ref typedMessage,
1778
- entry.Key,
1779
- entry.Value
1780
- );
1781
- entry = handlerList[3];
1782
- RunTargetedWithoutTargetingPostProcessing(
1783
- ref target,
1784
- ref typedMessage,
1785
- entry.Key,
1786
- entry.Value
1787
- );
1788
- entry = handlerList[4];
1789
- RunTargetedWithoutTargetingPostProcessing(
1790
- ref target,
1791
- ref typedMessage,
1792
- entry.Key,
1793
- entry.Value
1794
- );
1795
- break;
1796
- }
1797
- default:
1798
- {
1799
- for (int i = 0; i < handlerListCount; ++i)
1822
+ case 2:
1800
1823
  {
1801
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
1802
- RunTargetedWithoutTargetingPostProcessing(
1824
+ InvokeTargetedWithoutTargetingPostEntry(
1803
1825
  ref target,
1804
1826
  ref typedMessage,
1805
- entry.Key,
1806
- entry.Value
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]
1807
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]
1919
+ );
1920
+ continue;
1808
1921
  }
1922
+ }
1809
1923
 
1810
- break;
1924
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
1925
+ {
1926
+ InvokeTargetedWithoutTargetingPostEntry(
1927
+ ref target,
1928
+ ref typedMessage,
1929
+ priority,
1930
+ entries[entryIndex]
1931
+ );
1811
1932
  }
1812
1933
  }
1813
1934
  }
@@ -2163,70 +2284,46 @@ namespace DxMessaging.Core.MessageBus
2163
2284
  }
2164
2285
 
2165
2286
  // Pre-freeze broadcast post-processing for this emission (source-specific and without source)
2287
+ DispatchSnapshot broadcastPostSnapshot = DispatchSnapshot.Empty;
2288
+ DispatchSnapshot broadcastWithoutSourcePostSnapshot = DispatchSnapshot.Empty;
2166
2289
  if (
2167
2290
  _postProcessingBroadcastSinks.TryGetValue<TMessage>(
2168
- out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> prefreezeBroadcast
2291
+ out Dictionary<
2292
+ InstanceId,
2293
+ HandlerCache<int, HandlerCache>
2294
+ > broadcastPostHandlers
2169
2295
  )
2170
- && prefreezeBroadcast.TryGetValue(
2296
+ && broadcastPostHandlers.TryGetValue(
2171
2297
  source,
2172
- out HandlerCache<int, HandlerCache> prefreezeBroadcastByPriority
2298
+ out HandlerCache<int, HandlerCache> broadcastPostByPriority
2173
2299
  )
2174
- && prefreezeBroadcastByPriority.handlers.Count > 0
2300
+ && broadcastPostByPriority.handlers.Count > 0
2175
2301
  )
2176
2302
  {
2177
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
2178
- prefreezeBroadcastByPriority,
2303
+ broadcastPostSnapshot = AcquireDispatchSnapshot<TMessage>(
2304
+ this,
2305
+ broadcastPostByPriority,
2306
+ DispatchCategory.BroadcastPost,
2179
2307
  _emissionId
2180
2308
  );
2181
- int frozenCount = frozen.Count;
2182
- for (int i = 0; i < frozenCount; ++i)
2183
- {
2184
- KeyValuePair<int, HandlerCache> entry = frozen[i];
2185
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
2186
- entry.Value,
2187
- _emissionId
2188
- );
2189
- for (int h = 0; h < mhList.Count; ++h)
2190
- {
2191
- mhList[h]
2192
- .PrefreezeBroadcastPostProcessorsForEmission<TMessage>(
2193
- source,
2194
- entry.Key,
2195
- _emissionId,
2196
- this
2197
- );
2198
- }
2199
- }
2309
+ PrefreezeBroadcastPostSnapshot<TMessage>(ref source, broadcastPostSnapshot);
2200
2310
  }
2201
2311
  if (
2202
2312
  _postProcessingBroadcastWithoutSourceSinks.TryGetValue<TMessage>(
2203
- out HandlerCache<int, HandlerCache> prefreezeBws
2313
+ out HandlerCache<int, HandlerCache> broadcastWithoutSourceHandlers
2204
2314
  )
2205
- && prefreezeBws.handlers.Count > 0
2315
+ && broadcastWithoutSourceHandlers.handlers.Count > 0
2206
2316
  )
2207
2317
  {
2208
- List<KeyValuePair<int, HandlerCache>> frozen = GetOrAddMessageHandlerStack(
2209
- prefreezeBws,
2318
+ broadcastWithoutSourcePostSnapshot = AcquireDispatchSnapshot<TMessage>(
2319
+ this,
2320
+ broadcastWithoutSourceHandlers,
2321
+ DispatchCategory.BroadcastWithoutSourcePost,
2210
2322
  _emissionId
2211
2323
  );
2212
- int frozenCount = frozen.Count;
2213
- for (int i = 0; i < frozenCount; ++i)
2214
- {
2215
- KeyValuePair<int, HandlerCache> entry = frozen[i];
2216
- List<MessageHandler> mhList = GetOrAddMessageHandlerStack(
2217
- entry.Value,
2218
- _emissionId
2219
- );
2220
- for (int h = 0; h < mhList.Count; ++h)
2221
- {
2222
- mhList[h]
2223
- .PrefreezeBroadcastWithoutSourcePostProcessorsForEmission<TMessage>(
2224
- entry.Key,
2225
- _emissionId,
2226
- this
2227
- );
2228
- }
2229
- }
2324
+ PrefreezeBroadcastWithoutSourcePostSnapshot<TMessage>(
2325
+ broadcastWithoutSourcePostSnapshot
2326
+ );
2230
2327
  }
2231
2328
 
2232
2329
  if (!RunBroadcastInterceptors(ref typedMessage, ref source))
@@ -2271,8 +2368,9 @@ namespace DxMessaging.Core.MessageBus
2271
2368
  }
2272
2369
 
2273
2370
  bool foundAnyHandlers = false;
2274
- Dictionary<InstanceId, HandlerCache<int, HandlerCache>> broadcastHandlers;
2275
- _ = _broadcastSinks.TryGetValue<TMessage>(out broadcastHandlers);
2371
+ _ = _broadcastSinks.TryGetValue<TMessage>(
2372
+ out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> broadcastHandlers
2373
+ );
2276
2374
  if (
2277
2375
  broadcastHandlers != null
2278
2376
  && broadcastHandlers.TryGetValue(
@@ -2362,152 +2460,148 @@ namespace DxMessaging.Core.MessageBus
2362
2460
  )
2363
2461
  {
2364
2462
  foundAnyHandlers = true;
2365
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
2463
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
2464
+ this,
2366
2465
  sortedHandlers,
2466
+ DispatchCategory.BroadcastPost,
2367
2467
  _emissionId
2368
2468
  );
2369
- int handlerListCount = handlerList.Count;
2370
- switch (handlerListCount)
2371
- {
2372
- case 1:
2373
- {
2374
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2375
- RunBroadcastPostProcessing(
2376
- ref source,
2377
- ref typedMessage,
2378
- entry.Key,
2379
- entry.Value
2380
- );
2381
- break;
2382
- }
2383
- case 2:
2384
- {
2385
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2386
- RunBroadcastPostProcessing(
2387
- ref source,
2388
- ref typedMessage,
2389
- entry.Key,
2390
- entry.Value
2391
- );
2392
- entry = handlerList[1];
2393
- RunBroadcastPostProcessing(
2394
- ref source,
2395
- ref typedMessage,
2396
- entry.Key,
2397
- entry.Value
2398
- );
2399
- break;
2400
- }
2401
- case 3:
2402
- {
2403
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2404
- RunBroadcastPostProcessing(
2405
- ref source,
2406
- ref typedMessage,
2407
- entry.Key,
2408
- entry.Value
2409
- );
2410
- entry = handlerList[1];
2411
- RunBroadcastPostProcessing(
2412
- ref source,
2413
- ref typedMessage,
2414
- entry.Key,
2415
- entry.Value
2416
- );
2417
- entry = handlerList[2];
2418
- RunBroadcastPostProcessing(
2419
- ref source,
2420
- ref typedMessage,
2421
- entry.Key,
2422
- entry.Value
2423
- );
2424
- break;
2425
- }
2426
- case 4:
2427
- {
2428
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2429
- RunBroadcastPostProcessing(
2430
- ref source,
2431
- ref typedMessage,
2432
- entry.Key,
2433
- entry.Value
2434
- );
2435
- entry = handlerList[1];
2436
- RunBroadcastPostProcessing(
2437
- ref source,
2438
- ref typedMessage,
2439
- entry.Key,
2440
- entry.Value
2441
- );
2442
- entry = handlerList[2];
2443
- RunBroadcastPostProcessing(
2444
- ref source,
2445
- ref typedMessage,
2446
- entry.Key,
2447
- entry.Value
2448
- );
2449
- entry = handlerList[3];
2450
- RunBroadcastPostProcessing(
2451
- ref source,
2452
- ref typedMessage,
2453
- entry.Key,
2454
- entry.Value
2455
- );
2456
- break;
2457
- }
2458
- case 5:
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)
2459
2477
  {
2460
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
2461
- RunBroadcastPostProcessing(
2462
- ref source,
2463
- ref typedMessage,
2464
- entry.Key,
2465
- entry.Value
2466
- );
2467
- entry = handlerList[1];
2468
- RunBroadcastPostProcessing(
2469
- ref source,
2470
- ref typedMessage,
2471
- entry.Key,
2472
- entry.Value
2473
- );
2474
- entry = handlerList[2];
2475
- RunBroadcastPostProcessing(
2476
- ref source,
2477
- ref typedMessage,
2478
- entry.Key,
2479
- entry.Value
2480
- );
2481
- entry = handlerList[3];
2482
- RunBroadcastPostProcessing(
2483
- ref source,
2484
- ref typedMessage,
2485
- entry.Key,
2486
- entry.Value
2487
- );
2488
- entry = handlerList[4];
2489
- RunBroadcastPostProcessing(
2490
- ref source,
2491
- ref typedMessage,
2492
- entry.Key,
2493
- entry.Value
2494
- );
2495
- break;
2478
+ continue;
2496
2479
  }
2497
- default:
2480
+
2481
+ foundAnyHandlers = true;
2482
+ int priority = bucket.priority;
2483
+ switch (entryCount)
2498
2484
  {
2499
- for (int i = 0; i < handlerListCount; ++i)
2485
+ case 1:
2500
2486
  {
2501
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
2502
- RunBroadcastPostProcessing(
2487
+ InvokeBroadcastPostEntry(
2503
2488
  ref source,
2504
2489
  ref typedMessage,
2505
- entry.Key,
2506
- 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]
2507
2586
  );
2587
+ InvokeBroadcastPostEntry(
2588
+ ref source,
2589
+ ref typedMessage,
2590
+ priority,
2591
+ entries[4]
2592
+ );
2593
+ continue;
2508
2594
  }
2595
+ }
2509
2596
 
2510
- break;
2597
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2598
+ {
2599
+ InvokeBroadcastPostEntry(
2600
+ ref source,
2601
+ ref typedMessage,
2602
+ priority,
2603
+ entries[entryIndex]
2604
+ );
2511
2605
  }
2512
2606
  }
2513
2607
  }
@@ -2517,20 +2611,149 @@ namespace DxMessaging.Core.MessageBus
2517
2611
  && 0 < sortedHandlers.handlers.Count
2518
2612
  )
2519
2613
  {
2520
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
2614
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
2615
+ this,
2521
2616
  sortedHandlers,
2617
+ DispatchCategory.BroadcastWithoutSourcePost,
2522
2618
  _emissionId
2523
2619
  );
2524
- int handlerListCount = handlerList.Count;
2525
- for (int i = 0; i < handlerListCount; ++i)
2526
- {
2527
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
2528
- RunBroadcastWithoutSourcePostProcessing(
2529
- ref source,
2530
- ref typedMessage,
2531
- entry.Key,
2532
- entry.Value
2533
- );
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
+ }
2534
2757
  }
2535
2758
  }
2536
2759
 
@@ -2545,7 +2768,7 @@ namespace DxMessaging.Core.MessageBus
2545
2768
  }
2546
2769
  }
2547
2770
 
2548
- private void RunBroadcastWithoutSourcePostProcessing<TMessage>(
2771
+ private void RunBroadcastPostProcessing<TMessage>(
2549
2772
  ref InstanceId source,
2550
2773
  ref TMessage typedMessage,
2551
2774
  int priority,
@@ -2553,39 +2776,13 @@ namespace DxMessaging.Core.MessageBus
2553
2776
  )
2554
2777
  where TMessage : IBroadcastMessage
2555
2778
  {
2556
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(cache, _emissionId);
2557
- int messageHandlersCount = messageHandlers.Count;
2558
- if (messageHandlersCount == 0)
2779
+ if (cache.handlers.Count == 0)
2559
2780
  {
2560
2781
  return;
2561
2782
  }
2562
- for (int i = 0; i < messageHandlersCount; ++i)
2563
- {
2564
- MessageHandler handler = messageHandlers[i];
2565
- handler.HandleSourcedBroadcastWithoutSourcePostProcessing(
2566
- ref source,
2567
- ref typedMessage,
2568
- this,
2569
- priority
2570
- );
2571
- }
2572
- }
2573
-
2574
- private void RunBroadcastPostProcessing<TMessage>(
2575
- ref InstanceId source,
2576
- ref TMessage typedMessage,
2577
- int priority,
2578
- HandlerCache cache
2579
- )
2580
- where TMessage : IBroadcastMessage
2581
- {
2582
- if (cache.handlers.Count == 0)
2583
- {
2584
- return;
2585
- }
2586
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(cache, _emissionId);
2587
- int messageHandlersCount = messageHandlers.Count;
2588
- switch (messageHandlersCount)
2783
+ List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(cache, _emissionId);
2784
+ int messageHandlersCount = messageHandlers.Count;
2785
+ switch (messageHandlersCount)
2589
2786
  {
2590
2787
  case 1:
2591
2788
  {
@@ -2804,128 +3001,144 @@ namespace DxMessaging.Core.MessageBus
2804
3001
 
2805
3002
  private void BroadcastGlobalUntargeted(ref IUntargetedMessage message)
2806
3003
  {
2807
- if (_globalSinks.handlers.Count == 0)
2808
- {
2809
- return;
2810
- }
2811
-
2812
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(
3004
+ DispatchSnapshot snapshot = AcquireGlobalDispatchSnapshot<IUntargetedMessage>(
3005
+ this,
2813
3006
  _globalSinks,
3007
+ DispatchCategory.GlobalUntargeted,
2814
3008
  _emissionId
2815
3009
  );
2816
- // Freeze each handler's global untargeted caches for this emission
2817
- for (int i = 0; i < messageHandlers.Count; ++i)
3010
+ DispatchBucket[] buckets = snapshot.buckets;
3011
+ int bucketCount = snapshot.bucketCount;
3012
+ if (bucketCount == 0)
2818
3013
  {
2819
- messageHandlers[i].PrefreezeGlobalUntargetedForEmission(_emissionId, this);
3014
+ return;
2820
3015
  }
2821
- int messageHandlersCount = messageHandlers.Count;
2822
- switch (messageHandlersCount)
3016
+
3017
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
2823
3018
  {
2824
- case 1:
2825
- {
2826
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2827
- return;
2828
- }
2829
- case 2:
2830
- {
2831
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2832
- messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
2833
- return;
2834
- }
2835
- case 3:
3019
+ DispatchBucket bucket = buckets[bucketIndex];
3020
+ DispatchEntry[] entries = bucket.entries;
3021
+ int entryCount = bucket.entryCount;
3022
+ if (entryCount == 0)
2836
3023
  {
2837
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2838
- messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
2839
- messageHandlers[2].HandleGlobalUntargetedMessage(ref message, this);
2840
- return;
3024
+ continue;
2841
3025
  }
2842
- case 4:
3026
+
3027
+ switch (entryCount)
2843
3028
  {
2844
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2845
- messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
2846
- messageHandlers[2].HandleGlobalUntargetedMessage(ref message, this);
2847
- messageHandlers[3].HandleGlobalUntargetedMessage(ref message, this);
2848
- 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
+ }
2849
3064
  }
2850
- case 5:
3065
+
3066
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2851
3067
  {
2852
- messageHandlers[0].HandleGlobalUntargetedMessage(ref message, this);
2853
- messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
2854
- messageHandlers[2].HandleGlobalUntargetedMessage(ref message, this);
2855
- messageHandlers[3].HandleGlobalUntargetedMessage(ref message, this);
2856
- messageHandlers[4].HandleGlobalUntargetedMessage(ref message, this);
2857
- return;
3068
+ InvokeGlobalUntargetedEntry(ref message, entries[entryIndex]);
2858
3069
  }
2859
3070
  }
2860
-
2861
- for (int i = 0; i < messageHandlersCount; ++i)
2862
- {
2863
- MessageHandler handler = messageHandlers[i];
2864
- handler.HandleGlobalUntargetedMessage(ref message, this);
2865
- }
2866
3071
  }
2867
3072
 
2868
3073
  private void BroadcastGlobalTargeted(ref InstanceId target, ref ITargetedMessage message)
2869
3074
  {
2870
- if (_globalSinks.handlers.Count == 0)
2871
- {
2872
- return;
2873
- }
2874
-
2875
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(
3075
+ DispatchSnapshot snapshot = AcquireGlobalDispatchSnapshot<ITargetedMessage>(
3076
+ this,
2876
3077
  _globalSinks,
3078
+ DispatchCategory.GlobalTargeted,
2877
3079
  _emissionId
2878
3080
  );
2879
- // Freeze each handler's global targeted caches for this emission
2880
- for (int i = 0; i < messageHandlers.Count; ++i)
3081
+ DispatchBucket[] buckets = snapshot.buckets;
3082
+ int bucketCount = snapshot.bucketCount;
3083
+ if (bucketCount == 0)
2881
3084
  {
2882
- messageHandlers[i].PrefreezeGlobalTargetedForEmission(_emissionId, this);
3085
+ return;
2883
3086
  }
2884
- int messageHandlersCount = messageHandlers.Count;
2885
- switch (messageHandlersCount)
3087
+
3088
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
2886
3089
  {
2887
- case 1:
2888
- {
2889
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2890
- return;
2891
- }
2892
- case 2:
2893
- {
2894
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2895
- messageHandlers[1].HandleGlobalTargetedMessage(ref target, ref message, this);
2896
- return;
2897
- }
2898
- case 3:
3090
+ DispatchBucket bucket = buckets[bucketIndex];
3091
+ DispatchEntry[] entries = bucket.entries;
3092
+ int entryCount = bucket.entryCount;
3093
+ if (entryCount == 0)
2899
3094
  {
2900
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2901
- messageHandlers[1].HandleGlobalTargetedMessage(ref target, ref message, this);
2902
- messageHandlers[2].HandleGlobalTargetedMessage(ref target, ref message, this);
2903
- return;
3095
+ continue;
2904
3096
  }
2905
- case 4:
3097
+
3098
+ switch (entryCount)
2906
3099
  {
2907
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2908
- messageHandlers[1].HandleGlobalTargetedMessage(ref target, ref message, this);
2909
- messageHandlers[2].HandleGlobalTargetedMessage(ref target, ref message, this);
2910
- messageHandlers[3].HandleGlobalTargetedMessage(ref target, ref message, this);
2911
- 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
+ }
2912
3135
  }
2913
- case 5:
3136
+
3137
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2914
3138
  {
2915
- messageHandlers[0].HandleGlobalTargetedMessage(ref target, ref message, this);
2916
- messageHandlers[1].HandleGlobalTargetedMessage(ref target, ref message, this);
2917
- messageHandlers[2].HandleGlobalTargetedMessage(ref target, ref message, this);
2918
- messageHandlers[3].HandleGlobalTargetedMessage(ref target, ref message, this);
2919
- messageHandlers[4].HandleGlobalTargetedMessage(ref target, ref message, this);
2920
- return;
3139
+ InvokeGlobalTargetedEntry(ref target, ref message, entries[entryIndex]);
2921
3140
  }
2922
3141
  }
2923
-
2924
- for (int i = 0; i < messageHandlersCount; ++i)
2925
- {
2926
- MessageHandler handler = messageHandlers[i];
2927
- handler.HandleGlobalTargetedMessage(ref target, ref message, this);
2928
- }
2929
3142
  }
2930
3143
 
2931
3144
  private void BroadcastGlobalSourcedBroadcast(
@@ -2933,116 +3146,94 @@ namespace DxMessaging.Core.MessageBus
2933
3146
  ref IBroadcastMessage message
2934
3147
  )
2935
3148
  {
2936
- if (_globalSinks.handlers.Count == 0)
2937
- {
2938
- return;
2939
- }
2940
-
2941
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(
3149
+ DispatchSnapshot snapshot = AcquireGlobalDispatchSnapshot<IBroadcastMessage>(
3150
+ this,
2942
3151
  _globalSinks,
3152
+ DispatchCategory.GlobalBroadcast,
2943
3153
  _emissionId
2944
3154
  );
2945
- // Freeze each handler's global broadcast caches for this emission
2946
- for (int i = 0; i < messageHandlers.Count; ++i)
3155
+ DispatchBucket[] buckets = snapshot.buckets;
3156
+ int bucketCount = snapshot.bucketCount;
3157
+ if (bucketCount == 0)
2947
3158
  {
2948
- messageHandlers[i].PrefreezeGlobalBroadcastForEmission(_emissionId, this);
3159
+ return;
2949
3160
  }
2950
- int messageHandlersCount = messageHandlers.Count;
2951
- switch (messageHandlersCount)
3161
+
3162
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
2952
3163
  {
2953
- case 1:
2954
- {
2955
- messageHandlers[0]
2956
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2957
- return;
2958
- }
2959
- case 2:
2960
- {
2961
- messageHandlers[0]
2962
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2963
- messageHandlers[1]
2964
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2965
- return;
2966
- }
2967
- case 3:
3164
+ DispatchBucket bucket = buckets[bucketIndex];
3165
+ DispatchEntry[] entries = bucket.entries;
3166
+ int entryCount = bucket.entryCount;
3167
+ if (entryCount == 0)
2968
3168
  {
2969
- messageHandlers[0]
2970
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2971
- messageHandlers[1]
2972
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2973
- messageHandlers[2]
2974
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2975
- return;
3169
+ continue;
2976
3170
  }
2977
- case 4:
3171
+
3172
+ switch (entryCount)
2978
3173
  {
2979
- messageHandlers[0]
2980
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2981
- messageHandlers[1]
2982
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2983
- messageHandlers[2]
2984
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2985
- messageHandlers[3]
2986
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2987
- 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
+ }
2988
3209
  }
2989
- case 5:
3210
+
3211
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
2990
3212
  {
2991
- messageHandlers[0]
2992
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2993
- messageHandlers[1]
2994
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2995
- messageHandlers[2]
2996
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2997
- messageHandlers[3]
2998
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
2999
- messageHandlers[4]
3000
- .HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
3001
- return;
3213
+ InvokeGlobalBroadcastEntry(ref source, ref message, entries[entryIndex]);
3002
3214
  }
3003
3215
  }
3004
-
3005
- for (int i = 0; i < messageHandlersCount; ++i)
3006
- {
3007
- MessageHandler handler = messageHandlers[i];
3008
- handler.HandleGlobalSourcedBroadcastMessage(ref source, ref message, this);
3009
- }
3010
3216
  }
3011
3217
 
3012
3218
  private bool TryGetUntargetedInterceptorCaches<TMessage>(
3013
- out List<KeyValuePair<int, List<object>>> interceptorStack,
3219
+ out SortedList<int, List<object>> interceptorHandlers,
3014
3220
  out List<object> interceptorObjects
3015
3221
  )
3016
3222
  where TMessage : IUntargetedMessage
3017
3223
  {
3018
3224
  if (
3019
3225
  !_untargetedInterceptsByType.TryGetValue<TMessage>(
3020
- out HandlerCache<int, List<object>> interceptors
3226
+ out InterceptorCache<object> interceptors
3021
3227
  )
3022
3228
  || interceptors.handlers.Count == 0
3023
3229
  )
3024
3230
  {
3025
- interceptorStack = default;
3231
+ interceptorHandlers = default;
3026
3232
  interceptorObjects = default;
3027
3233
  return false;
3028
3234
  }
3029
3235
 
3030
- interceptorStack = interceptors.cache;
3031
- if (interceptors.version != interceptors.lastSeenVersion)
3032
- {
3033
- interceptorStack.Clear();
3034
- List<int> keys = interceptors.order;
3035
- for (int i = 0; i < keys.Count; ++i)
3036
- {
3037
- int key = keys[i];
3038
- if (interceptors.handlers.TryGetValue(key, out List<object> values))
3039
- {
3040
- interceptorStack.Add(new KeyValuePair<int, List<object>>(key, values));
3041
- }
3042
- }
3043
-
3044
- interceptors.lastSeenVersion = interceptors.version;
3045
- }
3236
+ interceptorHandlers = interceptors.handlers;
3046
3237
 
3047
3238
  if (!_innerInterceptorsStack.TryPop(out interceptorObjects))
3048
3239
  {
@@ -3053,39 +3244,24 @@ namespace DxMessaging.Core.MessageBus
3053
3244
  }
3054
3245
 
3055
3246
  private bool TryGetTargetedInterceptorCaches<TMessage>(
3056
- out List<KeyValuePair<int, List<object>>> interceptorStack,
3247
+ out SortedList<int, List<object>> interceptorHandlers,
3057
3248
  out List<object> interceptorObjects
3058
3249
  )
3059
3250
  where TMessage : ITargetedMessage
3060
3251
  {
3061
3252
  if (
3062
3253
  !_targetedInterceptsByType.TryGetValue<TMessage>(
3063
- out HandlerCache<int, List<object>> interceptors
3254
+ out InterceptorCache<object> interceptors
3064
3255
  )
3065
3256
  || interceptors.handlers.Count == 0
3066
3257
  )
3067
3258
  {
3068
- interceptorStack = default;
3259
+ interceptorHandlers = default;
3069
3260
  interceptorObjects = default;
3070
3261
  return false;
3071
3262
  }
3072
3263
 
3073
- interceptorStack = interceptors.cache;
3074
- if (interceptors.version != interceptors.lastSeenVersion)
3075
- {
3076
- interceptorStack.Clear();
3077
- List<int> keys = interceptors.order;
3078
- for (int i = 0; i < keys.Count; ++i)
3079
- {
3080
- int key = keys[i];
3081
- if (interceptors.handlers.TryGetValue(key, out List<object> values))
3082
- {
3083
- interceptorStack.Add(new KeyValuePair<int, List<object>>(key, values));
3084
- }
3085
- }
3086
-
3087
- interceptors.lastSeenVersion = interceptors.version;
3088
- }
3264
+ interceptorHandlers = interceptors.handlers;
3089
3265
 
3090
3266
  if (!_innerInterceptorsStack.TryPop(out interceptorObjects))
3091
3267
  {
@@ -3096,39 +3272,24 @@ namespace DxMessaging.Core.MessageBus
3096
3272
  }
3097
3273
 
3098
3274
  private bool TryGetBroadcastInterceptorCaches<TMessage>(
3099
- out List<KeyValuePair<int, List<object>>> interceptorStack,
3275
+ out SortedList<int, List<object>> interceptorHandlers,
3100
3276
  out List<object> interceptorObjects
3101
3277
  )
3102
3278
  where TMessage : IBroadcastMessage
3103
3279
  {
3104
3280
  if (
3105
3281
  !_broadcastInterceptsByType.TryGetValue<TMessage>(
3106
- out HandlerCache<int, List<object>> interceptors
3282
+ out InterceptorCache<object> interceptors
3107
3283
  )
3108
3284
  || interceptors.handlers.Count == 0
3109
3285
  )
3110
3286
  {
3111
- interceptorStack = default;
3287
+ interceptorHandlers = default;
3112
3288
  interceptorObjects = default;
3113
3289
  return false;
3114
3290
  }
3115
3291
 
3116
- interceptorStack = interceptors.cache;
3117
- if (interceptors.version != interceptors.lastSeenVersion)
3118
- {
3119
- interceptorStack.Clear();
3120
- List<int> keys = interceptors.order;
3121
- for (int i = 0; i < keys.Count; ++i)
3122
- {
3123
- int key = keys[i];
3124
- if (interceptors.handlers.TryGetValue(key, out List<object> values))
3125
- {
3126
- interceptorStack.Add(new KeyValuePair<int, List<object>>(key, values));
3127
- }
3128
- }
3129
-
3130
- interceptors.lastSeenVersion = interceptors.version;
3131
- }
3292
+ interceptorHandlers = interceptors.handlers;
3132
3293
 
3133
3294
  if (!_innerInterceptorsStack.TryPop(out interceptorObjects))
3134
3295
  {
@@ -3143,7 +3304,7 @@ namespace DxMessaging.Core.MessageBus
3143
3304
  {
3144
3305
  if (
3145
3306
  !TryGetUntargetedInterceptorCaches<T>(
3146
- out List<KeyValuePair<int, List<object>>> interceptorStack,
3307
+ out SortedList<int, List<object>> interceptorHandlers,
3147
3308
  out List<object> interceptorObjects
3148
3309
  )
3149
3310
  )
@@ -3153,11 +3314,11 @@ namespace DxMessaging.Core.MessageBus
3153
3314
 
3154
3315
  try
3155
3316
  {
3156
- for (int s = 0; s < interceptorStack.Count; ++s)
3317
+ IList<List<object>> prioritizedInterceptors = interceptorHandlers.Values;
3318
+ for (int s = 0; s < prioritizedInterceptors.Count; ++s)
3157
3319
  {
3158
- KeyValuePair<int, List<object>> entry = interceptorStack[s];
3159
3320
  interceptorObjects.Clear();
3160
- List<object> interceptors = entry.Value;
3321
+ List<object> interceptors = prioritizedInterceptors[s];
3161
3322
  interceptorObjects.AddRange(interceptors);
3162
3323
 
3163
3324
  for (int i = 0; i < interceptorObjects.Count; ++i)
@@ -3185,7 +3346,7 @@ namespace DxMessaging.Core.MessageBus
3185
3346
  {
3186
3347
  if (
3187
3348
  !TryGetTargetedInterceptorCaches<T>(
3188
- out List<KeyValuePair<int, List<object>>> interceptorStack,
3349
+ out SortedList<int, List<object>> interceptorHandlers,
3189
3350
  out List<object> interceptorObjects
3190
3351
  )
3191
3352
  )
@@ -3195,11 +3356,11 @@ namespace DxMessaging.Core.MessageBus
3195
3356
 
3196
3357
  try
3197
3358
  {
3198
- for (int s = 0; s < interceptorStack.Count; ++s)
3359
+ IList<List<object>> prioritizedInterceptors = interceptorHandlers.Values;
3360
+ for (int s = 0; s < prioritizedInterceptors.Count; ++s)
3199
3361
  {
3200
- KeyValuePair<int, List<object>> entry = interceptorStack[s];
3201
3362
  interceptorObjects.Clear();
3202
- List<object> interceptors = entry.Value;
3363
+ List<object> interceptors = prioritizedInterceptors[s];
3203
3364
  interceptorObjects.AddRange(interceptors);
3204
3365
 
3205
3366
  for (int i = 0; i < interceptorObjects.Count; ++i)
@@ -3227,7 +3388,7 @@ namespace DxMessaging.Core.MessageBus
3227
3388
  {
3228
3389
  if (
3229
3390
  !TryGetBroadcastInterceptorCaches<T>(
3230
- out List<KeyValuePair<int, List<object>>> interceptorStack,
3391
+ out SortedList<int, List<object>> interceptorHandlers,
3231
3392
  out List<object> interceptorObjects
3232
3393
  )
3233
3394
  )
@@ -3237,11 +3398,11 @@ namespace DxMessaging.Core.MessageBus
3237
3398
 
3238
3399
  try
3239
3400
  {
3240
- for (int s = 0; s < interceptorStack.Count; ++s)
3401
+ IList<List<object>> prioritizedInterceptors = interceptorHandlers.Values;
3402
+ for (int s = 0; s < prioritizedInterceptors.Count; ++s)
3241
3403
  {
3242
- KeyValuePair<int, List<object>> entry = interceptorStack[s];
3243
3404
  interceptorObjects.Clear();
3244
- List<object> interceptors = entry.Value;
3405
+ List<object> interceptors = prioritizedInterceptors[s];
3245
3406
  interceptorObjects.AddRange(interceptors);
3246
3407
 
3247
3408
  for (int i = 0; i < interceptorObjects.Count; ++i)
@@ -3275,135 +3436,152 @@ namespace DxMessaging.Core.MessageBus
3275
3436
  return false;
3276
3437
  }
3277
3438
 
3278
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
3439
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
3440
+ this,
3279
3441
  sortedHandlers,
3442
+ DispatchCategory.Untargeted,
3280
3443
  _emissionId
3281
3444
  );
3445
+ DispatchBucket[] buckets = snapshot.buckets;
3446
+ int bucketCount = snapshot.bucketCount;
3282
3447
 
3283
- int handlerListCount = handlerList.Count;
3284
- switch (handlerListCount)
3448
+ if (bucketCount == 0)
3285
3449
  {
3286
- case 1:
3287
- {
3288
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3289
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3290
- return true;
3291
- }
3292
- case 2:
3293
- {
3294
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3295
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3296
- entry = handlerList[1];
3297
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3298
- return true;
3299
- }
3300
- 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)
3301
3461
  {
3302
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3303
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3304
- entry = handlerList[1];
3305
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3306
- entry = handlerList[2];
3307
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3308
- return true;
3462
+ continue;
3309
3463
  }
3310
- case 4:
3464
+
3465
+ invoked = true;
3466
+ int priority = bucket.priority;
3467
+ switch (entryCount)
3311
3468
  {
3312
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3313
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3314
- entry = handlerList[1];
3315
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3316
- entry = handlerList[2];
3317
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3318
- entry = handlerList[3];
3319
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3320
- 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
+ }
3321
3504
  }
3322
- case 5:
3505
+
3506
+ for (int handlerIndex = 0; handlerIndex < entryCount; ++handlerIndex)
3323
3507
  {
3324
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3325
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3326
- entry = handlerList[1];
3327
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3328
- entry = handlerList[2];
3329
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3330
- entry = handlerList[3];
3331
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3332
- entry = handlerList[4];
3333
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3334
- return true;
3508
+ InvokeUntargetedEntry(ref message, priority, entries[handlerIndex]);
3335
3509
  }
3336
3510
  }
3337
3511
 
3338
- for (int i = 0; i < handlerListCount; ++i)
3339
- {
3340
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
3341
- RunUntargetedBroadcast(ref message, entry.Key, entry.Value);
3342
- }
3343
- return true;
3512
+ return invoked;
3344
3513
  }
3345
3514
 
3346
- private void RunUntargetedBroadcast<TMessage>(
3515
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
3516
+ private void InvokeUntargetedEntry<TMessage>(
3347
3517
  ref TMessage message,
3348
3518
  int priority,
3349
- HandlerCache cache
3519
+ DispatchEntry entry
3350
3520
  )
3351
3521
  where TMessage : IMessage
3352
3522
  {
3353
- if (cache.handlers.Count == 0)
3523
+ MessageHandler messageHandler = entry.handler;
3524
+ if (!messageHandler.active)
3354
3525
  {
3355
3526
  return;
3356
3527
  }
3357
- List<MessageHandler> messageHandlers = GetOrAddMessageHandlerStack(cache, _emissionId);
3358
- int messageHandlersCount = messageHandlers.Count;
3359
- if (messageHandlersCount == 0)
3360
- {
3361
- return;
3528
+
3529
+ MessageHandler.UntargetedDispatchLink<TMessage> link =
3530
+ Unsafe.As<MessageHandler.UntargetedDispatchLink<TMessage>>(entry.dispatch);
3531
+ link.Invoke(messageHandler, ref message, priority, _emissionId);
3532
+ }
3533
+
3534
+ [MethodImpl(MethodImplOptions.AggressiveInlining)]
3535
+ private void InvokeUntargetedPostEntry<TMessage>(
3536
+ ref TMessage message,
3537
+ int priority,
3538
+ DispatchEntry entry
3539
+ )
3540
+ where TMessage : IUntargetedMessage
3541
+ {
3542
+ MessageHandler handler = entry.handler;
3543
+ if (!handler.active)
3544
+ {
3545
+ return;
3362
3546
  }
3363
- switch (messageHandlersCount)
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)
3364
3558
  {
3365
- case 1:
3366
- {
3367
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3368
- return;
3369
- }
3370
- case 2:
3371
- {
3372
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3373
- messageHandlers[1].HandleUntargetedMessage(ref message, this, priority);
3374
- return;
3375
- }
3376
- case 3:
3377
- {
3378
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3379
- messageHandlers[1].HandleUntargetedMessage(ref message, this, priority);
3380
- messageHandlers[2].HandleUntargetedMessage(ref message, this, priority);
3381
- return;
3382
- }
3383
- case 4:
3559
+ return;
3560
+ }
3561
+
3562
+ DispatchBucket[] buckets = snapshot.buckets;
3563
+ int bucketCount = snapshot.bucketCount;
3564
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
3565
+ {
3566
+ DispatchBucket bucket = buckets[bucketIndex];
3567
+ DispatchEntry[] entries = bucket.entries;
3568
+ int entryCount = bucket.entryCount;
3569
+ if (entryCount == 0)
3384
3570
  {
3385
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3386
- messageHandlers[1].HandleUntargetedMessage(ref message, this, priority);
3387
- messageHandlers[2].HandleUntargetedMessage(ref message, this, priority);
3388
- messageHandlers[3].HandleUntargetedMessage(ref message, this, priority);
3389
- return;
3571
+ continue;
3390
3572
  }
3391
- case 5:
3573
+
3574
+ int priority = bucket.priority;
3575
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
3392
3576
  {
3393
- messageHandlers[0].HandleUntargetedMessage(ref message, this, priority);
3394
- messageHandlers[1].HandleUntargetedMessage(ref message, this, priority);
3395
- messageHandlers[2].HandleUntargetedMessage(ref message, this, priority);
3396
- messageHandlers[3].HandleUntargetedMessage(ref message, this, priority);
3397
- messageHandlers[4].HandleUntargetedMessage(ref message, this, priority);
3398
- return;
3577
+ entries[entryIndex]
3578
+ .handler.PrefreezeUntargetedPostProcessorsForEmission<TMessage>(
3579
+ priority,
3580
+ _emissionId,
3581
+ this
3582
+ );
3399
3583
  }
3400
3584
  }
3401
-
3402
- for (int i = 0; i < messageHandlersCount; ++i)
3403
- {
3404
- MessageHandler handler = messageHandlers[i];
3405
- handler.HandleUntargetedMessage(ref message, this, priority);
3406
- }
3407
3585
  }
3408
3586
 
3409
3587
  private bool InternalTargetedWithoutTargetingBroadcast<TMessage>(
@@ -3420,73 +3598,162 @@ namespace DxMessaging.Core.MessageBus
3420
3598
  return false;
3421
3599
  }
3422
3600
 
3423
- List<KeyValuePair<int, HandlerCache>> handlerList = GetOrAddMessageHandlerStack(
3601
+ DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
3602
+ this,
3424
3603
  sortedHandlers,
3604
+ DispatchCategory.TargetedWithoutTargeting,
3425
3605
  _emissionId
3426
3606
  );
3607
+ DispatchBucket[] buckets = snapshot.buckets;
3608
+ int bucketCount = snapshot.bucketCount;
3609
+ bool invoked = false;
3427
3610
 
3428
- int handlerListCount = handlerList.Count;
3429
- switch (handlerListCount)
3611
+ for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
3430
3612
  {
3431
- case 1:
3432
- {
3433
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3434
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3435
- return true;
3436
- }
3437
- case 2:
3613
+ DispatchBucket bucket = buckets[bucketIndex];
3614
+ DispatchEntry[] entries = bucket.entries;
3615
+ int entryCount = bucket.entryCount;
3616
+ if (entryCount == 0)
3438
3617
  {
3439
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3440
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3441
- entry = handlerList[1];
3442
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3443
- return true;
3618
+ continue;
3444
3619
  }
3445
- case 3:
3620
+
3621
+ invoked = true;
3622
+ int priority = bucket.priority;
3623
+ if (entries[0].prefreeze.kind == PrefreezeKindTargetedWithoutTargetingHandlers)
3446
3624
  {
3447
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3448
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3449
- entry = handlerList[1];
3450
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3451
- entry = handlerList[2];
3452
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3453
- return true;
3625
+ PrefreezeTargetedWithoutTargetingEntries<TMessage>(
3626
+ entries,
3627
+ entryCount,
3628
+ priority
3629
+ );
3454
3630
  }
3455
- case 4:
3631
+ switch (entryCount)
3456
3632
  {
3457
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3458
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3459
- entry = handlerList[1];
3460
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3461
- entry = handlerList[2];
3462
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3463
- entry = handlerList[3];
3464
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3465
- return true;
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
+ }
3466
3743
  }
3467
- case 5:
3744
+
3745
+ for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
3468
3746
  {
3469
- KeyValuePair<int, HandlerCache> entry = handlerList[0];
3470
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3471
- entry = handlerList[1];
3472
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3473
- entry = handlerList[2];
3474
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3475
- entry = handlerList[3];
3476
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3477
- entry = handlerList[4];
3478
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3479
- return true;
3747
+ InvokeTargetedWithoutTargetingEntry(
3748
+ ref target,
3749
+ ref message,
3750
+ priority,
3751
+ entries[entryIndex]
3752
+ );
3480
3753
  }
3481
3754
  }
3482
3755
 
3483
- for (int i = 0; i < handlerListCount; ++i)
3484
- {
3485
- KeyValuePair<int, HandlerCache> entry = handlerList[i];
3486
- RunTargetedWithoutTargeting(ref target, ref message, entry.Key, entry.Value);
3487
- }
3488
-
3489
- return true;
3756
+ return invoked;
3490
3757
  }
3491
3758
 
3492
3759
  private void RunTargetedWithoutTargeting<TMessage>(
@@ -3838,6 +4105,8 @@ namespace DxMessaging.Core.MessageBus
3838
4105
 
3839
4106
  InstanceId handlerOwnerId = messageHandler.owner;
3840
4107
  HandlerCache<int, HandlerCache> handlers = sinks.GetOrAdd<T>();
4108
+ HandlerCache<int, HandlerCache> capturedHandlers = handlers;
4109
+ DispatchCategory dispatchCategory = GetDispatchCategory(registrationMethod);
3841
4110
 
3842
4111
  if (!handlers.handlers.TryGetValue(priority, out HandlerCache cache))
3843
4112
  {
@@ -3859,6 +4128,7 @@ namespace DxMessaging.Core.MessageBus
3859
4128
  int count = handler.GetValueOrDefault(messageHandler, 0);
3860
4129
 
3861
4130
  handler[messageHandler] = count + 1;
4131
+ StageDispatchSnapshot<T>(this, capturedHandlers, dispatchCategory);
3862
4132
  Type type = typeof(T);
3863
4133
  _log.Log(
3864
4134
  new MessagingRegistration(
@@ -3938,6 +4208,7 @@ namespace DxMessaging.Core.MessageBus
3938
4208
  {
3939
4209
  handler[messageHandler] = count - 1;
3940
4210
  }
4211
+ StageDispatchSnapshot<T>(this, handlers, dispatchCategory);
3941
4212
  };
3942
4213
  }
3943
4214
 
@@ -3957,6 +4228,7 @@ namespace DxMessaging.Core.MessageBus
3957
4228
 
3958
4229
  Dictionary<InstanceId, HandlerCache<int, HandlerCache>> broadcastHandlers =
3959
4230
  sinks.GetOrAdd<T>();
4231
+ DispatchCategory dispatchCategory = GetDispatchCategory(registrationMethod);
3960
4232
 
3961
4233
  if (
3962
4234
  !broadcastHandlers.TryGetValue(
@@ -3999,6 +4271,7 @@ namespace DxMessaging.Core.MessageBus
3999
4271
  registrationMethod
4000
4272
  )
4001
4273
  );
4274
+ StageDispatchSnapshot<T>(this, handlers, dispatchCategory);
4002
4275
 
4003
4276
  return () =>
4004
4277
  {
@@ -4074,9 +4347,858 @@ namespace DxMessaging.Core.MessageBus
4074
4347
  {
4075
4348
  handler[messageHandler] = count - 1;
4076
4349
  }
4350
+ StageDispatchSnapshot<T>(this, handlers, dispatchCategory);
4077
4351
  };
4078
4352
  }
4079
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
+
4080
5202
  [MethodImpl(MethodImplOptions.AggressiveInlining)]
4081
5203
  private static List<KeyValuePair<int, HandlerCache>> GetOrAddMessageHandlerStack(
4082
5204
  HandlerCache<int, HandlerCache> cache,