From 6ec355f93153573e6b96133a51d827f004c9639d Mon Sep 17 00:00:00 2001 From: pas2704 Date: Sun, 2 Jul 2023 13:37:51 -0400 Subject: [PATCH] Call new action if action is being added to initialized event when already initialized --- Torch.Server/TorchServer.cs | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/Torch.Server/TorchServer.cs b/Torch.Server/TorchServer.cs index 5e2ae81..b0e7a9e 100644 --- a/Torch.Server/TorchServer.cs +++ b/Torch.Server/TorchServer.cs @@ -121,7 +121,38 @@ namespace Torch.Server /// public ServerState State { get; private set; } - public event Action Initialized; + private Action _initializedEvent; + + public event Action Initialized + { + add + { + var action = _initializedEvent; + Action action2; + do + { + action2 = action; + var action3 = (Action)Delegate.Combine(action2, value); + action = Interlocked.CompareExchange(ref _initializedEvent, action3, action2); + } + while (action != action2); + + if (GetManager().DedicatedConfig != null) + value(this); //if already initialized + } + remove + { + var action = _initializedEvent; + Action action2; + do + { + action2 = action; + var action3 = (Action)Delegate.Remove(action2, value); + action = Interlocked.CompareExchange(ref _initializedEvent, action3, action2); + } + while (action != action2); + } + } public int OnlinePlayers { get; private set; } @@ -132,7 +163,7 @@ namespace Torch.Server base.Init(); GetManager().LoadInstance(InstancePath); CanRun = true; - Initialized?.Invoke(this); + _initializedEvent?.Invoke(this); Log.Info($"Initialized server '{InstanceName}' at '{InstancePath}'"); }