4cc78c4bc9
* Use a stack channel for deserialization * multi-threaded * add object dictionary pool * more pooling * adjust sqlite transport * format * Optimize IsPropNameValid * object loader first pass * save test * add cache pre check * save better deserialize * mostly works * uses tasks but slower at end * rework to make more sense * add check to avoid multi-deserialize * modify max parallelism * async enqueuing of tasks * switch to more asyncenumerable * fmt * fmt * cleanup sqlite * make ServerObjectManager * revert change * add ability to skip cache check * cache json to know what is loaded * testing * clean up usage * clean up and added new op * Fix exception handling * fixing progress * remove codejam * Hides ObjectPool dependency * fmt * Use the 1.0 BCL async to try to be more compatible * rename to dependencies * Move Polly to internal dependencies * format * remove more old references * remove stackchannel * fixes for registration * remove console writeline * add cache check shortcut for root object * start refactoring send * recevie2 benchmark * add test for deserialize new * use channels for sending * test and fixes * Use same asyncinterfaces as Dynamo. Merge fixes * clean up * fix download object progress * put back from bad merge * intermediate commit: separating get child function from serializer * send didn't error * add channels * Use net48, netstandard2.1 and net8 * remove collection special case * have to make a tree of tasks even though it may serialize things twice * pre-id changing during serialize * need AsyncInterfaces for net48 :( * options changes * revert to netstandard2.0 and net8.0 * fix totals * revert httpcontext changes * format * clean up * active tasks works when accounting for id not being stable * add id tests * more fixes * works * format * Convert to BaseItem and use single SQLite checks to avoid locks * use locks and batch sqlite operations * hook up and handle null ids * remove unused parameter * remove progress from serializer itself * invert has objects call * readd object references * format * fix tests * remove active tasks check * bug fix for json cache * remove locks from sqlite * General Send test * add childclosures * redo extract all to be enumerable * group tests in projects * caching json does matter * cache checking should be managed by channels * format * Merge pull request #152 from specklesystems/new-json-test Uses a new objects test in Revit for serialization tests * add skip * add new roundtrip test * fix finish * clean up tests * check happens in serialize...don't do it twice * better progress reporting * fix progress reporting * only use detached properties when children gathering * move detached tests * add detached tests * fix merge * Fix progress change * fix more tests --------- Co-authored-by: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Co-authored-by: Claire Kuang <kuang.claire@gmail.com>
64 lines
2.3 KiB
C#
64 lines
2.3 KiB
C#
using System.Reflection;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Speckle.Sdk;
|
|
using Speckle.Sdk.Credentials;
|
|
using Speckle.Sdk.Helpers;
|
|
using Speckle.Sdk.Host;
|
|
using Speckle.Sdk.Logging;
|
|
using Speckle.Sdk.Models;
|
|
using Speckle.Sdk.Serialisation.V2;
|
|
using Speckle.Sdk.Serialisation.V2.Receive;
|
|
using Speckle.Sdk.Serialisation.V2.Send;
|
|
using Speckle.Sdk.Serialization.Testing;
|
|
|
|
const bool skipCache = false;
|
|
TypeLoader.Reset();
|
|
TypeLoader.Initialize(typeof(Base).Assembly, Assembly.GetExecutingAssembly());
|
|
|
|
/*
|
|
var url = "https://latest.speckle.systems/projects/a3ac1b2706/models/59d3b0f3c6"; //small?
|
|
var streamId = "a3ac1b2706";
|
|
var rootId = "7d53bcf28c6696ecac8781684a0aa006";*/
|
|
/*
|
|
var url = "https://latest.speckle.systems/"; //other?
|
|
var streamId = "368f598929";
|
|
var rootId = "67374cfe689c43ff8be12090af122244";*/
|
|
|
|
|
|
var url = "https://latest.speckle.systems/projects/2099ac4b5f/models/da511c4d1e"; //perf?
|
|
var streamId = "2099ac4b5f";
|
|
var rootId = "30fb4cbe6eb2202b9e7b4a4fcc3dd2b6";
|
|
|
|
var serviceCollection = new ServiceCollection();
|
|
serviceCollection.AddSpeckleSdk(HostApplications.Navisworks, HostAppVersion.v2023, "Test");
|
|
var serviceProvider = serviceCollection.BuildServiceProvider();
|
|
|
|
Console.WriteLine("Attach");
|
|
|
|
var token = serviceProvider.GetRequiredService<IAccountManager>().GetDefaultAccount()?.token;
|
|
var progress = new Progress(true);
|
|
var sqliteTransport = new SQLiteReceiveCacheManager(streamId);
|
|
var serverObjects = new ServerObjectManager(
|
|
serviceProvider.GetRequiredService<ISpeckleHttp>(),
|
|
serviceProvider.GetRequiredService<ISdkActivityFactory>(),
|
|
new Uri(url),
|
|
token
|
|
);
|
|
var o = new ObjectLoader(sqliteTransport, serverObjects, streamId, progress);
|
|
var process = new DeserializeProcess(progress, o);
|
|
var @base = await process.Deserialize(rootId, default, new(skipCache)).ConfigureAwait(false);
|
|
Console.WriteLine("Deserialized");
|
|
Console.ReadLine();
|
|
Console.WriteLine("Executing");
|
|
|
|
var process2 = new SerializeProcess(
|
|
progress,
|
|
new SQLiteSendCacheManager(streamId),
|
|
new DummyServerObjectManager(),
|
|
new SpeckleBaseChildFinder(new SpeckleBasePropertyGatherer()),
|
|
new SpeckleBasePropertyGatherer()
|
|
);
|
|
await process2.Serialize(streamId, @base, default, new SerializeProcessOptions(skipCache, true)).ConfigureAwait(false);
|
|
Console.WriteLine("Detach");
|
|
Console.ReadLine();
|