Apariencia
StreamResult: obtener un hub
StreamResult<T> representa el resultado inicial de obtener un StreamHub<T>. Su propiedad Value contiene el hub.
El adaptador está en platform.results.streaming; el núcleo platform.streaming no depende de Results, Errors ni Localization.
csharp
using Greencore.platform.results.streaming;
var resultado = StreamResult<int>.CreateBroadcast();
if (resultado.IsError)
{
Console.WriteLine(resultado.Error.Message);
return;
}
await using var hub = resultado.Value;
await using var suscripcion = hub.Subscribe();
await hub.PublishAsync(42); // Cabe en el búfer predeterminado.
hub.Complete();
await foreach (var numero in suscripcion.ReadAllAsync())
Console.WriteLine(numero); // 42.Puedes devolver StreamResult<T>.Fail(error) si la operación no puede comenzar, o Ok(hub) si ya tienes el hub.
El resultado no es una suscripción, no se enumera y no implementa disposición. El dueño del hub debe liberarlo. IsOk expresa que se obtuvo el hub, no que todas las lecturas futuras terminarán correctamente.
Recuerda: resultado → hub → suscripción → lectura.
Siguiente: elegir cómo distribuir.