Files
edmand46 6c590ca520 Server-side scenario execution: effects client replaces local engine
- client.Effects: typed effects + completion methods posting scenario callbacks
- client.Scenario reduced to TriggerAsync
- pending polling via Update() pump: 30s heartbeat + wait-deadline checks
- local engine, plan persistence (IPlanStateStore) and resume removed
- RealtimeService and realtime transports removed (relay never deployed)
- dead IPlanScheduler leftover removed
- models regenerated from openapi (ExecutionPlan/BoundaryNode gone, PendingEffect added)
2026-09-04 14:03:41 +03:00

32 lines
1.0 KiB
C#

using System.Threading;
using System.Threading.Tasks;
using RudderSdk.Core.Models.Scenarios;
namespace RudderSdk.Core;
/// <summary>
/// Scenario trigger. Execution lives on the server; resulting effects surface
/// through <see cref="RudderClient.Effects"/>.
/// </summary>
public sealed class ScenarioService
{
private readonly RudderClient _client;
internal ScenarioService(RudderClient client) => _client = client;
/// <summary>
/// Triggers scenarios by event name. Returned pending effects are ingested
/// into <see cref="RudderClient.Effects"/>.
/// </summary>
public async Task TriggerAsync(string eventName, CancellationToken cancellationToken = default)
{
var response = await _client.SendAsync<TriggerScenarioRequest, TriggerScenarioResponse>(
"POST",
"/sdk/v1/scenarios/trigger",
new TriggerScenarioRequest { Event = eventName },
cancellationToken).ConfigureAwait(false);
_client.Effects.Ingest(response?.Effects);
}
}