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.
- package/.artifacts/SourceGenerators.Tests/TestResults/0e800bba-2376-4062-bb19-cf916d3083a1/coverage.cobertura.xml +2624 -0
- package/.artifacts/SourceGenerators.Tests/TestResults/260ab294-e640-4674-9ae9-29b5344c0540/coverage.cobertura.xml +2624 -0
- package/.artifacts/SourceGenerators.Tests/TestResults/31c02772-7d85-4466-a2c4-93742725076e/coverage.cobertura.xml +2624 -0
- package/.artifacts/SourceGenerators.Tests/TestResults/ca4d2ef2-0c53-49dc-91b5-039938571ed8/coverage.cobertura.xml +2624 -0
- package/.artifacts/SourceGenerators.Tests/TestResults/f6cadd7e-1bf5-44b0-9351-47426600fc69/coverage.cobertura.xml +2624 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/.msCoverageSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/CoverletSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.ApplicationInsights.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.CodeAnalysis.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.AdapterUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.CommunicationUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.CoreUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.CrossPlatEngine.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.PlatformAbstractions.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.TestPlatform.Utilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Extensions.MSBuild.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Extensions.Telemetry.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Extensions.VSTestBridge.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.Testing.Platform.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.VisualStudio.TestPlatform.Common.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/NUnit3.TestAdapter.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/Newtonsoft.Json.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.deps.json +872 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.runtimeconfig.json +13 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.engine.api.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.engine.core.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.engine.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.framework.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/nunit.framework.legacy.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/testcentric.engine.metadata.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/testhost.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/testhost.exe +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Debug/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/.msCoverageSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/CoverletSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.ApplicationInsights.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.CodeAnalysis.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Extensions.DependencyModel.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.AdapterUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.CommunicationUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.CoreUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.CrossPlatEngine.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.PlatformAbstractions.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.TestPlatform.Utilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Extensions.MSBuild.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Extensions.Telemetry.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Extensions.VSTestBridge.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.Testing.Platform.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.VisualStudio.TestPlatform.Common.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/NUnit3.TestAdapter.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/Newtonsoft.Json.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.deps.json +817 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.runtimeconfig.json +14 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.engine.api.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.engine.core.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.engine.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.framework.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/nunit.framework.legacy.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/testcentric.engine.metadata.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/testhost.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/testhost.exe +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/Release/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/.msCoverageSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/CoverletSourceRootsMapping_WallstopStudios.DxMessaging.SourceGenerators.Tests +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.ApplicationInsights.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.CodeAnalysis.CSharp.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.CodeAnalysis.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Extensions.DependencyModel.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.AdapterUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.CommunicationUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.CoreUtilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.CrossPlatEngine.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.PlatformAbstractions.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.TestPlatform.Utilities.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Extensions.MSBuild.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Extensions.Telemetry.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Extensions.TrxReport.Abstractions.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Extensions.VSTestBridge.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.Testing.Platform.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.VisualStudio.TestPlatform.Common.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/NUnit3.TestAdapter.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/Newtonsoft.Json.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.deps.json +872 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.runtimeconfig.json +13 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.engine.api.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.engine.core.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.engine.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.framework.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/nunit.framework.legacy.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/testcentric.engine.metadata.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/testhost.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/testhost.exe +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.TestPlatform.AdapterUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.Testing.Extensions.MSBuild.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.Testing.Extensions.Telemetry.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.Testing.Extensions.VSTestBridge.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.Testing.Platform.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/bin/net9.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/Wallstop.9ADB0525.Up2Date +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.AssemblyInfo.cs +22 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GeneratedMSBuildEditorConfig.editorconfig +25 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GlobalUsings.g.cs +8 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.FileListAbsolute.txt +28 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.sourcelink.json +1 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/ref/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Debug/net9.0/refint/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/Wallstop.9ADB0525.Up2Date +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.AssemblyInfo.cs +23 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GeneratedMSBuildEditorConfig.editorconfig +17 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GlobalUsings.g.cs +8 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.BuildWithSkipAnalyzers +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.FileListAbsolute.txt +84 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.sourcelink.json +1 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/ref/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/Release/net9.0/refint/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs +4 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/Wallstop.9ADB0525.Up2Date +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.AssemblyInfo.cs +22 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GeneratedMSBuildEditorConfig.editorconfig +23 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.GlobalUsings.g.cs +8 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj.FileListAbsolute.txt +55 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/WallstopStudios.DxMessaging.SourceGenerators.Tests.sourcelink.json +1 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/ref/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.artifacts/SourceGenerators.Tests/obj/net9.0/refint/WallstopStudios.DxMessaging.SourceGenerators.Tests.dll +0 -0
- package/.config/dotnet-tools.json +1 -1
- package/.csharpierignore +1 -1
- package/.cspell.json +219 -0
- package/.cursorrules +3 -0
- package/.devcontainer/.dockerignore +92 -0
- package/.devcontainer/Dockerfile +475 -0
- package/.devcontainer/devcontainer.json +54 -0
- package/.devcontainer/verify-tools.sh +183 -0
- package/.editorconfig +6 -0
- package/.gitattributes +12 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +95 -0
- package/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
- package/.github/copilot-instructions.md +3 -0
- package/.github/dependabot.yml +36 -2
- package/.github/pull_request_template.md +30 -0
- package/.github/release-drafter.yml +92 -0
- package/.github/scripts/check-markdown-links.ps1 +27 -3
- package/.github/scripts/check_markdown_links.py +132 -34
- package/.github/scripts/test_check_markdown_links.py +545 -0
- package/.github/workflows/actionlint.yml +37 -0
- package/.github/workflows/csharpier-autofix.yml +15 -6
- package/.github/workflows/deploy-docs.yml +118 -0
- package/.github/workflows/dotnet-tests.yml +2 -2
- package/.github/workflows/format-on-demand.yml +28 -18
- package/.github/workflows/json-format-check.yml +2 -1
- package/.github/workflows/lint-doc-links.yml +2 -1
- package/.github/workflows/markdown-json.yml +2 -1
- package/.github/workflows/markdown-link-text-check.yml +2 -1
- package/.github/workflows/markdown-link-validity.yml +2 -1
- package/.github/workflows/markdownlint.yml +25 -1
- package/.github/workflows/prettier-autofix.yml +20 -12
- package/.github/workflows/release-drafter.yml +135 -0
- package/.github/workflows/spellcheck.yml +56 -0
- package/.github/workflows/sync-wiki.yml +139 -0
- package/.github/workflows/update-dotnet-tools.yml +7 -3
- package/.github/workflows/validate-docs.yml +196 -0
- package/.github/workflows/validate-skills.yml +46 -0
- package/.github/workflows/yaml-format-lint.yml +2 -1
- package/.llm/context.md +269 -0
- package/.llm/skills/documentation/changelog-entry-writing.md +277 -0
- package/.llm/skills/documentation/changelog-management.md +190 -0
- package/.llm/skills/documentation/changelog-release-workflow.md +249 -0
- package/.llm/skills/documentation/documentation-code-samples.md +262 -0
- package/.llm/skills/documentation/documentation-style-guide.md +185 -0
- package/.llm/skills/documentation/documentation-update-workflow.md +146 -0
- package/.llm/skills/documentation/documentation-updates.md +146 -0
- package/.llm/skills/documentation/documentation-xml-docs.md +190 -0
- package/.llm/skills/documentation/external-url-fragment-validation.md +181 -0
- package/.llm/skills/documentation/github-actions-version-consistency.md +203 -0
- package/.llm/skills/documentation/link-quality-guidelines.md +267 -0
- package/.llm/skills/documentation/skill-file-sizing.md +260 -0
- package/.llm/skills/index.md +231 -0
- package/.llm/skills/performance/aggressive-inlining-performance-notes.md +94 -0
- package/.llm/skills/performance/aggressive-inlining.md +342 -0
- package/.llm/skills/performance/array-pooling-usage-examples.md +145 -0
- package/.llm/skills/performance/array-pooling.md +315 -0
- package/.llm/skills/performance/cache-eviction-builder.md +203 -0
- package/.llm/skills/performance/cache-eviction-implementation.md +340 -0
- package/.llm/skills/performance/cache-eviction-policies.md +176 -0
- package/.llm/skills/performance/collection-pooling.md +313 -0
- package/.llm/skills/performance/object-pooling-anti-patterns.md +144 -0
- package/.llm/skills/performance/object-pooling-usage-examples.md +114 -0
- package/.llm/skills/performance/object-pooling-variations.md +147 -0
- package/.llm/skills/performance/object-pooling.md +319 -0
- package/.llm/skills/performance/readonly-struct-cached-hash-performance-notes.md +91 -0
- package/.llm/skills/performance/readonly-struct-cached-hash.md +337 -0
- package/.llm/skills/performance/serializable-dictionary-property-drawer.md +147 -0
- package/.llm/skills/performance/serializable-dictionary-usage-examples.md +135 -0
- package/.llm/skills/performance/serializable-dictionary.md +281 -0
- package/.llm/skills/performance/singleton-autoload.md +111 -0
- package/.llm/skills/performance/singleton-patterns.md +165 -0
- package/.llm/skills/performance/singleton-runtime.md +187 -0
- package/.llm/skills/performance/singleton-scriptableobject.md +177 -0
- package/.llm/skills/performance/singleton-usage-examples.md +139 -0
- package/.llm/skills/performance/stringbuilder-pooling.md +319 -0
- package/.llm/skills/performance/yield-instruction-pooling.md +347 -0
- package/.llm/skills/scripting/cross-platform-compatibility.md +224 -0
- package/{Docs/Comparisons.md.meta → .llm/skills/scripting/cross-platform-compatibility.md.meta} +1 -1
- package/.llm/skills/scripting/powershell-best-practices.md +386 -0
- package/.llm/skills/scripting/shell-best-practices.md +335 -0
- package/.llm/skills/solid/collection-extensions-accessors.md +229 -0
- package/.llm/skills/solid/collection-extensions-shuffle.md +144 -0
- package/.llm/skills/solid/collection-extensions-type-specialization.md +168 -0
- package/.llm/skills/solid/collection-extensions.md +144 -0
- package/.llm/skills/solid/fluent-builder-pattern-templates.md +117 -0
- package/.llm/skills/solid/fluent-builder-pattern-usage-examples.md +128 -0
- package/.llm/skills/solid/fluent-builder-pattern.md +322 -0
- package/.llm/skills/solid/iequatable-implementation-usage.md +111 -0
- package/.llm/skills/solid/iequatable-implementation-variants.md +201 -0
- package/.llm/skills/solid/iequatable-implementation.md +239 -0
- package/.llm/skills/solid/try-pattern-apis-usage.md +136 -0
- package/.llm/skills/solid/try-pattern-apis-variants.md +233 -0
- package/.llm/skills/solid/try-pattern-apis.md +220 -0
- package/.llm/skills/specification.md +465 -0
- package/.llm/skills/templates/skill-template.md +143 -0
- package/.llm/skills/testing/comprehensive-test-coverage.md +141 -0
- package/.llm/skills/testing/data-driven-tests-sources.md +255 -0
- package/.llm/skills/testing/data-driven-tests-usage.md +107 -0
- package/.llm/skills/testing/data-driven-tests.md +197 -0
- package/.llm/skills/testing/git-workflow-robustness.md +369 -0
- package/.llm/skills/testing/script-test-coverage.md +259 -0
- package/{Docs/DesignAndArchitecture.md.meta → .llm/skills/testing/script-test-coverage.md.meta} +1 -1
- package/.llm/skills/testing/shared-test-fixtures-generic-base.md +185 -0
- package/.llm/skills/testing/shared-test-fixtures-reference-counting.md +252 -0
- package/.llm/skills/testing/shared-test-fixtures.md +165 -0
- package/.llm/skills/testing/test-base-class-cleanup-usage.md +218 -0
- package/.llm/skills/testing/test-base-class-cleanup.md +323 -0
- package/.llm/skills/testing/test-categories-execution.md +142 -0
- package/.llm/skills/testing/test-categories.md +287 -0
- package/.llm/skills/testing/test-coverage-data-driven.md +172 -0
- package/.llm/skills/testing/test-coverage-organization-assertions.md +171 -0
- package/.llm/skills/testing/test-coverage-scenario-categories.md +223 -0
- package/.llm/skills/testing/test-coverage-unity-anti-patterns.md +232 -0
- package/.llm/skills/testing/test-diagnostics-patterns.md +189 -0
- package/.llm/skills/testing/test-diagnostics-usage.md +196 -0
- package/.llm/skills/testing/test-diagnostics.md +247 -0
- package/.llm/skills/testing/test-failure-investigation-procedure.md +216 -0
- package/.llm/skills/testing/test-failure-investigation-root-causes.md +186 -0
- package/.llm/skills/testing/test-failure-investigation.md +119 -0
- package/.llm/skills/testing/test-invalid-skill.md +26 -0
- package/.lychee.toml +3 -1
- package/.markdownlint.json +2 -0
- package/.markdownlint.jsonc +2 -0
- package/.markdownlintignore +7 -7
- package/.pre-commit-config.yaml +88 -8
- package/.prettierignore +21 -21
- package/.vs/ProjectEvaluation/com.wallstop-studios.dxmessaging.metadata.v10.bin +0 -0
- package/.vs/ProjectEvaluation/com.wallstop-studios.dxmessaging.projects.v10.bin +0 -0
- package/.vs/ProjectEvaluation/com.wallstop-studios.dxmessaging.strings.v10.bin +0 -0
- package/.vs/ProjectSettings.json +3 -0
- package/.vs/VSWorkspaceState.json +9 -0
- package/.vs/com.wallstop-studios.dxmessaging/CopilotIndices/17.14.1347.20289/CodeChunks.db +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/CopilotIndices/17.14.1347.20289/SemanticSymbols.db +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/DesignTimeBuild/.dtbcache.v2 +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/FileContentIndex/41b4588f-fa0f-484b-a29b-733b6ce84c26.vsidx +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/FileContentIndex/9a73875f-5693-4296-95fd-0672bf61c5ac.vsidx +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/FileContentIndex/fd44ab3e-7015-4c20-918a-a0a916be8934.vsidx +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/v17/.futdcache.v2 +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/v17/.wsuo +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/v17/DocumentLayout.backup.json +82 -0
- package/.vs/com.wallstop-studios.dxmessaging/v17/DocumentLayout.json +82 -0
- package/.vs/com.wallstop-studios.dxmessaging/v17/TestStore/0/000.testlog +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/v17/TestStore/0/testlog.manifest +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/v17/csharpier.json +1 -0
- package/.vs/com.wallstop-studios.dxmessaging/v18/.futdcache.v2 +0 -0
- package/.vs/com.wallstop-studios.dxmessaging/v18/DocumentLayout.backup.json +86 -0
- package/.vs/com.wallstop-studios.dxmessaging/v18/DocumentLayout.json +86 -0
- package/.vs/slnx.sqlite +0 -0
- package/AGENTS.md +1 -50
- package/CHANGELOG.md +31 -0
- package/CLAUDE.md +3 -0
- package/{Docs/Compatibility.md.meta → CLAUDE.md.meta} +1 -1
- package/CONTRIBUTING.md +14 -4
- package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
- package/Editor/Settings/DxMessagingSettings.cs +2 -3
- package/README.md +144 -109
- package/Runtime/Core/MessageBus/IMessageBus.cs +20 -1
- package/Runtime/Core/MessageBus/MessageBus.cs +2348 -1226
- package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs +4 -2
- package/Runtime/Core/MessageHandler.cs +519 -6
- package/Samples~/DI/README.md +2 -2
- package/Samples~/Mini Combat/README.md +7 -7
- package/Samples~/Mini Combat/Walkthrough.md +12 -12
- package/Samples~/UI Buttons + Inspector/README.md +8 -8
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/CopilotIndices/17.14.1231.31060/CodeChunks.db +0 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/CopilotIndices/17.14.1231.31060/SemanticSymbols.db +0 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/DesignTimeBuild/.dtbcache.v2 +0 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/FileContentIndex/c90afd9b-d899-4546-bd92-ab874e448437.vsidx +0 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/.vs/WallstopStudios.DxMessaging.SourceGenerators/v17/.futdcache.v2 +0 -0
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/DocsSnippetCompilationTests.cs +355 -4
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.Tests/WallstopStudios.DxMessaging.SourceGenerators.Tests.csproj +2 -2
- package/Tests/Runtime/Benchmarks/BenchmarkSession.cs +6 -3
- package/Tests/Runtime/Core/BroadcastTests.cs +80 -66
- package/Tests/Runtime/Core/CyclicBufferTests.cs +284 -14
- package/Tests/Runtime/Core/DiagnosticsTests.cs +72 -0
- package/Tests/Runtime/Core/DxMessagingStaticStateTests.cs +1 -1
- package/Tests/Runtime/Core/Extensions/MessageBusExtensionsTests.cs +12 -31
- package/Tests/Runtime/Core/GlobalAcceptAllTests.cs +26 -26
- package/Tests/Runtime/Core/MutationDedupeTests.cs +24 -24
- package/Tests/Runtime/Core/MutationDuringEmissionTests.cs +126 -9
- package/Tests/Runtime/Core/MutationHighVolumeStressTests.cs +512 -0
- package/Tests/Runtime/Core/MutationHighVolumeStressTests.cs.meta +11 -0
- package/Tests/Runtime/Core/NominalTests.cs +82 -81
- package/Tests/Runtime/Core/OrderingManyRegistrationsTests.cs +683 -0
- package/Tests/Runtime/Core/OrderingManyRegistrationsTests.cs.meta +11 -0
- package/Tests/Runtime/Core/PostProcessorTests.cs +108 -99
- package/Tests/Runtime/Core/RegistrationTests.cs +159 -159
- package/Tests/Runtime/Core/TargetedTests.cs +80 -66
- package/Tests/Runtime/Core/UntargetedTests.cs +25 -20
- package/Tests/Runtime/Integrations/Zenject/ZenjectIntegrationTests.cs +0 -1
- package/coverage/clover.xml +6 -0
- package/{Docs/Advanced.md.meta → coverage/clover.xml.meta} +7 -7
- package/coverage/coverage-final.json +1 -0
- package/coverage/coverage-final.json.meta +7 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/base.css.meta +7 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/block-navigation.js.meta +7 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/favicon.png.meta +127 -0
- package/coverage/lcov-report/index.html +101 -0
- package/coverage/lcov-report/index.html.meta +7 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.css.meta +7 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/prettify.js.meta +7 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sort-arrow-sprite.png.meta +127 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov-report/sorter.js.meta +7 -0
- package/coverage/lcov-report/transform-docs-to-wiki.js.html +1312 -0
- package/coverage/lcov-report/transform-docs-to-wiki.js.html.meta +7 -0
- package/coverage/lcov-report/vendor.meta +8 -0
- package/coverage/lcov-report.meta +8 -0
- package/coverage/lcov.info +0 -0
- package/coverage/lcov.info.meta +7 -0
- package/{Docs/EmitShorthands.md → docs/advanced/emit-shorthands.md} +17 -17
- package/docs/advanced/emit-shorthands.md.meta +7 -0
- package/{Docs/MessageBusProviders.md → docs/advanced/message-bus-providers.md} +5 -4
- package/docs/advanced/message-bus-providers.md.meta +7 -0
- package/docs/advanced/registration-builders.md +444 -0
- package/docs/advanced/registration-builders.md.meta +7 -0
- package/{Docs/RuntimeConfiguration.md → docs/advanced/runtime-configuration.md} +5 -4
- package/docs/advanced/runtime-configuration.md.meta +7 -0
- package/{Docs/StringMessages.md → docs/advanced/string-messages.md} +2 -2
- package/docs/advanced/string-messages.md.meta +7 -0
- package/docs/advanced.meta +8 -0
- package/{Docs/Comparisons.md → docs/architecture/comparisons.md} +71 -66
- package/docs/architecture/comparisons.md.meta +7 -0
- package/{Docs/DesignAndArchitecture.md → docs/architecture/design-and-architecture.md} +17 -16
- package/docs/architecture/design-and-architecture.md.meta +7 -0
- package/docs/architecture/performance.md +53 -0
- package/docs/architecture/performance.md.meta +7 -0
- package/docs/architecture.meta +8 -0
- package/{Docs/InterceptorsAndOrdering.md → docs/concepts/interceptors-and-ordering.md} +58 -55
- package/docs/concepts/interceptors-and-ordering.md.meta +7 -0
- package/{Docs/ListeningPatterns.md → docs/concepts/listening-patterns.md} +17 -15
- package/docs/concepts/listening-patterns.md.meta +7 -0
- package/{Docs/MessageTypes.md → docs/concepts/message-types.md} +19 -13
- package/docs/concepts/message-types.md.meta +7 -0
- package/{Docs/TargetingAndContext.md → docs/concepts/targeting-and-context.md} +10 -10
- package/docs/concepts/targeting-and-context.md.meta +7 -0
- package/docs/concepts.meta +8 -0
- package/docs/examples/end-to-end-scene-transitions.md.meta +7 -0
- package/{Docs/EndToEnd.md → docs/examples/end-to-end.md} +1 -1
- package/docs/examples/end-to-end.md.meta +7 -0
- package/docs/examples.meta +8 -0
- package/{Docs/GettingStarted.md → docs/getting-started/getting-started.md} +30 -28
- package/docs/getting-started/getting-started.md.meta +7 -0
- package/docs/getting-started/index.md +316 -0
- package/docs/getting-started/index.md.meta +7 -0
- package/docs/getting-started/install.md +89 -0
- package/docs/getting-started/install.md.meta +7 -0
- package/{Docs/Overview.md → docs/getting-started/overview.md} +36 -35
- package/docs/getting-started/overview.md.meta +7 -0
- package/{Docs/QuickStart.md → docs/getting-started/quick-start.md} +42 -47
- package/docs/getting-started/quick-start.md.meta +7 -0
- package/{Docs/VisualGuide.md → docs/getting-started/visual-guide.md} +117 -108
- package/docs/getting-started/visual-guide.md.meta +7 -0
- package/docs/getting-started.meta +8 -0
- package/{Docs/Advanced.md → docs/guides/advanced.md} +4 -4
- package/docs/guides/advanced.md.meta +7 -0
- package/docs/guides/diagnostics.md +300 -0
- package/docs/guides/diagnostics.md.meta +7 -0
- package/{Docs/MigrationGuide.md → docs/guides/migration-guide.md} +3 -3
- package/docs/guides/migration-guide.md.meta +7 -0
- package/{Docs/Patterns.md → docs/guides/patterns.md} +22 -22
- package/docs/guides/patterns.md.meta +7 -0
- package/docs/guides/testing.md +243 -0
- package/docs/guides/testing.md.meta +7 -0
- package/{Docs/UnityIntegration.md → docs/guides/unity-integration.md} +13 -13
- package/docs/guides/unity-integration.md.meta +7 -0
- package/docs/guides.meta +8 -0
- package/docs/hooks.py +168 -0
- package/docs/hooks.py.meta +7 -0
- package/docs/images/DxMessaging-banner.svg +119 -0
- package/docs/images/DxMessaging-banner.svg.meta +7 -0
- package/docs/images.meta +8 -0
- package/docs/index.md +61 -0
- package/docs/integrations/index.md +66 -0
- package/docs/integrations/index.md.meta +7 -0
- package/{Docs/Integrations/Reflex.md → docs/integrations/reflex.md} +43 -18
- package/{Docs/Integrations/VContainer.md → docs/integrations/vcontainer.md} +18 -9
- package/{Docs/Integrations/Zenject.md → docs/integrations/zenject.md} +6 -6
- package/docs/javascripts/csharp-highlight.js +246 -0
- package/docs/javascripts/csharp-highlight.js.meta +7 -0
- package/docs/javascripts/mermaid-config.js +347 -0
- package/docs/javascripts/mermaid-config.js.meta +7 -0
- package/docs/javascripts.meta +8 -0
- package/{Docs/Compatibility.md → docs/reference/compatibility.md} +7 -7
- package/docs/reference/compatibility.md.meta +7 -0
- package/{Docs/FAQ.md → docs/reference/faq.md} +21 -26
- package/docs/reference/faq.md.meta +7 -0
- package/{Docs/Glossary.md → docs/reference/glossary.md} +18 -13
- package/docs/reference/glossary.md.meta +7 -0
- package/{Docs/Helpers.md → docs/reference/helpers.md} +409 -81
- package/docs/reference/helpers.md.meta +7 -0
- package/{Docs/QuickReference.md → docs/reference/quick-reference.md} +128 -58
- package/docs/reference/quick-reference.md.meta +7 -0
- package/docs/reference/reference.md +371 -0
- package/docs/reference/reference.md.meta +7 -0
- package/{Docs/Troubleshooting.md → docs/reference/troubleshooting.md} +12 -17
- package/docs/reference/troubleshooting.md.meta +7 -0
- package/docs/reference.meta +8 -0
- package/docs/stylesheets/extra.css +485 -0
- package/docs/stylesheets/extra.css.meta +7 -0
- package/docs/stylesheets.meta +8 -0
- package/mkdocs.yml +198 -0
- package/mkdocs.yml.meta +7 -0
- package/package.json +8 -6
- package/requirements-docs.txt +23 -0
- package/requirements-docs.txt.meta +7 -0
- package/scripts/__tests__/sync-banner-version.test.js +606 -0
- package/scripts/__tests__/sync-banner-version.test.js.meta +7 -0
- package/scripts/__tests__.meta +8 -0
- package/scripts/check-eol.js +290 -19
- package/scripts/check-eol.ps1 +103 -15
- package/scripts/fix-eol.js +78 -11
- package/scripts/generate-skills-index.js +512 -0
- package/scripts/generate-skills-index.js.meta +7 -0
- package/scripts/generate-skills-index.ps1 +38 -0
- package/scripts/generate-skills-index.ps1.meta +7 -0
- package/scripts/hooks/pre-commit +59 -0
- package/scripts/hooks/pre-commit.meta +7 -0
- package/scripts/hooks.meta +8 -0
- package/scripts/sync-banner-version.ps1 +133 -0
- package/scripts/sync-banner-version.ps1.meta +7 -0
- package/scripts/sync-banner-version.sh +16 -0
- package/scripts/sync-banner-version.sh.meta +7 -0
- package/scripts/validate-skills.js +557 -0
- package/scripts/validate-skills.js.meta +7 -0
- package/scripts/wiki/__tests__/transform.test.js +380 -0
- package/scripts/wiki/__tests__/transform.test.js.meta +7 -0
- package/scripts/wiki/__tests__.meta +7 -0
- package/scripts/wiki/generate-wiki-sidebar.js +122 -0
- package/{Docs/EmitShorthands.md.meta → scripts/wiki/generate-wiki-sidebar.js.meta} +8 -2
- package/scripts/wiki/transform-docs-to-wiki.js +409 -0
- package/scripts/wiki/transform-docs-to-wiki.js.meta +7 -0
- package/scripts/wiki.meta +8 -0
- package/site/404.html +1 -0
- package/site/404.html.meta +7 -0
- package/site/advanced/emit-shorthands/index.html +212 -0
- package/site/advanced/emit-shorthands/index.html.meta +7 -0
- package/site/advanced/emit-shorthands.meta +8 -0
- package/site/advanced/message-bus-providers/index.html +241 -0
- package/site/advanced/message-bus-providers/index.html.meta +7 -0
- package/site/advanced/message-bus-providers.meta +8 -0
- package/site/advanced/registration-builders/index.html +228 -0
- package/site/advanced/registration-builders/index.html.meta +7 -0
- package/site/advanced/registration-builders.meta +8 -0
- package/site/advanced/runtime-configuration/index.html +196 -0
- package/site/advanced/runtime-configuration/index.html.meta +7 -0
- package/site/advanced/runtime-configuration.meta +8 -0
- package/site/advanced/string-messages/index.html +29 -0
- package/site/advanced/string-messages/index.html.meta +7 -0
- package/site/advanced/string-messages.meta +8 -0
- package/site/advanced.meta +8 -0
- package/site/architecture/comparisons/index.html +356 -0
- package/site/architecture/comparisons/index.html.meta +7 -0
- package/site/architecture/comparisons.meta +8 -0
- package/site/architecture/design-and-architecture/index.html +34 -0
- package/site/architecture/design-and-architecture/index.html.meta +7 -0
- package/site/architecture/design-and-architecture.meta +8 -0
- package/site/architecture/performance/index.html +1 -0
- package/site/architecture/performance/index.html.meta +7 -0
- package/site/architecture/performance.meta +8 -0
- package/site/architecture.meta +8 -0
- package/site/assets/images/favicon.png +0 -0
- package/site/assets/images/favicon.png.meta +127 -0
- package/site/assets/images.meta +8 -0
- package/site/assets/javascripts/bundle.79ae519e.min.js +16 -0
- package/site/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
- package/site/assets/javascripts/bundle.79ae519e.min.js.map.meta +7 -0
- package/site/assets/javascripts/bundle.79ae519e.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.ar.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.da.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.de.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.du.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.el.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.es.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.fi.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.fr.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.he.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.hi.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.hu.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.hy.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.it.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.ja.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.jp.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.kn.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.ko.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.multi.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.nl.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.no.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.pt.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.ro.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.ru.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.sa.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.sv.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.ta.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.te.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.th.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
- package/site/assets/javascripts/lunr/min/lunr.tr.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.vi.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
- package/site/assets/javascripts/lunr/min/lunr.zh.min.js.meta +7 -0
- package/site/assets/javascripts/lunr/min.meta +8 -0
- package/site/assets/javascripts/lunr/tinyseg.js +206 -0
- package/site/assets/javascripts/lunr/tinyseg.js.meta +7 -0
- package/site/assets/javascripts/lunr/wordcut.js +6708 -0
- package/site/assets/javascripts/lunr/wordcut.js.meta +7 -0
- package/site/assets/javascripts/lunr.meta +8 -0
- package/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
- package/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
- package/site/assets/javascripts/workers/search.2c215733.min.js.map.meta +7 -0
- package/site/assets/javascripts/workers/search.2c215733.min.js.meta +7 -0
- package/site/assets/javascripts/workers.meta +8 -0
- package/site/assets/javascripts.meta +8 -0
- package/site/assets/stylesheets/main.484c7ddc.min.css +1 -0
- package/site/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
- package/site/assets/stylesheets/main.484c7ddc.min.css.map.meta +7 -0
- package/site/assets/stylesheets/main.484c7ddc.min.css.meta +7 -0
- package/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
- package/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
- package/site/assets/stylesheets/palette.ab4e12ef.min.css.map.meta +7 -0
- package/site/assets/stylesheets/palette.ab4e12ef.min.css.meta +7 -0
- package/site/assets/stylesheets.meta +8 -0
- package/site/assets.meta +8 -0
- package/site/concepts/interceptors-and-ordering/index.html +352 -0
- package/site/concepts/interceptors-and-ordering/index.html.meta +7 -0
- package/site/concepts/interceptors-and-ordering.meta +8 -0
- package/site/concepts/listening-patterns/index.html +193 -0
- package/site/concepts/listening-patterns/index.html.meta +7 -0
- package/site/concepts/listening-patterns.meta +8 -0
- package/site/concepts/message-types/index.html +111 -0
- package/site/concepts/message-types/index.html.meta +7 -0
- package/site/concepts/message-types.meta +8 -0
- package/site/concepts/targeting-and-context/index.html +201 -0
- package/site/concepts/targeting-and-context/index.html.meta +7 -0
- package/site/concepts/targeting-and-context.meta +8 -0
- package/site/concepts.meta +8 -0
- package/site/css/timeago.css +15 -0
- package/site/css/timeago.css.meta +7 -0
- package/site/css.meta +8 -0
- package/site/examples/end-to-end/index.html +85 -0
- package/site/examples/end-to-end/index.html.meta +7 -0
- package/site/examples/end-to-end-scene-transitions/index.html +84 -0
- package/site/examples/end-to-end-scene-transitions/index.html.meta +7 -0
- package/site/examples/end-to-end-scene-transitions.meta +8 -0
- package/site/examples/end-to-end.meta +8 -0
- package/site/examples.meta +8 -0
- package/site/getting-started/getting-started/index.html +66 -0
- package/site/getting-started/getting-started/index.html.meta +7 -0
- package/site/getting-started/getting-started.meta +8 -0
- package/site/getting-started/index.html +29 -0
- package/site/getting-started/index.html.meta +7 -0
- package/site/getting-started/install/index.html +8 -0
- package/site/getting-started/install/index.html.meta +7 -0
- package/site/getting-started/install.meta +8 -0
- package/site/getting-started/overview/index.html +33 -0
- package/site/getting-started/overview/index.html.meta +7 -0
- package/site/getting-started/overview.meta +8 -0
- package/site/getting-started/quick-start/index.html +81 -0
- package/site/getting-started/quick-start/index.html.meta +7 -0
- package/site/getting-started/quick-start.meta +8 -0
- package/site/getting-started/visual-guide/index.html +256 -0
- package/site/getting-started/visual-guide/index.html.meta +7 -0
- package/site/getting-started/visual-guide.meta +8 -0
- package/site/getting-started.meta +8 -0
- package/site/guides/advanced/index.html +119 -0
- package/site/guides/advanced/index.html.meta +7 -0
- package/site/guides/advanced.meta +8 -0
- package/site/guides/diagnostics/index.html +110 -0
- package/site/guides/diagnostics/index.html.meta +7 -0
- package/site/guides/diagnostics.meta +8 -0
- package/site/guides/migration-guide/index.html +199 -0
- package/site/guides/migration-guide/index.html.meta +7 -0
- package/site/guides/migration-guide.meta +8 -0
- package/site/guides/patterns/index.html +545 -0
- package/site/guides/patterns/index.html.meta +7 -0
- package/site/guides/patterns.meta +8 -0
- package/site/guides/testing/index.html +153 -0
- package/site/guides/testing/index.html.meta +7 -0
- package/site/guides/testing.meta +8 -0
- package/site/guides/unity-integration/index.html +67 -0
- package/site/guides/unity-integration/index.html.meta +7 -0
- package/site/guides/unity-integration.meta +8 -0
- package/site/guides.meta +8 -0
- package/site/hooks.py +168 -0
- package/site/hooks.py.meta +7 -0
- package/site/index.html +17 -0
- package/site/index.html.meta +7 -0
- package/site/integrations/index.html +8 -0
- package/site/integrations/index.html.meta +7 -0
- package/site/integrations/reflex/index.html +186 -0
- package/site/integrations/reflex/index.html.meta +7 -0
- package/site/integrations/reflex.meta +8 -0
- package/site/integrations/vcontainer/index.html +192 -0
- package/site/integrations/vcontainer/index.html.meta +7 -0
- package/site/integrations/vcontainer.meta +8 -0
- package/site/integrations/zenject/index.html +197 -0
- package/site/integrations/zenject/index.html.meta +7 -0
- package/site/integrations/zenject.meta +8 -0
- package/site/integrations.meta +8 -0
- package/site/javascripts/csharp-highlight.js +246 -0
- package/site/javascripts/csharp-highlight.js.meta +7 -0
- package/site/javascripts/mermaid-config.js +347 -0
- package/site/javascripts/mermaid-config.js.meta +7 -0
- package/site/javascripts.meta +8 -0
- package/site/js/timeago.min.js +2 -0
- package/site/js/timeago.min.js.meta +7 -0
- package/site/js/timeago_mkdocs_material.js +33 -0
- package/site/js/timeago_mkdocs_material.js.meta +7 -0
- package/site/js.meta +8 -0
- package/site/reference/compatibility/index.html +1 -0
- package/site/reference/compatibility/index.html.meta +7 -0
- package/site/reference/compatibility.meta +8 -0
- package/site/reference/faq/index.html +1 -0
- package/site/reference/faq/index.html.meta +7 -0
- package/site/reference/faq.meta +8 -0
- package/site/reference/glossary/index.html +55 -0
- package/site/reference/glossary/index.html.meta +7 -0
- package/site/reference/glossary.meta +8 -0
- package/site/reference/helpers/index.html +475 -0
- package/site/reference/helpers/index.html.meta +7 -0
- package/site/reference/helpers.meta +8 -0
- package/site/reference/quick-reference/index.html +138 -0
- package/site/reference/quick-reference/index.html.meta +7 -0
- package/site/reference/quick-reference.meta +8 -0
- package/site/reference/reference/index.html +194 -0
- package/site/reference/reference/index.html.meta +7 -0
- package/site/reference/reference.meta +8 -0
- package/site/reference/troubleshooting/index.html +1 -0
- package/site/reference/troubleshooting/index.html.meta +7 -0
- package/site/reference/troubleshooting.meta +8 -0
- package/site/reference.meta +8 -0
- package/site/search/search_index.json +1 -0
- package/site/search/search_index.json.meta +7 -0
- package/site/search.meta +8 -0
- package/site/sitemap.xml +155 -0
- package/site/sitemap.xml.gz +0 -0
- package/site/sitemap.xml.gz.meta +7 -0
- package/site/sitemap.xml.meta +7 -0
- package/site/stylesheets/extra.css +485 -0
- package/site/stylesheets/extra.css.meta +7 -0
- package/site/stylesheets.meta +8 -0
- package/.github/workflows/npm-publish.yml +0 -75
- package/Docs/Diagnostics.md +0 -61
- package/Docs/Diagnostics.md.meta +0 -7
- package/Docs/EndToEnd.md.meta +0 -7
- package/Docs/EndToEndSceneTransitions.md.meta +0 -7
- package/Docs/FAQ.md.meta +0 -7
- package/Docs/GettingStarted.md.meta +0 -7
- package/Docs/Glossary.md.meta +0 -7
- package/Docs/Helpers.md.meta +0 -7
- package/Docs/Index.md +0 -305
- package/Docs/Install.md +0 -60
- package/Docs/Install.md.meta +0 -7
- package/Docs/InterceptorsAndOrdering.md.meta +0 -7
- package/Docs/ListeningPatterns.md.meta +0 -7
- package/Docs/MessageBusProviders.md.meta +0 -7
- package/Docs/MessageTypes.md.meta +0 -7
- package/Docs/MigrationGuide.md.meta +0 -7
- package/Docs/Overview.md.meta +0 -7
- package/Docs/Patterns.md.meta +0 -7
- package/Docs/Performance.md +0 -35
- package/Docs/Performance.md.meta +0 -7
- package/Docs/QuickReference.md.meta +0 -7
- package/Docs/QuickStart.md.meta +0 -7
- package/Docs/Reference.md +0 -88
- package/Docs/Reference.md.meta +0 -7
- package/Docs/RuntimeConfiguration.md.meta +0 -7
- package/Docs/StringMessages.md.meta +0 -7
- package/Docs/TargetingAndContext.md.meta +0 -7
- package/Docs/Troubleshooting.md.meta +0 -7
- package/Docs/UnityIntegration.md.meta +0 -7
- package/Docs/VisualGuide.md.meta +0 -7
- /package/{Docs/EndToEndSceneTransitions.md → docs/examples/end-to-end-scene-transitions.md} +0 -0
- /package/{Docs/Index.md.meta → docs/index.md.meta} +0 -0
- /package/{Docs/Integrations/Reflex.md.meta → docs/integrations/reflex.md.meta} +0 -0
- /package/{Docs/Integrations/VContainer.md.meta → docs/integrations/vcontainer.md.meta} +0 -0
- /package/{Docs/Integrations/Zenject.md.meta → docs/integrations/zenject.md.meta} +0 -0
- /package/{Docs/Integrations.meta → docs/integrations.meta} +0 -0
- /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<
|
|
169
|
-
|
|
170
|
-
private readonly MessageCache<
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
636
|
+
InterceptorCache<object> prioritizedInterceptors =
|
|
371
637
|
_untargetedInterceptsByType.GetOrAdd<T>();
|
|
372
638
|
|
|
373
639
|
if (
|
|
374
|
-
!
|
|
375
|
-
|
|
376
|
-
out
|
|
640
|
+
!_uniqueInterceptorsAndPriorities.TryGetValue(
|
|
641
|
+
interceptor,
|
|
642
|
+
out Dictionary<int, int> priorityCount
|
|
377
643
|
)
|
|
378
644
|
)
|
|
379
645
|
{
|
|
380
|
-
|
|
381
|
-
|
|
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
|
-
!
|
|
395
|
-
|
|
396
|
-
out
|
|
651
|
+
!prioritizedInterceptors.handlers.TryGetValue(
|
|
652
|
+
priority,
|
|
653
|
+
out List<object> interceptors
|
|
397
654
|
)
|
|
398
655
|
)
|
|
399
656
|
{
|
|
400
|
-
|
|
401
|
-
|
|
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(
|
|
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
|
-
|
|
758
|
+
InterceptorCache<object> prioritizedInterceptors =
|
|
505
759
|
_targetedInterceptsByType.GetOrAdd<T>();
|
|
506
760
|
|
|
507
761
|
if (
|
|
508
|
-
!
|
|
509
|
-
|
|
510
|
-
out
|
|
762
|
+
!_uniqueInterceptorsAndPriorities.TryGetValue(
|
|
763
|
+
interceptor,
|
|
764
|
+
out Dictionary<int, int> priorityCount
|
|
511
765
|
)
|
|
512
766
|
)
|
|
513
767
|
{
|
|
514
|
-
|
|
515
|
-
|
|
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
|
-
!
|
|
529
|
-
|
|
530
|
-
out
|
|
773
|
+
!prioritizedInterceptors.handlers.TryGetValue(
|
|
774
|
+
priority,
|
|
775
|
+
out List<object> interceptors
|
|
531
776
|
)
|
|
532
777
|
)
|
|
533
778
|
{
|
|
534
|
-
|
|
535
|
-
|
|
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(
|
|
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
|
-
|
|
880
|
+
InterceptorCache<object> prioritizedInterceptors =
|
|
639
881
|
_broadcastInterceptsByType.GetOrAdd<T>();
|
|
640
882
|
|
|
641
883
|
if (
|
|
642
|
-
!
|
|
643
|
-
|
|
644
|
-
out
|
|
884
|
+
!_uniqueInterceptorsAndPriorities.TryGetValue(
|
|
885
|
+
interceptor,
|
|
886
|
+
out Dictionary<int, int> priorityCount
|
|
645
887
|
)
|
|
646
888
|
)
|
|
647
889
|
{
|
|
648
|
-
|
|
649
|
-
|
|
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
|
-
!
|
|
663
|
-
|
|
664
|
-
out
|
|
895
|
+
!prioritizedInterceptors.handlers.TryGetValue(
|
|
896
|
+
priority,
|
|
897
|
+
out List<object> interceptors
|
|
665
898
|
)
|
|
666
899
|
)
|
|
667
900
|
{
|
|
668
|
-
|
|
669
|
-
|
|
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(
|
|
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>
|
|
1124
|
+
out HandlerCache<int, HandlerCache> untargetedPostHandlers
|
|
894
1125
|
)
|
|
895
|
-
&&
|
|
1126
|
+
&& untargetedPostHandlers.handlers.Count > 0
|
|
896
1127
|
)
|
|
897
1128
|
{
|
|
898
|
-
|
|
899
|
-
|
|
1129
|
+
untargetedPostSnapshot = AcquireDispatchSnapshot<TMessage>(
|
|
1130
|
+
this,
|
|
1131
|
+
untargetedPostHandlers,
|
|
1132
|
+
DispatchCategory.UntargetedPost,
|
|
900
1133
|
_emissionId
|
|
901
1134
|
);
|
|
902
|
-
|
|
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
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
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
|
-
|
|
952
|
-
RunUntargetedPostProcessing(ref typedMessage, entry.Key, entry.Value);
|
|
953
|
-
break;
|
|
1175
|
+
continue;
|
|
954
1176
|
}
|
|
955
|
-
|
|
1177
|
+
|
|
1178
|
+
foundAnyHandlers = true;
|
|
1179
|
+
int priority = bucket.priority;
|
|
1180
|
+
switch (entryCount)
|
|
956
1181
|
{
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
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
|
-
|
|
1218
|
+
|
|
1219
|
+
for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
|
|
964
1220
|
{
|
|
965
|
-
|
|
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>>
|
|
1284
|
+
out Dictionary<InstanceId, HandlerCache<int, HandlerCache>> targetedPostHandlers
|
|
1127
1285
|
)
|
|
1128
|
-
&&
|
|
1286
|
+
&& targetedPostHandlers.TryGetValue(
|
|
1129
1287
|
target,
|
|
1130
|
-
out HandlerCache<int, HandlerCache>
|
|
1288
|
+
out HandlerCache<int, HandlerCache> targetedPostByPriority
|
|
1131
1289
|
)
|
|
1132
|
-
&&
|
|
1290
|
+
&& targetedPostByPriority.handlers.Count > 0
|
|
1133
1291
|
)
|
|
1134
1292
|
{
|
|
1135
|
-
|
|
1136
|
-
|
|
1293
|
+
targetedPostSnapshot = AcquireDispatchSnapshot<TMessage>(
|
|
1294
|
+
this,
|
|
1295
|
+
targetedPostByPriority,
|
|
1296
|
+
DispatchCategory.TargetedPost,
|
|
1137
1297
|
_emissionId
|
|
1138
1298
|
);
|
|
1139
|
-
|
|
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>
|
|
1303
|
+
out HandlerCache<int, HandlerCache> targetedWithoutTargetingHandlers
|
|
1162
1304
|
)
|
|
1163
|
-
&&
|
|
1305
|
+
&& targetedWithoutTargetingHandlers.handlers.Count > 0
|
|
1164
1306
|
)
|
|
1165
1307
|
{
|
|
1166
|
-
|
|
1167
|
-
|
|
1308
|
+
targetedWithoutTargetingPostSnapshot = AcquireDispatchSnapshot<TMessage>(
|
|
1309
|
+
this,
|
|
1310
|
+
targetedWithoutTargetingHandlers,
|
|
1311
|
+
DispatchCategory.TargetedWithoutTargetingPost,
|
|
1168
1312
|
_emissionId
|
|
1169
1313
|
);
|
|
1170
|
-
|
|
1171
|
-
|
|
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
|
-
&&
|
|
1548
|
+
&& sortedHandlers.handlers.Count > 0
|
|
1420
1549
|
)
|
|
1421
1550
|
{
|
|
1422
|
-
|
|
1423
|
-
|
|
1551
|
+
DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
|
|
1552
|
+
this,
|
|
1424
1553
|
sortedHandlers,
|
|
1554
|
+
DispatchCategory.Targeted,
|
|
1425
1555
|
_emissionId
|
|
1426
1556
|
);
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1568
|
+
|
|
1569
|
+
foundAnyHandlers = true;
|
|
1570
|
+
int priority = bucket.priority;
|
|
1571
|
+
switch (entryCount)
|
|
1445
1572
|
{
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
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
|
-
|
|
1609
|
+
|
|
1610
|
+
for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
|
|
1455
1611
|
{
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1652
|
+
|
|
1653
|
+
foundAnyHandlers = true;
|
|
1654
|
+
int priority = bucket.priority;
|
|
1655
|
+
switch (entryCount)
|
|
1481
1656
|
{
|
|
1482
|
-
|
|
1657
|
+
case 1:
|
|
1483
1658
|
{
|
|
1484
|
-
|
|
1485
|
-
RunTargetedBroadcast(
|
|
1659
|
+
InvokeTargetedPostEntry(
|
|
1486
1660
|
ref target,
|
|
1487
1661
|
ref typedMessage,
|
|
1488
|
-
|
|
1489
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1782
|
+
_postProcessingTargetedWithoutTargetingSinks.TryGetValue<TMessage>(
|
|
1783
|
+
out HandlerCache<int, HandlerCache> postTwt
|
|
1784
|
+
)
|
|
1785
|
+
&& postTwt.handlers.Count > 0
|
|
1504
1786
|
)
|
|
1505
1787
|
{
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
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
|
-
|
|
1517
|
-
RunTargetedPostProcessing(
|
|
1518
|
-
ref target,
|
|
1519
|
-
ref typedMessage,
|
|
1520
|
-
entry.Key,
|
|
1521
|
-
entry.Value
|
|
1522
|
-
);
|
|
1523
|
-
break;
|
|
1805
|
+
continue;
|
|
1524
1806
|
}
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
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
|
-
|
|
1812
|
+
case 1:
|
|
1642
1813
|
{
|
|
1643
|
-
|
|
1644
|
-
RunTargetedPostProcessing(
|
|
1814
|
+
InvokeTargetedWithoutTargetingPostEntry(
|
|
1645
1815
|
ref target,
|
|
1646
1816
|
ref typedMessage,
|
|
1647
|
-
|
|
1648
|
-
|
|
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
|
-
|
|
1802
|
-
RunTargetedWithoutTargetingPostProcessing(
|
|
1824
|
+
InvokeTargetedWithoutTargetingPostEntry(
|
|
1803
1825
|
ref target,
|
|
1804
1826
|
ref typedMessage,
|
|
1805
|
-
|
|
1806
|
-
|
|
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
|
-
|
|
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<
|
|
2291
|
+
out Dictionary<
|
|
2292
|
+
InstanceId,
|
|
2293
|
+
HandlerCache<int, HandlerCache>
|
|
2294
|
+
> broadcastPostHandlers
|
|
2169
2295
|
)
|
|
2170
|
-
&&
|
|
2296
|
+
&& broadcastPostHandlers.TryGetValue(
|
|
2171
2297
|
source,
|
|
2172
|
-
out HandlerCache<int, HandlerCache>
|
|
2298
|
+
out HandlerCache<int, HandlerCache> broadcastPostByPriority
|
|
2173
2299
|
)
|
|
2174
|
-
&&
|
|
2300
|
+
&& broadcastPostByPriority.handlers.Count > 0
|
|
2175
2301
|
)
|
|
2176
2302
|
{
|
|
2177
|
-
|
|
2178
|
-
|
|
2303
|
+
broadcastPostSnapshot = AcquireDispatchSnapshot<TMessage>(
|
|
2304
|
+
this,
|
|
2305
|
+
broadcastPostByPriority,
|
|
2306
|
+
DispatchCategory.BroadcastPost,
|
|
2179
2307
|
_emissionId
|
|
2180
2308
|
);
|
|
2181
|
-
|
|
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>
|
|
2313
|
+
out HandlerCache<int, HandlerCache> broadcastWithoutSourceHandlers
|
|
2204
2314
|
)
|
|
2205
|
-
&&
|
|
2315
|
+
&& broadcastWithoutSourceHandlers.handlers.Count > 0
|
|
2206
2316
|
)
|
|
2207
2317
|
{
|
|
2208
|
-
|
|
2209
|
-
|
|
2318
|
+
broadcastWithoutSourcePostSnapshot = AcquireDispatchSnapshot<TMessage>(
|
|
2319
|
+
this,
|
|
2320
|
+
broadcastWithoutSourceHandlers,
|
|
2321
|
+
DispatchCategory.BroadcastWithoutSourcePost,
|
|
2210
2322
|
_emissionId
|
|
2211
2323
|
);
|
|
2212
|
-
|
|
2213
|
-
|
|
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
|
-
|
|
2275
|
-
|
|
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
|
-
|
|
2463
|
+
DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
|
|
2464
|
+
this,
|
|
2366
2465
|
sortedHandlers,
|
|
2466
|
+
DispatchCategory.BroadcastPost,
|
|
2367
2467
|
_emissionId
|
|
2368
2468
|
);
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
|
|
2376
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2480
|
+
|
|
2481
|
+
foundAnyHandlers = true;
|
|
2482
|
+
int priority = bucket.priority;
|
|
2483
|
+
switch (entryCount)
|
|
2498
2484
|
{
|
|
2499
|
-
|
|
2485
|
+
case 1:
|
|
2500
2486
|
{
|
|
2501
|
-
|
|
2502
|
-
RunBroadcastPostProcessing(
|
|
2487
|
+
InvokeBroadcastPostEntry(
|
|
2503
2488
|
ref source,
|
|
2504
2489
|
ref typedMessage,
|
|
2505
|
-
|
|
2506
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2614
|
+
DispatchSnapshot snapshot = AcquireDispatchSnapshot<TMessage>(
|
|
2615
|
+
this,
|
|
2521
2616
|
sortedHandlers,
|
|
2617
|
+
DispatchCategory.BroadcastWithoutSourcePost,
|
|
2522
2618
|
_emissionId
|
|
2523
2619
|
);
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
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
|
|
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
|
-
|
|
2557
|
-
int messageHandlersCount = messageHandlers.Count;
|
|
2558
|
-
if (messageHandlersCount == 0)
|
|
2779
|
+
if (cache.handlers.Count == 0)
|
|
2559
2780
|
{
|
|
2560
2781
|
return;
|
|
2561
2782
|
}
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2817
|
-
|
|
3010
|
+
DispatchBucket[] buckets = snapshot.buckets;
|
|
3011
|
+
int bucketCount = snapshot.bucketCount;
|
|
3012
|
+
if (bucketCount == 0)
|
|
2818
3013
|
{
|
|
2819
|
-
|
|
3014
|
+
return;
|
|
2820
3015
|
}
|
|
2821
|
-
|
|
2822
|
-
|
|
3016
|
+
|
|
3017
|
+
for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
|
|
2823
3018
|
{
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
|
|
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
|
-
|
|
2838
|
-
messageHandlers[1].HandleGlobalUntargetedMessage(ref message, this);
|
|
2839
|
-
messageHandlers[2].HandleGlobalUntargetedMessage(ref message, this);
|
|
2840
|
-
return;
|
|
3024
|
+
continue;
|
|
2841
3025
|
}
|
|
2842
|
-
|
|
3026
|
+
|
|
3027
|
+
switch (entryCount)
|
|
2843
3028
|
{
|
|
2844
|
-
|
|
2845
|
-
|
|
2846
|
-
|
|
2847
|
-
|
|
2848
|
-
|
|
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
|
-
|
|
3065
|
+
|
|
3066
|
+
for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
|
|
2851
3067
|
{
|
|
2852
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2880
|
-
|
|
3081
|
+
DispatchBucket[] buckets = snapshot.buckets;
|
|
3082
|
+
int bucketCount = snapshot.bucketCount;
|
|
3083
|
+
if (bucketCount == 0)
|
|
2881
3084
|
{
|
|
2882
|
-
|
|
3085
|
+
return;
|
|
2883
3086
|
}
|
|
2884
|
-
|
|
2885
|
-
|
|
3087
|
+
|
|
3088
|
+
for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
|
|
2886
3089
|
{
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3097
|
+
|
|
3098
|
+
switch (entryCount)
|
|
2906
3099
|
{
|
|
2907
|
-
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
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
|
-
|
|
3136
|
+
|
|
3137
|
+
for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
|
|
2914
3138
|
{
|
|
2915
|
-
|
|
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
|
-
|
|
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
|
-
|
|
2946
|
-
|
|
3155
|
+
DispatchBucket[] buckets = snapshot.buckets;
|
|
3156
|
+
int bucketCount = snapshot.bucketCount;
|
|
3157
|
+
if (bucketCount == 0)
|
|
2947
3158
|
{
|
|
2948
|
-
|
|
3159
|
+
return;
|
|
2949
3160
|
}
|
|
2950
|
-
|
|
2951
|
-
|
|
3161
|
+
|
|
3162
|
+
for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
|
|
2952
3163
|
{
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3171
|
+
|
|
3172
|
+
switch (entryCount)
|
|
2978
3173
|
{
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
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
|
-
|
|
3210
|
+
|
|
3211
|
+
for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
|
|
2990
3212
|
{
|
|
2991
|
-
|
|
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
|
|
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
|
|
3226
|
+
out InterceptorCache<object> interceptors
|
|
3021
3227
|
)
|
|
3022
3228
|
|| interceptors.handlers.Count == 0
|
|
3023
3229
|
)
|
|
3024
3230
|
{
|
|
3025
|
-
|
|
3231
|
+
interceptorHandlers = default;
|
|
3026
3232
|
interceptorObjects = default;
|
|
3027
3233
|
return false;
|
|
3028
3234
|
}
|
|
3029
3235
|
|
|
3030
|
-
|
|
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
|
|
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
|
|
3254
|
+
out InterceptorCache<object> interceptors
|
|
3064
3255
|
)
|
|
3065
3256
|
|| interceptors.handlers.Count == 0
|
|
3066
3257
|
)
|
|
3067
3258
|
{
|
|
3068
|
-
|
|
3259
|
+
interceptorHandlers = default;
|
|
3069
3260
|
interceptorObjects = default;
|
|
3070
3261
|
return false;
|
|
3071
3262
|
}
|
|
3072
3263
|
|
|
3073
|
-
|
|
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
|
|
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
|
|
3282
|
+
out InterceptorCache<object> interceptors
|
|
3107
3283
|
)
|
|
3108
3284
|
|| interceptors.handlers.Count == 0
|
|
3109
3285
|
)
|
|
3110
3286
|
{
|
|
3111
|
-
|
|
3287
|
+
interceptorHandlers = default;
|
|
3112
3288
|
interceptorObjects = default;
|
|
3113
3289
|
return false;
|
|
3114
3290
|
}
|
|
3115
3291
|
|
|
3116
|
-
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
3284
|
-
switch (handlerListCount)
|
|
3448
|
+
if (bucketCount == 0)
|
|
3285
3449
|
{
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3464
|
+
|
|
3465
|
+
invoked = true;
|
|
3466
|
+
int priority = bucket.priority;
|
|
3467
|
+
switch (entryCount)
|
|
3311
3468
|
{
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
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
|
-
|
|
3505
|
+
|
|
3506
|
+
for (int handlerIndex = 0; handlerIndex < entryCount; ++handlerIndex)
|
|
3323
3507
|
{
|
|
3324
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3515
|
+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
3516
|
+
private void InvokeUntargetedEntry<TMessage>(
|
|
3347
3517
|
ref TMessage message,
|
|
3348
3518
|
int priority,
|
|
3349
|
-
|
|
3519
|
+
DispatchEntry entry
|
|
3350
3520
|
)
|
|
3351
3521
|
where TMessage : IMessage
|
|
3352
3522
|
{
|
|
3353
|
-
|
|
3523
|
+
MessageHandler messageHandler = entry.handler;
|
|
3524
|
+
if (!messageHandler.active)
|
|
3354
3525
|
{
|
|
3355
3526
|
return;
|
|
3356
3527
|
}
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3573
|
+
|
|
3574
|
+
int priority = bucket.priority;
|
|
3575
|
+
for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
|
|
3392
3576
|
{
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
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
|
-
|
|
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
|
|
3429
|
-
switch (handlerListCount)
|
|
3611
|
+
for (int bucketIndex = 0; bucketIndex < bucketCount; ++bucketIndex)
|
|
3430
3612
|
{
|
|
3431
|
-
|
|
3432
|
-
|
|
3433
|
-
|
|
3434
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3620
|
+
|
|
3621
|
+
invoked = true;
|
|
3622
|
+
int priority = bucket.priority;
|
|
3623
|
+
if (entries[0].prefreeze.kind == PrefreezeKindTargetedWithoutTargetingHandlers)
|
|
3446
3624
|
{
|
|
3447
|
-
|
|
3448
|
-
|
|
3449
|
-
|
|
3450
|
-
|
|
3451
|
-
|
|
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
|
-
|
|
3631
|
+
switch (entryCount)
|
|
3456
3632
|
{
|
|
3457
|
-
|
|
3458
|
-
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
|
|
3463
|
-
|
|
3464
|
-
|
|
3465
|
-
|
|
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
|
-
|
|
3744
|
+
|
|
3745
|
+
for (int entryIndex = 0; entryIndex < entryCount; ++entryIndex)
|
|
3468
3746
|
{
|
|
3469
|
-
|
|
3470
|
-
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
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
|
-
|
|
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,
|