com.wallstop-studios.dxmessaging 2.2.0 → 3.0.1
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/CHANGELOG.md +106 -67
- package/CHANGELOG.md.meta +7 -7
- package/Editor/Analyzers/BaseCallIlInspector.cs +277 -0
- package/Editor/Analyzers/BaseCallIlInspector.cs.meta +11 -0
- package/Editor/Analyzers/BaseCallLogMessageParser.cs +295 -0
- package/Editor/Analyzers/BaseCallLogMessageParser.cs.meta +11 -0
- package/Editor/Analyzers/BaseCallReportAggregator.cs +308 -0
- package/Editor/Analyzers/BaseCallReportAggregator.cs.meta +11 -0
- package/Editor/Analyzers/BaseCallTypeScanner.cs +110 -0
- package/Editor/Analyzers/BaseCallTypeScanner.cs.meta +11 -0
- package/Editor/Analyzers/BaseCallTypeScannerCore.cs +562 -0
- package/Editor/Analyzers/BaseCallTypeScannerCore.cs.meta +11 -0
- package/Editor/Analyzers/DxMessagingConsoleHarvester.cs +1122 -0
- package/Editor/Analyzers/DxMessagingConsoleHarvester.cs.meta +11 -0
- package/Editor/Analyzers/Microsoft.CodeAnalysis.CSharp.dll.meta +44 -44
- package/Editor/Analyzers/Microsoft.CodeAnalysis.dll.meta +44 -44
- package/Editor/Analyzers/System.Collections.Immutable.dll.meta +44 -44
- package/Editor/Analyzers/System.Reflection.Metadata.dll.meta +44 -44
- package/Editor/Analyzers/System.Runtime.CompilerServices.Unsafe.dll.meta +44 -44
- package/Editor/Analyzers/WallstopStudios.DxMessaging.Analyzer.dll +0 -0
- package/Editor/Analyzers/WallstopStudios.DxMessaging.Analyzer.dll.meta +33 -0
- package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll +0 -0
- package/Editor/Analyzers/WallstopStudios.DxMessaging.SourceGenerators.dll.meta +72 -72
- package/Editor/Analyzers.meta +8 -8
- package/Editor/AssemblyInfo.cs.meta +3 -3
- package/Editor/CustomEditors/MessageAwareComponentFallbackEditor.cs +81 -0
- package/Editor/CustomEditors/MessageAwareComponentFallbackEditor.cs.meta +11 -0
- package/Editor/CustomEditors/MessageAwareComponentInspectorOverlay.cs +420 -0
- package/Editor/CustomEditors/MessageAwareComponentInspectorOverlay.cs.meta +11 -0
- package/Editor/CustomEditors/MessagingComponentEditor.cs +1 -1
- package/Editor/CustomEditors/MessagingComponentEditor.cs.meta +2 -2
- package/Editor/CustomEditors.meta +2 -2
- package/Editor/DxMessagingEditorInitializer.cs.meta +2 -2
- package/Editor/DxMessagingMenu.cs.meta +11 -11
- package/Editor/DxMessagingSceneBuildProcessor.cs.meta +11 -11
- package/Editor/Settings/DxMessagingBaseCallIgnoreSync.cs +190 -0
- package/Editor/Settings/DxMessagingBaseCallIgnoreSync.cs.meta +11 -0
- package/Editor/Settings/DxMessagingSettings.cs +189 -0
- package/Editor/Settings/DxMessagingSettings.cs.meta +2 -2
- package/Editor/Settings/DxMessagingSettingsProvider.cs +50 -33
- package/Editor/Settings/DxMessagingSettingsProvider.cs.meta +2 -2
- package/Editor/Settings.meta +2 -2
- package/Editor/SetupCscRsp.cs +209 -8
- package/Editor/SetupCscRsp.cs.meta +2 -2
- package/Editor/Testing/MessagingComponentEditorHarness.cs +1 -1
- package/Editor/Testing/MessagingComponentEditorHarness.cs.meta +3 -3
- package/Editor/Testing.meta +3 -3
- package/Editor/WallstopStudios.DxMessaging.Editor.asmdef +14 -14
- package/Editor/WallstopStudios.DxMessaging.Editor.asmdef.meta +7 -7
- package/Editor.meta +8 -8
- package/LICENSE.md +9 -9
- package/LICENSE.md.meta +7 -7
- package/README.md +941 -900
- package/README.md.meta +7 -7
- package/Runtime/AssemblyInfo.cs +4 -0
- package/Runtime/AssemblyInfo.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxAutoConstructorAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxBroadcastMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxIgnoreMissingBaseCallAttribute.cs +26 -0
- package/Runtime/Core/Attributes/DxIgnoreMissingBaseCallAttribute.cs.meta +11 -0
- package/Runtime/Core/Attributes/DxOptionalParameterAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxTargetedMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes/DxUntargetedMessageAttribute.cs.meta +2 -2
- package/Runtime/Core/Attributes.meta +2 -2
- package/Runtime/Core/Configuration/DxMessagingRuntimeSettings.cs +195 -0
- package/Runtime/Core/Configuration/DxMessagingRuntimeSettings.cs.meta +11 -0
- package/Runtime/Core/Configuration/DxMessagingRuntimeSettingsProvider.cs +179 -0
- package/Runtime/Core/Configuration/DxMessagingRuntimeSettingsProvider.cs.meta +11 -0
- package/Runtime/Core/Configuration.meta +9 -0
- package/Runtime/Core/DataStructure/CyclicBuffer.cs +2 -2
- package/Runtime/Core/DataStructure/CyclicBuffer.cs.meta +2 -2
- package/Runtime/Core/DataStructure.meta +2 -2
- package/Runtime/Core/Diagnostics/MessageEmissionData.cs.meta +2 -2
- package/Runtime/Core/Diagnostics/MessageRegistrationData.cs.meta +2 -2
- package/Runtime/Core/Diagnostics/MessageRegistrationType.cs.meta +2 -2
- package/Runtime/Core/Diagnostics.meta +2 -2
- package/Runtime/Core/DxMessagingStaticState.cs +19 -0
- package/Runtime/Core/DxMessagingStaticState.cs.meta +11 -11
- package/Runtime/Core/Extensions/EnumExtensions.cs.meta +2 -2
- package/Runtime/Core/Extensions/IListExtensions.cs.meta +2 -2
- package/Runtime/Core/Extensions/MessageBusExtensions.cs.meta +12 -12
- package/Runtime/Core/Extensions/MessageExtensions.cs.meta +11 -11
- package/Runtime/Core/Extensions.meta +8 -8
- package/Runtime/Core/Helper/MessageCache.cs +32 -0
- package/Runtime/Core/Helper/MessageCache.cs.meta +2 -2
- package/Runtime/Core/Helper/MessageHelperIndexer.cs.meta +2 -2
- package/Runtime/Core/Helper.meta +2 -2
- package/Runtime/Core/IMessage.cs +3 -3
- package/Runtime/Core/IMessage.cs.meta +11 -11
- package/Runtime/Core/InstanceId.cs.meta +11 -11
- package/Runtime/Core/Internal/TypedDispatchLinkIndex.cs +51 -0
- package/Runtime/Core/Internal/TypedDispatchLinkIndex.cs.meta +11 -0
- package/Runtime/Core/Internal/TypedGlobalSlotIndex.cs +38 -0
- package/Runtime/Core/Internal/TypedGlobalSlotIndex.cs.meta +11 -0
- package/Runtime/Core/Internal/TypedSlotIndex.cs +81 -0
- package/Runtime/Core/Internal/TypedSlotIndex.cs.meta +11 -0
- package/Runtime/Core/Internal/TypedSlots.cs +613 -0
- package/Runtime/Core/Internal/TypedSlots.cs.meta +11 -0
- package/Runtime/Core/Internal.meta +9 -0
- package/Runtime/Core/MessageBus/DiagnosticsTarget.cs.meta +11 -11
- package/Runtime/Core/MessageBus/GlobalMessageBusProvider.cs.meta +11 -11
- package/Runtime/Core/MessageBus/IMessageBus.cs +177 -3
- package/Runtime/Core/MessageBus/IMessageBus.cs.meta +11 -11
- package/Runtime/Core/MessageBus/IMessageBusProvider.cs.meta +11 -11
- package/Runtime/Core/MessageBus/IMessageRegistrationBuilder.cs.meta +11 -11
- package/Runtime/Core/MessageBus/Internal/BusContextIndex.cs +16 -0
- package/Runtime/Core/MessageBus/Internal/BusContextIndex.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/BusSinkIndex.cs +40 -0
- package/Runtime/Core/MessageBus/Internal/BusSinkIndex.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/BusSlots.cs +718 -0
- package/Runtime/Core/MessageBus/Internal/BusSlots.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/DispatchKind.cs +38 -0
- package/Runtime/Core/MessageBus/Internal/DispatchKind.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/DispatchPhase.cs +20 -0
- package/Runtime/Core/MessageBus/Internal/DispatchPhase.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/DispatchVariant.cs +28 -0
- package/Runtime/Core/MessageBus/Internal/DispatchVariant.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/IEvictableSlot.cs +48 -0
- package/Runtime/Core/MessageBus/Internal/IEvictableSlot.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/ISweepable.cs +15 -0
- package/Runtime/Core/MessageBus/Internal/ISweepable.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/RegistrationMethodAxes.cs +222 -0
- package/Runtime/Core/MessageBus/Internal/RegistrationMethodAxes.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal/SlotKey.cs +192 -0
- package/Runtime/Core/MessageBus/Internal/SlotKey.cs.meta +11 -0
- package/Runtime/Core/MessageBus/Internal.meta +9 -0
- package/Runtime/Core/MessageBus/MessageBus.cs +2651 -500
- package/Runtime/Core/MessageBus/MessageBus.cs.meta +11 -11
- package/Runtime/Core/MessageBus/MessageBusRebindMode.cs.meta +11 -11
- package/Runtime/Core/MessageBus/MessageRegistrationBuilder.cs.meta +11 -11
- package/Runtime/Core/MessageBus/MessagingRegistration.cs.meta +11 -11
- package/Runtime/Core/MessageBus/RegistrationLog.cs.meta +11 -11
- package/Runtime/Core/MessageBus.meta +8 -8
- package/Runtime/Core/MessageHandler.cs +2019 -542
- package/Runtime/Core/MessageHandler.cs.meta +11 -11
- package/Runtime/Core/MessageRegistrationHandle.cs.meta +11 -11
- package/Runtime/Core/MessageRegistrationToken.cs +7 -0
- package/Runtime/Core/MessageRegistrationToken.cs.meta +11 -11
- package/Runtime/Core/Messages/GlobalStringMessage.cs.meta +2 -2
- package/Runtime/Core/Messages/IBroadcastMessage.cs.meta +11 -11
- package/Runtime/Core/Messages/ITargetedMessage.cs.meta +11 -11
- package/Runtime/Core/Messages/IUntargetedMessage.cs.meta +11 -11
- package/Runtime/Core/Messages/ReflexiveMessage.cs.meta +2 -2
- package/Runtime/Core/Messages/SourcedStringMessage.cs.meta +11 -11
- package/Runtime/Core/Messages/StringMessage.cs.meta +2 -2
- package/Runtime/Core/Messages.meta +8 -8
- package/Runtime/Core/MessagingDebug.cs.meta +11 -11
- package/Runtime/Core/Pooling/CollectionPool.cs +266 -0
- package/Runtime/Core/Pooling/CollectionPool.cs.meta +11 -0
- package/Runtime/Core/Pooling/CollectionPoolDiagnostics.cs +30 -0
- package/Runtime/Core/Pooling/CollectionPoolDiagnostics.cs.meta +11 -0
- package/Runtime/Core/Pooling/DxPools.cs +157 -0
- package/Runtime/Core/Pooling/DxPools.cs.meta +11 -0
- package/Runtime/Core/Pooling/EvictionPlayerLoopHook.cs +106 -0
- package/Runtime/Core/Pooling/EvictionPlayerLoopHook.cs.meta +11 -0
- package/Runtime/Core/Pooling/IDxMessagingClock.cs +18 -0
- package/Runtime/Core/Pooling/IDxMessagingClock.cs.meta +11 -0
- package/Runtime/Core/Pooling/PoolDiagnosticsSnapshot.cs +55 -0
- package/Runtime/Core/Pooling/PoolDiagnosticsSnapshot.cs.meta +11 -0
- package/Runtime/Core/Pooling/StopwatchClock.cs +27 -0
- package/Runtime/Core/Pooling/StopwatchClock.cs.meta +11 -0
- package/Runtime/Core/Pooling/UnityRealtimeClock.cs +31 -0
- package/Runtime/Core/Pooling/UnityRealtimeClock.cs.meta +11 -0
- package/Runtime/Core/Pooling.meta +9 -0
- package/Runtime/Core.meta +8 -8
- package/Runtime/Unity/CurrentGlobalMessageBusProvider.cs.meta +12 -12
- package/Runtime/Unity/DxMessagingRuntimeInitializer.cs.meta +11 -11
- package/Runtime/Unity/InitialGlobalMessageBusProvider.cs.meta +12 -12
- package/Runtime/Unity/Integrations/Reflex/AssemblyInfo.cs.meta +2 -2
- package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs +73 -0
- package/Runtime/Unity/Integrations/Reflex/ReflexRegistrationInstaller.cs.meta +11 -11
- package/Runtime/Unity/Integrations/Reflex/WallstopStudios.DxMessaging.Reflex.asmdef +20 -20
- package/Runtime/Unity/Integrations/Reflex/WallstopStudios.DxMessaging.Reflex.asmdef.meta +7 -7
- package/Runtime/Unity/Integrations/Reflex.meta +8 -8
- package/Runtime/Unity/Integrations/VContainer/AssemblyInfo.cs.meta +2 -2
- package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs +109 -1
- package/Runtime/Unity/Integrations/VContainer/VContainerRegistrationExtensions.cs.meta +11 -11
- package/Runtime/Unity/Integrations/VContainer/WallstopStudios.DxMessaging.VContainer.asmdef +30 -30
- package/Runtime/Unity/Integrations/VContainer/WallstopStudios.DxMessaging.VContainer.asmdef.meta +7 -7
- package/Runtime/Unity/Integrations/VContainer.meta +8 -8
- package/Runtime/Unity/Integrations/Zenject/AssemblyInfo.cs.meta +2 -2
- package/Runtime/Unity/Integrations/Zenject/WallstopStudios.DxMessaging.Zenject.asmdef +30 -30
- package/Runtime/Unity/Integrations/Zenject/WallstopStudios.DxMessaging.Zenject.asmdef.meta +7 -7
- package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs +79 -1
- package/Runtime/Unity/Integrations/Zenject/ZenjectRegistrationInstaller.cs.meta +11 -11
- package/Runtime/Unity/Integrations/Zenject.meta +8 -8
- package/Runtime/Unity/Integrations.meta +8 -8
- package/Runtime/Unity/MessageAwareComponent.cs +29 -0
- package/Runtime/Unity/MessageAwareComponent.cs.meta +11 -11
- package/Runtime/Unity/MessageBusProviderHandle.cs.meta +12 -12
- package/Runtime/Unity/MessagingComponent.cs.meta +11 -11
- package/Runtime/Unity/MessagingComponentInstaller.cs.meta +12 -12
- package/Runtime/Unity/ScriptableMessageBusProvider.cs.meta +12 -12
- package/Runtime/Unity.meta +8 -8
- package/Runtime/WallstopStudios.DxMessaging.asmdef +14 -14
- package/Runtime/WallstopStudios.DxMessaging.asmdef.meta +7 -7
- package/Runtime.meta +8 -8
- package/Samples~/DI/Prefabs/MessagingInstallerSample.prefab +98 -98
- package/Samples~/DI/Prefabs/MessagingInstallerSample.prefab.meta +7 -7
- package/Samples~/DI/Prefabs.meta +8 -8
- package/Samples~/DI/Providers/GlobalMessageBusProvider.asset +14 -14
- package/Samples~/DI/Providers/GlobalMessageBusProvider.asset.meta +8 -8
- package/Samples~/DI/Providers/InitialGlobalMessageBusProvider.asset +14 -14
- package/Samples~/DI/Providers/InitialGlobalMessageBusProvider.asset.meta +8 -8
- package/Samples~/DI/Providers.meta +8 -8
- package/Samples~/DI/README.md +51 -51
- package/Samples~/DI/README.md.meta +7 -7
- package/Samples~/DI/Reflex/SampleInstaller.cs +7 -0
- package/Samples~/DI/Reflex/SampleInstaller.cs.meta +11 -11
- package/Samples~/DI/Reflex.meta +8 -8
- package/Samples~/DI/VContainer/SampleLifetimeScope.cs +6 -1
- package/Samples~/DI/VContainer/SampleLifetimeScope.cs.meta +11 -11
- package/Samples~/DI/VContainer.meta +8 -8
- package/Samples~/DI/Zenject/SampleInstaller.cs +8 -0
- package/Samples~/DI/Zenject/SampleInstaller.cs.meta +11 -11
- package/Samples~/DI/Zenject.meta +8 -8
- package/Samples~/DI.meta +8 -8
- package/Samples~/Mini Combat/Boot.cs.meta +11 -11
- package/Samples~/Mini Combat/Enemy.cs.meta +11 -11
- package/Samples~/Mini Combat/Messages.cs.meta +11 -11
- package/Samples~/Mini Combat/Player.cs.meta +11 -11
- package/Samples~/Mini Combat/README.md +324 -323
- package/Samples~/Mini Combat/README.md.meta +7 -7
- package/Samples~/Mini Combat/UIOverlay.cs.meta +11 -11
- package/Samples~/Mini Combat/Walkthrough.md +430 -430
- package/Samples~/Mini Combat/Walkthrough.md.meta +7 -7
- package/Samples~/Mini Combat/WallstopStudios.DxMessaging.MiniCombat.Sample.asmdef +13 -13
- package/Samples~/Mini Combat/WallstopStudios.DxMessaging.MiniCombat.Sample.asmdef.meta +7 -7
- package/Samples~/Mini Combat.meta +8 -8
- package/Samples~/UI Buttons + Inspector/DiagnosticsEnabler.cs.meta +11 -11
- package/Samples~/UI Buttons + Inspector/Messages.cs.meta +11 -11
- package/Samples~/UI Buttons + Inspector/MessagingObserver.cs.meta +11 -11
- package/Samples~/UI Buttons + Inspector/README.md +210 -209
- package/Samples~/UI Buttons + Inspector/README.md.meta +7 -7
- package/Samples~/UI Buttons + Inspector/UIButtonEmitter.cs.meta +11 -11
- package/Samples~/UI Buttons + Inspector/WallstopStudios.DxMessaging.UIButtons.Sample.asmdef +13 -13
- package/Samples~/UI Buttons + Inspector/WallstopStudios.DxMessaging.UIButtons.Sample.asmdef.meta +7 -7
- package/Samples~/UI Buttons + Inspector.meta +8 -8
- package/SourceGenerators/Directory.Build.props.meta +7 -7
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxAutoConstructorGenerator.cs.meta +11 -11
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/DxMessageIdGenerator.cs.meta +2 -2
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.csproj.meta +7 -7
- package/SourceGenerators/WallstopStudios.DxMessaging.SourceGenerators.meta +8 -8
- package/SourceGenerators.meta +8 -8
- package/Third Party Notices.md +3 -3
- package/Third Party Notices.md.meta +7 -7
- package/package.json +115 -92
- package/package.json.meta +7 -7
package/README.md.meta
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 4c1ffc4b35b01f34f81f0399aa77b4d0
|
|
3
|
-
TextScriptImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
userData:
|
|
6
|
-
assetBundleName:
|
|
7
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 4c1ffc4b35b01f34f81f0399aa77b4d0
|
|
3
|
+
TextScriptImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
userData:
|
|
6
|
+
assetBundleName:
|
|
7
|
+
assetBundleVariant:
|
package/Runtime/AssemblyInfo.cs
CHANGED
|
@@ -5,8 +5,12 @@ using System.Runtime.CompilerServices;
|
|
|
5
5
|
AllInternalsVisible = true
|
|
6
6
|
)]
|
|
7
7
|
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Editor")]
|
|
8
|
+
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Reflex")]
|
|
9
|
+
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.VContainer")]
|
|
10
|
+
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Zenject")]
|
|
8
11
|
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Tests.Runtime")]
|
|
9
12
|
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Tests.Runtime.Reflex")]
|
|
10
13
|
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Tests.Runtime.VContainer")]
|
|
11
14
|
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Tests.Runtime.Zenject")]
|
|
12
15
|
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Tests.Editor")]
|
|
16
|
+
[assembly: InternalsVisibleTo("WallstopStudios.DxMessaging.Tests.Editor.Allocations")]
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 83aab80bf265483fb08c5f884e4b24fc
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 83aab80bf265483fb08c5f884e4b24fc
|
|
3
3
|
timeCreated: 1759525804
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: bef6adb9baf545129cb9a841b13da451
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: bef6adb9baf545129cb9a841b13da451
|
|
3
3
|
timeCreated: 1749776355
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 73fd653a34be4f36b5773dce342ae9fa
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 73fd653a34be4f36b5773dce342ae9fa
|
|
3
3
|
timeCreated: 1730779174
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
namespace DxMessaging.Core.Attributes
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
|
|
5
|
+
/// <summary>
|
|
6
|
+
/// Suppresses the <c>MessageAwareComponentBaseCallAnalyzer</c> (DXMSG006/DXMSG007/DXMSG009/DXMSG010)
|
|
7
|
+
/// for the annotated class or method.
|
|
8
|
+
/// </summary>
|
|
9
|
+
/// <remarks>
|
|
10
|
+
/// Applying this attribute is the source-level opt-out for the base-call analyzer. When applied to
|
|
11
|
+
/// a class, every guarded lifecycle method on that class (<c>Awake</c>, <c>OnEnable</c>,
|
|
12
|
+
/// <c>OnDisable</c>, <c>OnDestroy</c>, <c>RegisterMessageHandlers</c>) is exempt. When applied to a
|
|
13
|
+
/// single method, only that method is exempt. The analyzer still emits an Info-level
|
|
14
|
+
/// <c>DXMSG008</c> at the suppression site so the opt-out is auditable.
|
|
15
|
+
/// <para>
|
|
16
|
+
/// <c>Inherited = false</c>: a base class's <c>[DxIgnoreMissingBaseCall]</c> does NOT silently
|
|
17
|
+
/// suppress derived classes. Each subclass must opt out explicitly.
|
|
18
|
+
/// </para>
|
|
19
|
+
/// </remarks>
|
|
20
|
+
[AttributeUsage(
|
|
21
|
+
AttributeTargets.Class | AttributeTargets.Method,
|
|
22
|
+
Inherited = false,
|
|
23
|
+
AllowMultiple = false
|
|
24
|
+
)]
|
|
25
|
+
public sealed class DxIgnoreMissingBaseCallAttribute : Attribute { }
|
|
26
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 87d96cdf2fc74f40ba77ae0d157be964
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 87d96cdf2fc74f40ba77ae0d157be964
|
|
3
3
|
timeCreated: 1749850608
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: ab2509dd51f5467d95b4fca1cb794b29
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: ab2509dd51f5467d95b4fca1cb794b29
|
|
3
3
|
timeCreated: 1730779159
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 418b461df3764ef6896dc86524a00132
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 418b461df3764ef6896dc86524a00132
|
|
3
3
|
timeCreated: 1730779131
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: e2cb23a56cf1416ba06dccca58c8297f
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: e2cb23a56cf1416ba06dccca58c8297f
|
|
3
3
|
timeCreated: 1730779055
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
namespace DxMessaging.Core.Configuration
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using MessageBus;
|
|
5
|
+
#if UNITY_2021_3_OR_NEWER
|
|
6
|
+
using UnityEngine;
|
|
7
|
+
|
|
8
|
+
/// <summary>
|
|
9
|
+
/// Runtime-loaded settings asset that controls memory-reclamation policy and
|
|
10
|
+
/// pool sizing for DxMessaging. Loaded at first bus construction via
|
|
11
|
+
/// <c>Resources.Load<DxMessagingRuntimeSettings>("DxMessagingRuntimeSettings")</c>;
|
|
12
|
+
/// when the asset is absent a defaulted instance is used so the package works
|
|
13
|
+
/// out-of-the-box.
|
|
14
|
+
/// </summary>
|
|
15
|
+
/// <remarks>
|
|
16
|
+
/// To customize, create the asset via <c>Assets > Create > Wallstop Studios >
|
|
17
|
+
/// DxMessaging > Runtime Settings</c> and place it under any
|
|
18
|
+
/// <c>Resources/</c> folder named <c>DxMessagingRuntimeSettings.asset</c>.
|
|
19
|
+
/// Field changes raise <see cref="SettingsChanged"/>; consumers should
|
|
20
|
+
/// re-read derived state on the event.
|
|
21
|
+
/// </remarks>
|
|
22
|
+
[CreateAssetMenu(
|
|
23
|
+
fileName = ResourceName,
|
|
24
|
+
menuName = "Wallstop Studios/DxMessaging/Runtime Settings"
|
|
25
|
+
)]
|
|
26
|
+
public sealed class DxMessagingRuntimeSettings : ScriptableObject
|
|
27
|
+
{
|
|
28
|
+
/// <summary>Resource name (no extension) used by <c>Resources.Load</c>.</summary>
|
|
29
|
+
public const string ResourceName = "DxMessagingRuntimeSettings";
|
|
30
|
+
|
|
31
|
+
/// <summary>Default soft cap on per-pool retained entries.</summary>
|
|
32
|
+
public const int DefaultBufferMaxDistinctEntries = 512;
|
|
33
|
+
|
|
34
|
+
/// <summary>Default idle threshold in seconds before an empty slot is eligible for eviction.</summary>
|
|
35
|
+
public const float DefaultIdleEvictionSeconds = 30f;
|
|
36
|
+
|
|
37
|
+
/// <summary>Default minimum interval between idle sweeps, in seconds.</summary>
|
|
38
|
+
public const float DefaultEvictionTickIntervalSeconds = 5f;
|
|
39
|
+
|
|
40
|
+
[SerializeField]
|
|
41
|
+
[Tooltip(
|
|
42
|
+
"Idle threshold in seconds. Empty per-message-type slots are evicted only after going at least this long without a register/deregister/dispatch touch. See IdleEvictionSeconds."
|
|
43
|
+
)]
|
|
44
|
+
[Min(0f)]
|
|
45
|
+
internal float _idleEvictionSeconds = DefaultIdleEvictionSeconds;
|
|
46
|
+
|
|
47
|
+
[SerializeField]
|
|
48
|
+
[Tooltip(
|
|
49
|
+
"Soft cap on the number of distinct entries each shared collection pool will retain. Excess entries are evicted (LRU or LIFO depending on BufferUseLruEviction)."
|
|
50
|
+
)]
|
|
51
|
+
[Min(0)]
|
|
52
|
+
internal int _bufferMaxDistinctEntries = DefaultBufferMaxDistinctEntries;
|
|
53
|
+
|
|
54
|
+
[SerializeField]
|
|
55
|
+
[Tooltip(
|
|
56
|
+
"When true, shared collection pools use LRU eviction; otherwise pools behave as a bounded LIFO stack. See BufferUseLruEviction."
|
|
57
|
+
)]
|
|
58
|
+
internal bool _bufferUseLruEviction = true;
|
|
59
|
+
|
|
60
|
+
[SerializeField]
|
|
61
|
+
[Tooltip(
|
|
62
|
+
"When true, IMessageBus.Trim performs its work; when false it is a no-op returning default. Lets shipped titles disable on-demand reclamation. See EnableTrimApi."
|
|
63
|
+
)]
|
|
64
|
+
internal bool _enableTrimApi = true;
|
|
65
|
+
|
|
66
|
+
[SerializeField]
|
|
67
|
+
[Tooltip(
|
|
68
|
+
"Minimum interval in seconds between idle sweeps. Emit-time idle eviction samples the clock periodically instead of at the top of every Emit, and sweeps only when this much wall time has elapsed since the last sweep. See EvictionTickIntervalSeconds."
|
|
69
|
+
)]
|
|
70
|
+
[Min(0f)]
|
|
71
|
+
internal float _evictionTickIntervalSeconds = DefaultEvictionTickIntervalSeconds;
|
|
72
|
+
|
|
73
|
+
[SerializeField]
|
|
74
|
+
[Tooltip(
|
|
75
|
+
"Master switch for idle-time eviction. When false neither inline emit-time sweeps nor PlayerLoop sweeps run; explicit Trim still works (gated by EnableTrimApi). See EvictionEnabled."
|
|
76
|
+
)]
|
|
77
|
+
internal bool _evictionEnabled = true;
|
|
78
|
+
|
|
79
|
+
[SerializeField]
|
|
80
|
+
[Tooltip(
|
|
81
|
+
"Diagnostic message buffer size used when the bus is constructed. Mirrors IMessageBus.DefaultMessageBufferSize so the runtime asset can override the global default without touching code. See MessageBufferSize."
|
|
82
|
+
)]
|
|
83
|
+
[Min(0)]
|
|
84
|
+
internal int _messageBufferSize = IMessageBus.DefaultMessageBufferSize;
|
|
85
|
+
|
|
86
|
+
private bool _isFallbackInstance;
|
|
87
|
+
|
|
88
|
+
/// <summary>Idle threshold in seconds. See <c>_idleEvictionSeconds</c>.</summary>
|
|
89
|
+
public float IdleEvictionSeconds => _idleEvictionSeconds;
|
|
90
|
+
|
|
91
|
+
/// <summary>Per-pool retained-entry cap. See <c>_bufferMaxDistinctEntries</c>.</summary>
|
|
92
|
+
public int BufferMaxDistinctEntries => _bufferMaxDistinctEntries;
|
|
93
|
+
|
|
94
|
+
/// <summary>True when shared pools use LRU eviction.</summary>
|
|
95
|
+
public bool BufferUseLruEviction => _bufferUseLruEviction;
|
|
96
|
+
|
|
97
|
+
/// <summary>True when explicit Trim APIs perform work.</summary>
|
|
98
|
+
public bool EnableTrimApi => _enableTrimApi;
|
|
99
|
+
|
|
100
|
+
/// <summary>Minimum interval between idle sweeps, in seconds.</summary>
|
|
101
|
+
public float EvictionTickIntervalSeconds => _evictionTickIntervalSeconds;
|
|
102
|
+
|
|
103
|
+
/// <summary>Master switch for idle-time eviction.</summary>
|
|
104
|
+
public bool EvictionEnabled => _evictionEnabled;
|
|
105
|
+
|
|
106
|
+
/// <summary>Diagnostic message buffer size.</summary>
|
|
107
|
+
public int MessageBufferSize => _messageBufferSize;
|
|
108
|
+
|
|
109
|
+
internal bool IsFallbackInstance => _isFallbackInstance;
|
|
110
|
+
|
|
111
|
+
/// <summary>
|
|
112
|
+
/// Raised when this asset is mutated in the editor or via test-only override.
|
|
113
|
+
/// Subscribers should be small and re-entrancy-safe; the event is invoked
|
|
114
|
+
/// synchronously from <c>OnValidate</c>.
|
|
115
|
+
/// </summary>
|
|
116
|
+
public static event Action<DxMessagingRuntimeSettings> SettingsChanged;
|
|
117
|
+
|
|
118
|
+
/// <summary>
|
|
119
|
+
/// Used by <see cref="DxMessagingRuntimeSettingsProvider.Override"/> to push
|
|
120
|
+
/// a test-supplied override and notify subscribers.
|
|
121
|
+
/// </summary>
|
|
122
|
+
internal static void RaiseSettingsChanged(DxMessagingRuntimeSettings settings)
|
|
123
|
+
{
|
|
124
|
+
SettingsChanged?.Invoke(settings);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
internal void MarkAsFallbackInstance()
|
|
128
|
+
{
|
|
129
|
+
_isFallbackInstance = true;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
|
|
133
|
+
private static void ClearSubscribersOnLoad()
|
|
134
|
+
{
|
|
135
|
+
SettingsChanged = null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
#if UNITY_EDITOR
|
|
139
|
+
private const string ResourceFolder = "Assets/Resources";
|
|
140
|
+
private const string ResourceAssetPath = ResourceFolder + "/" + ResourceName + ".asset";
|
|
141
|
+
|
|
142
|
+
[UnityEditor.MenuItem(
|
|
143
|
+
"Assets/Create/Wallstop Studios/DxMessaging/Runtime Settings (in Resources)"
|
|
144
|
+
)]
|
|
145
|
+
private static void CreateAssetInResources()
|
|
146
|
+
{
|
|
147
|
+
if (!UnityEditor.AssetDatabase.IsValidFolder(ResourceFolder))
|
|
148
|
+
{
|
|
149
|
+
UnityEditor.AssetDatabase.CreateFolder("Assets", "Resources");
|
|
150
|
+
}
|
|
151
|
+
string targetPath = UnityEditor.AssetDatabase.GenerateUniqueAssetPath(
|
|
152
|
+
ResourceAssetPath
|
|
153
|
+
);
|
|
154
|
+
DxMessagingRuntimeSettings asset =
|
|
155
|
+
ScriptableObject.CreateInstance<DxMessagingRuntimeSettings>();
|
|
156
|
+
UnityEditor.AssetDatabase.CreateAsset(asset, targetPath);
|
|
157
|
+
UnityEditor.AssetDatabase.SaveAssets();
|
|
158
|
+
UnityEditor.EditorGUIUtility.PingObject(asset);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
private void OnValidate()
|
|
162
|
+
{
|
|
163
|
+
if (_idleEvictionSeconds < 0f)
|
|
164
|
+
{
|
|
165
|
+
_idleEvictionSeconds = 0f;
|
|
166
|
+
}
|
|
167
|
+
if (_bufferMaxDistinctEntries < 0)
|
|
168
|
+
{
|
|
169
|
+
_bufferMaxDistinctEntries = 0;
|
|
170
|
+
}
|
|
171
|
+
if (_evictionTickIntervalSeconds < 0f)
|
|
172
|
+
{
|
|
173
|
+
_evictionTickIntervalSeconds = 0f;
|
|
174
|
+
}
|
|
175
|
+
if (_messageBufferSize < 0)
|
|
176
|
+
{
|
|
177
|
+
_messageBufferSize = 0;
|
|
178
|
+
}
|
|
179
|
+
string assetPath = UnityEditor.AssetDatabase.GetAssetPath(this);
|
|
180
|
+
if (
|
|
181
|
+
!string.IsNullOrEmpty(assetPath)
|
|
182
|
+
&& assetPath.IndexOf("/Resources/", StringComparison.OrdinalIgnoreCase) < 0
|
|
183
|
+
)
|
|
184
|
+
{
|
|
185
|
+
Debug.LogWarning(
|
|
186
|
+
"[DxMessaging] Runtime settings asset is not under a Resources/ folder; Resources.Load will not find it. Move it under Assets/Resources/ or use the 'Assets/Create/Wallstop Studios/DxMessaging/Runtime Settings (in Resources)' menu.",
|
|
187
|
+
this
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
RaiseSettingsChanged(this);
|
|
191
|
+
}
|
|
192
|
+
#endif
|
|
193
|
+
}
|
|
194
|
+
#endif
|
|
195
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
namespace DxMessaging.Core.Configuration
|
|
2
|
+
{
|
|
3
|
+
using System;
|
|
4
|
+
using System.Threading;
|
|
5
|
+
using MessageBus;
|
|
6
|
+
#if UNITY_2021_3_OR_NEWER
|
|
7
|
+
using UnityEngine;
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
#if UNITY_2021_3_OR_NEWER
|
|
11
|
+
/// <summary>
|
|
12
|
+
/// Lazy provider that hands out the active <see cref="DxMessagingRuntimeSettings"/>
|
|
13
|
+
/// instance. Tries <c>Resources.Load<DxMessagingRuntimeSettings>("DxMessagingRuntimeSettings")</c>
|
|
14
|
+
/// once per AppDomain; on miss, returns a defaulted in-memory instance so the
|
|
15
|
+
/// runtime always has a usable settings object.
|
|
16
|
+
/// </summary>
|
|
17
|
+
/// <remarks>
|
|
18
|
+
/// Tests inject a fake via <see cref="Override"/>, which returns an
|
|
19
|
+
/// <see cref="IDisposable"/> that restores the prior current settings. Override
|
|
20
|
+
/// raises <see cref="DxMessagingRuntimeSettings.SettingsChanged"/> on push and
|
|
21
|
+
/// pop so subscribed buses re-apply caps.
|
|
22
|
+
/// </remarks>
|
|
23
|
+
public static class DxMessagingRuntimeSettingsProvider
|
|
24
|
+
{
|
|
25
|
+
private static DxMessagingRuntimeSettings _cached;
|
|
26
|
+
private static readonly object _gate = new();
|
|
27
|
+
|
|
28
|
+
/// <summary>
|
|
29
|
+
/// Returns the active settings instance. Loads the asset on first call;
|
|
30
|
+
/// subsequent calls return the cached reference (or a test override if
|
|
31
|
+
/// <see cref="Override"/> is active).
|
|
32
|
+
/// </summary>
|
|
33
|
+
/// <remarks>
|
|
34
|
+
/// In non-Unity builds (where <c>UNITY_2021_3_OR_NEWER</c> is not defined)
|
|
35
|
+
/// this property returns <c>null</c> because <c>ScriptableObject</c> is
|
|
36
|
+
/// unavailable. Callers must tolerate a <c>null</c> result outside Unity.
|
|
37
|
+
/// </remarks>
|
|
38
|
+
public static DxMessagingRuntimeSettings Current
|
|
39
|
+
{
|
|
40
|
+
get
|
|
41
|
+
{
|
|
42
|
+
DxMessagingRuntimeSettings local = Volatile.Read(ref _cached);
|
|
43
|
+
if (local != null)
|
|
44
|
+
{
|
|
45
|
+
return local;
|
|
46
|
+
}
|
|
47
|
+
lock (_gate)
|
|
48
|
+
{
|
|
49
|
+
local = _cached;
|
|
50
|
+
if (local != null)
|
|
51
|
+
{
|
|
52
|
+
return local;
|
|
53
|
+
}
|
|
54
|
+
local = LoadOrCreate();
|
|
55
|
+
Volatile.Write(ref _cached, local);
|
|
56
|
+
return local;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/// <summary>
|
|
62
|
+
/// Pushes a test-supplied settings instance as the active <see cref="Current"/>
|
|
63
|
+
/// value and raises <see cref="DxMessagingRuntimeSettings.SettingsChanged"/>.
|
|
64
|
+
/// Disposing the returned token restores the previous instance and raises
|
|
65
|
+
/// the event again so subscribers re-apply the original caps.
|
|
66
|
+
/// </summary>
|
|
67
|
+
public static IDisposable Override(DxMessagingRuntimeSettings settings)
|
|
68
|
+
{
|
|
69
|
+
if (settings == null)
|
|
70
|
+
{
|
|
71
|
+
throw new ArgumentNullException(nameof(settings));
|
|
72
|
+
}
|
|
73
|
+
DxMessagingRuntimeSettings previous;
|
|
74
|
+
int previousGlobalMessageBufferSize = IMessageBus.GlobalMessageBufferSize;
|
|
75
|
+
lock (_gate)
|
|
76
|
+
{
|
|
77
|
+
previous = _cached;
|
|
78
|
+
_cached = settings;
|
|
79
|
+
}
|
|
80
|
+
DxMessagingRuntimeSettings.RaiseSettingsChanged(settings);
|
|
81
|
+
return new OverrideToken(settings, previous, previousGlobalMessageBufferSize);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/// <summary>
|
|
85
|
+
/// Clears the cached reference, forcing the next <see cref="Current"/>
|
|
86
|
+
/// access to reload from <c>Resources</c>. Test-only.
|
|
87
|
+
/// </summary>
|
|
88
|
+
internal static void ResetForTests()
|
|
89
|
+
{
|
|
90
|
+
lock (_gate)
|
|
91
|
+
{
|
|
92
|
+
_cached = null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
|
|
97
|
+
private static void OnSubsystemRegistration()
|
|
98
|
+
{
|
|
99
|
+
ResetForTests();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
private static DxMessagingRuntimeSettings LoadOrCreate()
|
|
103
|
+
{
|
|
104
|
+
DxMessagingRuntimeSettings asset = null;
|
|
105
|
+
try
|
|
106
|
+
{
|
|
107
|
+
asset = Resources.Load<DxMessagingRuntimeSettings>(
|
|
108
|
+
DxMessagingRuntimeSettings.ResourceName
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
catch
|
|
112
|
+
{
|
|
113
|
+
asset = null;
|
|
114
|
+
}
|
|
115
|
+
if (asset != null)
|
|
116
|
+
{
|
|
117
|
+
return asset;
|
|
118
|
+
}
|
|
119
|
+
DxMessagingRuntimeSettings fallback =
|
|
120
|
+
ScriptableObject.CreateInstance<DxMessagingRuntimeSettings>();
|
|
121
|
+
fallback.MarkAsFallbackInstance();
|
|
122
|
+
fallback.hideFlags = HideFlags.HideAndDontSave;
|
|
123
|
+
fallback.name = DxMessagingRuntimeSettings.ResourceName + " (Default)";
|
|
124
|
+
return fallback;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
private sealed class OverrideToken : IDisposable
|
|
128
|
+
{
|
|
129
|
+
private readonly DxMessagingRuntimeSettings _installed;
|
|
130
|
+
private readonly int _previousGlobalMessageBufferSize;
|
|
131
|
+
private DxMessagingRuntimeSettings _previous;
|
|
132
|
+
private bool _disposed;
|
|
133
|
+
|
|
134
|
+
public OverrideToken(
|
|
135
|
+
DxMessagingRuntimeSettings installed,
|
|
136
|
+
DxMessagingRuntimeSettings previous,
|
|
137
|
+
int previousGlobalMessageBufferSize
|
|
138
|
+
)
|
|
139
|
+
{
|
|
140
|
+
_installed = installed;
|
|
141
|
+
_previous = previous;
|
|
142
|
+
_previousGlobalMessageBufferSize = previousGlobalMessageBufferSize;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
public void Dispose()
|
|
146
|
+
{
|
|
147
|
+
if (_disposed)
|
|
148
|
+
{
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
_disposed = true;
|
|
152
|
+
DxMessagingRuntimeSettings restored = null;
|
|
153
|
+
bool didRestore = false;
|
|
154
|
+
lock (_gate)
|
|
155
|
+
{
|
|
156
|
+
// Only restore if our install is still the active one.
|
|
157
|
+
// If a deeper Override was pushed on top, this Dispose is a no-op
|
|
158
|
+
// so the LIFO stack is honored.
|
|
159
|
+
if (ReferenceEquals(_cached, _installed))
|
|
160
|
+
{
|
|
161
|
+
_cached = _previous;
|
|
162
|
+
restored = _previous;
|
|
163
|
+
didRestore = true;
|
|
164
|
+
}
|
|
165
|
+
_previous = null;
|
|
166
|
+
}
|
|
167
|
+
if (didRestore)
|
|
168
|
+
{
|
|
169
|
+
if (restored == null || restored.IsFallbackInstance)
|
|
170
|
+
{
|
|
171
|
+
IMessageBus.GlobalMessageBufferSize = _previousGlobalMessageBufferSize;
|
|
172
|
+
}
|
|
173
|
+
DxMessagingRuntimeSettings.RaiseSettingsChanged(restored);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
#endif
|
|
179
|
+
}
|
|
@@ -15,7 +15,7 @@ namespace DxMessaging.Core.DataStructure
|
|
|
15
15
|
[Serializable]
|
|
16
16
|
internal sealed class CyclicBuffer<T> : IReadOnlyList<T>
|
|
17
17
|
{
|
|
18
|
-
|
|
18
|
+
internal struct CyclicBufferEnumerator : IEnumerator<T>
|
|
19
19
|
{
|
|
20
20
|
private readonly CyclicBuffer<T> _buffer;
|
|
21
21
|
|
|
@@ -70,7 +70,7 @@ namespace DxMessaging.Core.DataStructure
|
|
|
70
70
|
/// <summary>Maximum number of elements retained in the buffer.</summary>
|
|
71
71
|
public int Capacity { get; private set; }
|
|
72
72
|
|
|
73
|
-
/// <summary>Current number of elements stored (
|
|
73
|
+
/// <summary>Current number of elements stored (<= <see cref="Capacity"/>).</summary>
|
|
74
74
|
public int Count { get; private set; }
|
|
75
75
|
|
|
76
76
|
private readonly List<T> _buffer;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 7d8dbf8640e24846bf35fb18a1b7c504
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 7d8dbf8640e24846bf35fb18a1b7c504
|
|
3
3
|
timeCreated: 1749671893
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 9862044472704c86ade5612ddcdfd5b5
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 9862044472704c86ade5612ddcdfd5b5
|
|
3
3
|
timeCreated: 1749671887
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 8eafaabae0f549ec82f67ea18be788e1
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 8eafaabae0f549ec82f67ea18be788e1
|
|
3
3
|
timeCreated: 1749672335
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 01598791b01241caabfecea4c1f5880d
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 01598791b01241caabfecea4c1f5880d
|
|
3
3
|
timeCreated: 1749672447
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 7d393cfbb3c8429d83af17a737fdaf0e
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 7d393cfbb3c8429d83af17a737fdaf0e
|
|
3
3
|
timeCreated: 1749672471
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 9606a03ced274c3888a4d993309786a4
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 9606a03ced274c3888a4d993309786a4
|
|
3
3
|
timeCreated: 1749672323
|
|
@@ -50,7 +50,26 @@ namespace DxMessaging.Core
|
|
|
50
50
|
MessageRegistrationHandle.SetIdSeed(Baseline.MessageRegistrationHandleSeed);
|
|
51
51
|
MessageRegistrationBuilder.SetSyntheticOwnerCounter(Baseline.SyntheticOwnerCounter);
|
|
52
52
|
|
|
53
|
+
// Capture the active global bus before ResetStatics swaps it back to the default
|
|
54
|
+
// instance. If a user installed a custom global bus via SetGlobalMessageBus, we
|
|
55
|
+
// also bump that bus's reset generation so deregister closures captured against
|
|
56
|
+
// it (e.g. a deferred Object.Destroy that lands after Reset) silently no-op
|
|
57
|
+
// instead of logging spurious over-deregistration errors. We deliberately do NOT
|
|
58
|
+
// call ResetState() on the custom bus -- that would clear its sinks, which the
|
|
59
|
+
// user may have intentionally preserved.
|
|
60
|
+
IMessageBus activeBus = MessageHandler.MessageBus;
|
|
61
|
+
IMessageBus defaultBus = MessageHandler.InitialGlobalMessageBus;
|
|
62
|
+
|
|
53
63
|
MessageHandler.ResetStatics();
|
|
64
|
+
MessageBus.MessageBus.ResetStaticPools();
|
|
65
|
+
|
|
66
|
+
if (
|
|
67
|
+
!ReferenceEquals(activeBus, defaultBus)
|
|
68
|
+
&& activeBus is MessageBus.MessageBus customConcrete
|
|
69
|
+
)
|
|
70
|
+
{
|
|
71
|
+
customConcrete.BumpResetGeneration();
|
|
72
|
+
}
|
|
54
73
|
}
|
|
55
74
|
}
|
|
56
75
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: 2fbeee7b1ae4484f978aba9de68b3d1d
|
|
3
|
-
MonoImporter:
|
|
4
|
-
externalObjects: {}
|
|
5
|
-
serializedVersion: 2
|
|
6
|
-
defaultReferences: []
|
|
7
|
-
executionOrder: 0
|
|
8
|
-
icon: {instanceID: 0}
|
|
9
|
-
userData:
|
|
10
|
-
assetBundleName:
|
|
11
|
-
assetBundleVariant:
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: 2fbeee7b1ae4484f978aba9de68b3d1d
|
|
3
|
+
MonoImporter:
|
|
4
|
+
externalObjects: {}
|
|
5
|
+
serializedVersion: 2
|
|
6
|
+
defaultReferences: []
|
|
7
|
+
executionOrder: 0
|
|
8
|
+
icon: {instanceID: 0}
|
|
9
|
+
userData:
|
|
10
|
+
assetBundleName:
|
|
11
|
+
assetBundleVariant:
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: f01ee914d7634a69a85f86bb02f2f07e
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: f01ee914d7634a69a85f86bb02f2f07e
|
|
3
3
|
timeCreated: 1745162639
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
fileFormatVersion: 2
|
|
2
|
-
guid: f6956caef19744a0b0d96215d4e5154a
|
|
1
|
+
fileFormatVersion: 2
|
|
2
|
+
guid: f6956caef19744a0b0d96215d4e5154a
|
|
3
3
|
timeCreated: 1749671953
|