tgstation-server 6.1.2
The /tg/station 13 server suite
Loading...
Searching...
No Matches
EventConsumer.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Threading;
4using System.Threading.Tasks;
5
8
10{
13 {
18
23
29 {
30 this.configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
31 }
32
34 public async ValueTask HandleEvent(EventType eventType, IEnumerable<string?> parameters, bool deploymentPipeline, CancellationToken cancellationToken)
35 {
36 ArgumentNullException.ThrowIfNull(parameters);
37
38 if (watchdog == null)
39 throw new InvalidOperationException("EventConsumer used without watchdog set!");
40
41 var scriptTask = configuration.HandleEvent(eventType, parameters, deploymentPipeline, cancellationToken);
42 await watchdog.HandleEvent(eventType, parameters, deploymentPipeline, cancellationToken);
43 await scriptTask;
44 }
45
51 {
52 ArgumentNullException.ThrowIfNull(watchdog);
53 var oldWatchdog = Interlocked.CompareExchange(ref this.watchdog, watchdog, null);
54 if (oldWatchdog != null)
55 throw new InvalidOperationException("watchdog already set!");
56 }
57 }
58}
IWatchdog? watchdog
The IWatchdog for the EventConsumer.
readonly IConfiguration configuration
The IConfiguration for the EventConsumer.
async ValueTask HandleEvent(EventType eventType, IEnumerable< string?> parameters, bool deploymentPipeline, CancellationToken cancellationToken)
Handle a given eventType . A ValueTask representing the running operation.
void SetWatchdog(IWatchdog watchdog)
Set the watchdog for the EventConsumer.
EventConsumer(IConfiguration configuration)
Initializes a new instance of the EventConsumer class.
Consumes EventTypes and takes the appropriate actions.
ValueTask HandleEvent(EventType eventType, IEnumerable< string?> parameters, bool deploymentPipeline, CancellationToken cancellationToken)
Handle a given eventType .
For managing the Configuration directory.
Runs and monitors the twin server controllers.
Definition: IWatchdog.cs:16
EventType
Types of events. Mirror in tgs.dm. Prefer last listed name for script.
Definition: EventType.cs:7