From 01b5d2bda05e83e4e68db090fb529577eab8f092 Mon Sep 17 00:00:00 2001 From: jason-bragg Date: Fri, 19 Jan 2018 13:15:32 -0800 Subject: [PATCH] Replaced life cycle stage enums with constants. Enums gave the impression that the stages were limited to only the defined enumes, which was not the intention of the design. They also necessitated the development and maintenance of extensions to support each enum. --- .../Runtime/GrainLifecycleStage.cs | 8 +++--- .../Runtime/IGrainLifeCycle.cs | 25 ------------------- .../LogConsistency/LogConsistentGrain.cs | 6 ++--- .../LegacyClusterConfigurationExtensions.cs | 6 ++--- .../Lifecycle/SiloLifecycleExtensions.cs | 24 ------------------ .../Lifecycle/SiloLifecycleStage.cs | 16 ++++++------ 6 files changed, 18 insertions(+), 67 deletions(-) delete mode 100644 src/Orleans.Core.Abstractions/Runtime/IGrainLifeCycle.cs delete mode 100644 src/Orleans.Runtime/Lifecycle/SiloLifecycleExtensions.cs diff --git a/src/Orleans.Core.Abstractions/Runtime/GrainLifecycleStage.cs b/src/Orleans.Core.Abstractions/Runtime/GrainLifecycleStage.cs index 59d44cae91..a65f81a239 100644 --- a/src/Orleans.Core.Abstractions/Runtime/GrainLifecycleStage.cs +++ b/src/Orleans.Core.Abstractions/Runtime/GrainLifecycleStage.cs @@ -1,4 +1,4 @@ -namespace Orleans.Runtime +namespace Orleans.Runtime { /// /// Stages of a grains lifecycle. @@ -7,16 +7,16 @@ /// stream cleanup should all eventually be triggered by the /// grain lifecycle. /// - public enum GrainLifecycleStage + public static class GrainLifecycleStage { /// /// Setup grain state prior to activation /// - SetupState = 1000, + public const int SetupState = 1000; /// /// Activate grain /// - Activate = 2000 + public const int Activate = 2000; } } diff --git a/src/Orleans.Core.Abstractions/Runtime/IGrainLifeCycle.cs b/src/Orleans.Core.Abstractions/Runtime/IGrainLifeCycle.cs deleted file mode 100644 index 246d902f4b..0000000000 --- a/src/Orleans.Core.Abstractions/Runtime/IGrainLifeCycle.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace Orleans.Runtime -{ - - public static class GrainLifecycleExtensions - { - public static IDisposable Subscribe(this IGrainLifecycle observable, GrainLifecycleStage stage, ILifecycleObserver observer) - { - return observable.Subscribe((int)stage, observer); - } - - public static IDisposable Subscribe(this ILifecycleObservable observable, GrainLifecycleStage stage, Func onStart, Func onStop) - { - return observable.Subscribe((int)stage, onStart, onStop); - } - - public static IDisposable Subscribe(this ILifecycleObservable observable, GrainLifecycleStage stage, Func onStart) - { - return observable.Subscribe((int)stage, onStart); - } - } -} diff --git a/src/Orleans.Core/LogConsistency/LogConsistentGrain.cs b/src/Orleans.Core/LogConsistency/LogConsistentGrain.cs index e054b78707..b71dd773f2 100644 --- a/src/Orleans.Core/LogConsistency/LogConsistentGrain.cs +++ b/src/Orleans.Core/LogConsistency/LogConsistentGrain.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -57,8 +57,8 @@ public override void Participate(IGrainLifecycle lifecycle) lifecycle.Subscribe(GrainLifecycleStage.SetupState, OnSetupState); if(this is ILogConsistencyProtocolParticipant) { - lifecycle.Subscribe((int)GrainLifecycleStage.Activate - 1, PreActivate); - lifecycle.Subscribe((int)GrainLifecycleStage.Activate + 1, PostActivate); + lifecycle.Subscribe(GrainLifecycleStage.Activate - 1, PreActivate); + lifecycle.Subscribe(GrainLifecycleStage.Activate + 1, PostActivate); } } diff --git a/src/Orleans.Runtime/Hosting/LegacyClusterConfigurationExtensions.cs b/src/Orleans.Runtime/Hosting/LegacyClusterConfigurationExtensions.cs index 8f1235c769..0a7760ee88 100644 --- a/src/Orleans.Runtime/Hosting/LegacyClusterConfigurationExtensions.cs +++ b/src/Orleans.Runtime/Hosting/LegacyClusterConfigurationExtensions.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; @@ -15,8 +15,8 @@ namespace Orleans.Hosting { internal static class LegacyClusterConfigurationExtensions { - private const int SiloDefaultProviderInitStage = (int)SiloLifecycleStage.RuntimeStorageServices; - private const int SiloDefaultProviderStartStage = (int)SiloLifecycleStage.ApplicationServices; + private const int SiloDefaultProviderInitStage = SiloLifecycleStage.RuntimeStorageServices; + private const int SiloDefaultProviderStartStage = SiloLifecycleStage.ApplicationServices; public static IServiceCollection AddLegacyClusterConfigurationSupport(this IServiceCollection services, ClusterConfiguration configuration) { diff --git a/src/Orleans.Runtime/Lifecycle/SiloLifecycleExtensions.cs b/src/Orleans.Runtime/Lifecycle/SiloLifecycleExtensions.cs deleted file mode 100644 index 408f2db287..0000000000 --- a/src/Orleans.Runtime/Lifecycle/SiloLifecycleExtensions.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace Orleans.Runtime -{ - public static class SiloLifecycleExtensions - { - public static IDisposable Subscribe(this ISiloLifecycle observable, SiloLifecycleStage stage, ILifecycleObserver observer) - { - return observable.Subscribe((int)stage, observer); - } - - public static IDisposable Subscribe(this ISiloLifecycle observable, SiloLifecycleStage stage, Func onStart, Func onStop) - { - return observable.Subscribe((int)stage, onStart, onStop); - } - - public static IDisposable Subscribe(this ISiloLifecycle observable, SiloLifecycleStage stage, Func onStart) - { - return observable.Subscribe((int)stage, onStart); - } - } -} diff --git a/src/Orleans.Runtime/Lifecycle/SiloLifecycleStage.cs b/src/Orleans.Runtime/Lifecycle/SiloLifecycleStage.cs index 21d735e7e9..3cb448d198 100644 --- a/src/Orleans.Runtime/Lifecycle/SiloLifecycleStage.cs +++ b/src/Orleans.Runtime/Lifecycle/SiloLifecycleStage.cs @@ -1,39 +1,39 @@ - + namespace Orleans.Runtime { /// /// Stages of a silo's lifecycle. /// - public enum SiloLifecycleStage + public static class SiloLifecycleStage { /// /// Initialize silo runtime /// - RuntimeInitialize = 1000, + public const int RuntimeInitialize = 1000; /// /// Start runtime services /// - RuntimeServices = 2000, + public const int RuntimeServices = 2000; /// /// Initialize runtime storage /// - RuntimeStorageServices = 3000, + public const int RuntimeStorageServices = 3000; /// /// Start runtime services /// - RuntimeGrainServices = 4000, + public const int RuntimeGrainServices = 4000; /// /// Start application layer services /// - ApplicationServices = 5000, + public const int ApplicationServices = 5000; /// /// Silo is active and available to service requests /// - SiloActive = 6000, + public const int SiloActive = 6000; } }