Skip to content

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.

Uso personal limitado. Uso comercial sujeto a autorización escrita.