6c590ca520
- 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)
32 lines
1.0 KiB
C#
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);
|
|
}
|
|
}
|