diff --git a/sdk/core/System.ClientModel/api/System.ClientModel.net6.0.cs b/sdk/core/System.ClientModel/api/System.ClientModel.net6.0.cs index 759887c841da..f8007c63f4e3 100644 --- a/sdk/core/System.ClientModel/api/System.ClientModel.net6.0.cs +++ b/sdk/core/System.ClientModel/api/System.ClientModel.net6.0.cs @@ -40,6 +40,11 @@ protected internal ClientResult(T value, System.ClientModel.Primitives.PipelineR public virtual T Value { get { throw null; } } public static implicit operator T (System.ClientModel.ClientResult result) { throw null; } } + public abstract partial class StreamingClientResult : System.ClientModel.ClientResult, System.Collections.Generic.IAsyncEnumerable + { + protected internal StreamingClientResult(System.ClientModel.Primitives.PipelineResponse response) : base (default(System.ClientModel.Primitives.PipelineResponse)) { } + public abstract System.Collections.Generic.IAsyncEnumerator GetAsyncEnumerator(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + } } namespace System.ClientModel.Primitives { diff --git a/sdk/core/System.ClientModel/api/System.ClientModel.netstandard2.0.cs b/sdk/core/System.ClientModel/api/System.ClientModel.netstandard2.0.cs index a164fdf6bbd4..0ebd3838b56b 100644 --- a/sdk/core/System.ClientModel/api/System.ClientModel.netstandard2.0.cs +++ b/sdk/core/System.ClientModel/api/System.ClientModel.netstandard2.0.cs @@ -40,6 +40,11 @@ protected internal ClientResult(T value, System.ClientModel.Primitives.PipelineR public virtual T Value { get { throw null; } } public static implicit operator T (System.ClientModel.ClientResult result) { throw null; } } + public abstract partial class StreamingClientResult : System.ClientModel.ClientResult, System.Collections.Generic.IAsyncEnumerable + { + protected internal StreamingClientResult(System.ClientModel.Primitives.PipelineResponse response) : base (default(System.ClientModel.Primitives.PipelineResponse)) { } + public abstract System.Collections.Generic.IAsyncEnumerator GetAsyncEnumerator(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)); + } } namespace System.ClientModel.Primitives { diff --git a/sdk/core/System.ClientModel/src/Convenience/ClientResult.cs b/sdk/core/System.ClientModel/src/Convenience/ClientResult.cs index 5f60f040fa3f..d3db297f2d89 100644 --- a/sdk/core/System.ClientModel/src/Convenience/ClientResult.cs +++ b/sdk/core/System.ClientModel/src/Convenience/ClientResult.cs @@ -92,5 +92,8 @@ public static ClientResult FromValue(T value, PipelineResponse response) public static ClientResult FromOptionalValue(T? value, PipelineResponse response) => new ClientResult(value, response); + //public static StreamingClientResult FromStreamingValue(T value, PipelineResponse response) + // => new StreamingClientResult(response); + #endregion } diff --git a/sdk/core/System.ClientModel/src/Convenience/StreamingClientResultOfT.cs b/sdk/core/System.ClientModel/src/Convenience/StreamingClientResultOfT.cs new file mode 100644 index 000000000000..71f68efbdd0b --- /dev/null +++ b/sdk/core/System.ClientModel/src/Convenience/StreamingClientResultOfT.cs @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System.ClientModel.Primitives; +using System.Collections.Generic; +using System.Threading; + +namespace System.ClientModel; + +#pragma warning disable CS1591 // public XML comments +public abstract class StreamingClientResult : ClientResult, IAsyncEnumerable +{ + protected internal StreamingClientResult(PipelineResponse response) : base(response) + { + } + + public abstract IAsyncEnumerator GetAsyncEnumerator(CancellationToken cancellationToken = default); +} +#pragma warning restore CS1591 // public XML comments