e5a09155a2
* Serialize now waits for the scheduler to be completed before returning * formatting * wait in deserialize too * Pass cancellation token to download, refactor how things are passed/created * responses are now streamed and cancel them earlier * format * add manual empty message for sending that definitely knows when the channels are empty * Fix configure awaits * more configure await false
83 lines
2.4 KiB
C#
83 lines
2.4 KiB
C#
using Microsoft.Extensions.Logging;
|
|
using Speckle.Sdk.Serialisation.V2.Receive;
|
|
using Speckle.Sdk.Serialisation.V2.Send;
|
|
using Speckle.Sdk.SQLite;
|
|
using Speckle.Sdk.Transports;
|
|
|
|
namespace Speckle.Sdk.Serialisation.V2;
|
|
|
|
public interface ISerializeProcessFactory
|
|
{
|
|
ISerializeProcess CreateSerializeProcess(
|
|
Uri url,
|
|
string streamId,
|
|
string? authorizationToken,
|
|
IProgress<ProgressArgs>? progress,
|
|
CancellationToken cancellationToken,
|
|
SerializeProcessOptions? options = null
|
|
);
|
|
IDeserializeProcess CreateDeserializeProcess(
|
|
Uri url,
|
|
string streamId,
|
|
string? authorizationToken,
|
|
IProgress<ProgressArgs>? progress,
|
|
CancellationToken cancellationToken,
|
|
DeserializeProcessOptions? options = null
|
|
);
|
|
}
|
|
|
|
public class SerializeProcessFactory(
|
|
IBaseChildFinder baseChildFinder,
|
|
IObjectSerializerFactory objectSerializerFactory,
|
|
IBaseDeserializer baseDeserializer,
|
|
ISqLiteJsonCacheManagerFactory sqLiteJsonCacheManagerFactory,
|
|
IServerObjectManagerFactory serverObjectManagerFactory,
|
|
ILoggerFactory loggerFactory
|
|
) : ISerializeProcessFactory
|
|
{
|
|
public ISerializeProcess CreateSerializeProcess(
|
|
Uri url,
|
|
string streamId,
|
|
string? authorizationToken,
|
|
IProgress<ProgressArgs>? progress,
|
|
CancellationToken cancellationToken,
|
|
SerializeProcessOptions? options = null
|
|
)
|
|
{
|
|
var sqLiteJsonCacheManager = sqLiteJsonCacheManagerFactory.CreateFromStream(streamId);
|
|
var serverObjectManager = serverObjectManagerFactory.Create(url, streamId, authorizationToken);
|
|
return new SerializeProcess(
|
|
progress,
|
|
sqLiteJsonCacheManager,
|
|
serverObjectManager,
|
|
baseChildFinder,
|
|
new BaseSerializer(sqLiteJsonCacheManager, objectSerializerFactory),
|
|
loggerFactory,
|
|
cancellationToken,
|
|
options
|
|
);
|
|
}
|
|
|
|
public IDeserializeProcess CreateDeserializeProcess(
|
|
Uri url,
|
|
string streamId,
|
|
string? authorizationToken,
|
|
IProgress<ProgressArgs>? progress,
|
|
CancellationToken cancellationToken,
|
|
DeserializeProcessOptions? options = null
|
|
)
|
|
{
|
|
var sqLiteJsonCacheManager = sqLiteJsonCacheManagerFactory.CreateFromStream(streamId);
|
|
var serverObjectManager = serverObjectManagerFactory.Create(url, streamId, authorizationToken);
|
|
return new DeserializeProcess(
|
|
sqLiteJsonCacheManager,
|
|
serverObjectManager,
|
|
progress,
|
|
baseDeserializer,
|
|
loggerFactory,
|
|
cancellationToken,
|
|
options
|
|
);
|
|
}
|
|
}
|