using System.Runtime.CompilerServices; using System.Text; using Speckle.Sdk.Serialisation.V2; using Speckle.Sdk.Serialisation.V2.Send; using Speckle.Sdk.Transports; namespace Speckle.Sdk.Testing.Framework; public class DummyReceiveServerObjectManager(IReadOnlyDictionary objects) : IServerObjectManager { public async IAsyncEnumerable<(string, string)> DownloadObjects( IReadOnlyCollection objectIds, string? attributeMask, IProgress? progress, [EnumeratorCancellation] CancellationToken cancellationToken ) { await Task.CompletedTask; foreach (var id in objectIds) { yield return (id, objects[id]); } } public async Task DownloadSingleObject( string objectId, IProgress? progress, CancellationToken cancellationToken ) { await Task.CompletedTask; return objects[objectId]; } public Task> HasObjects( IReadOnlyCollection objectIds, CancellationToken cancellationToken ) => throw new NotImplementedException(); public Task UploadObjects( IReadOnlyList objectsToUpload, bool compressPayloads, IProgress? progress, CancellationToken cancellationToken ) { long totalBytes = 0; foreach (var item in objectsToUpload) { totalBytes += Encoding.Default.GetByteCount(item.Json.Value); } progress?.Report(new(ProgressEvent.UploadBytes, totalBytes, totalBytes)); return Task.CompletedTask; } }