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