diff --git a/build/Version.props b/build/Version.props index dc72d597a5..35c46f8d56 100644 --- a/build/Version.props +++ b/build/Version.props @@ -3,12 +3,12 @@ - 4.10.6 + 4.11.0 3.0.0 9.0.1 9.0.0 10.0.0 - 6.0.3 + 6.0.4 5.3.0 1.1.1 1.2.0 diff --git a/src/DMAPI/tgs.dm b/src/DMAPI/tgs.dm index af09ab6711..7ddae3b0bb 100644 --- a/src/DMAPI/tgs.dm +++ b/src/DMAPI/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.0.3" +#define TGS_DMAPI_VERSION "6.0.4" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -102,6 +102,8 @@ // #define TGS_EVENT_WORLD_REBOOT 20 /// Watchdog event when TgsInitializationComplete() is called. No parameters. #define TGS_EVENT_WORLD_PRIME 21 +// DMAPI also doesnt implement this +// #define TGS_EVENT_DREAM_DAEMON_LAUNCH 22 // OTHER ENUMS diff --git a/src/Tgstation.Server.Host/Components/Events/EventType.cs b/src/Tgstation.Server.Host/Components/Events/EventType.cs index 5de479b2a6..a91bc2ab3f 100644 --- a/src/Tgstation.Server.Host/Components/Events/EventType.cs +++ b/src/Tgstation.Server.Host/Components/Events/EventType.cs @@ -137,5 +137,11 @@ namespace Tgstation.Server.Host.Components.Events /// [EventScript("WorldPrime")] WorldPrime, + + /// + /// After DD has launched. Not the same as WatchdogLaunch. Parameters: PID of DreamDaemon + /// + [EventScript("DreamDaemonLaunch")] + DreamDaemonLaunch, } } diff --git a/src/Tgstation.Server.Host/Components/InstanceFactory.cs b/src/Tgstation.Server.Host/Components/InstanceFactory.cs index e2c0a5afda..45b14b674a 100644 --- a/src/Tgstation.Server.Host/Components/InstanceFactory.cs +++ b/src/Tgstation.Server.Host/Components/InstanceFactory.cs @@ -271,6 +271,7 @@ namespace Tgstation.Server.Host.Components platformIdentifier, bridgeRegistrar, serverPortProvider, + eventConsumer, loggerFactory, loggerFactory.CreateLogger(), metadata); diff --git a/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs index 89a7e3d4aa..1248cc8b9d 100644 --- a/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs +++ b/src/Tgstation.Server.Host/Components/Session/ISessionControllerFactory.cs @@ -1,4 +1,4 @@ -using System.Threading; +using System.Threading; using System.Threading.Tasks; using Tgstation.Server.Api.Models.Internal; using Tgstation.Server.Host.Components.Byond; diff --git a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs index 1cc3960a7a..ae6fe179d3 100644 --- a/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs +++ b/src/Tgstation.Server.Host/Components/Session/SessionControllerFactory.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.Logging; using System; +using System.Collections.Generic; using System.Globalization; using System.Net.Sockets; using System.Text; @@ -11,6 +12,7 @@ using Tgstation.Server.Api.Models.Internal; using Tgstation.Server.Host.Components.Byond; using Tgstation.Server.Host.Components.Chat; using Tgstation.Server.Host.Components.Deployment; +using Tgstation.Server.Host.Components.Events; using Tgstation.Server.Host.Components.Interop; using Tgstation.Server.Host.Components.Interop.Bridge; using Tgstation.Server.Host.Core; @@ -80,6 +82,11 @@ namespace Tgstation.Server.Host.Components.Session /// readonly IServerPortProvider serverPortProvider; + /// + /// The for the + /// + readonly IEventConsumer eventConsumer; + /// /// The for the /// @@ -95,6 +102,8 @@ namespace Tgstation.Server.Host.Components.Session /// readonly Api.Models.Instance instance; + + /// /// Change a given into the appropriate DreamDaemon command line word /// @@ -145,6 +154,7 @@ namespace Tgstation.Server.Host.Components.Session /// The value of . /// The value of /// The value of . + /// The value of . public SessionControllerFactory( IProcessExecutor processExecutor, IByondManager byond, @@ -157,6 +167,7 @@ namespace Tgstation.Server.Host.Components.Session IPlatformIdentifier platformIdentifier, IBridgeRegistrar bridgeRegistrar, IServerPortProvider serverPortProvider, + EventConsumer eventConsumer, ILoggerFactory loggerFactory, ILogger logger, Api.Models.Instance instance) @@ -173,6 +184,7 @@ namespace Tgstation.Server.Host.Components.Session this.platformIdentifier = platformIdentifier ?? throw new ArgumentNullException(nameof(platformIdentifier)); this.bridgeRegistrar = bridgeRegistrar ?? throw new ArgumentNullException(nameof(bridgeRegistrar)); this.serverPortProvider = serverPortProvider ?? throw new ArgumentNullException(nameof(serverPortProvider)); + this.eventConsumer = eventConsumer ?? throw new ArgumentNullException(nameof(eventConsumer)); this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); this.logger = logger ?? throw new ArgumentNullException(nameof(logger)); } @@ -345,6 +357,17 @@ namespace Tgstation.Server.Host.Components.Session false, apiValidate); + // If this isnt a staging DD (From a Deployment), fire off an event + if (!apiValidate) + await eventConsumer.HandleEvent( + EventType.DreamDaemonLaunch, + new List + { + process.Id.ToString(CultureInfo.InvariantCulture) + }, + cancellationToken) + .ConfigureAwait(false); + return sessionController; } catch