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>
37 lines
892 B
C#
37 lines
892 B
C#
using Speckle.Sdk.Transports;
|
|
|
|
namespace Speckle.Sdk.Serialization.Testing;
|
|
|
|
public class Progress(bool write) : IProgress<ProgressArgs>
|
|
{
|
|
private readonly TimeSpan DEBOUNCE = TimeSpan.FromSeconds(1);
|
|
private DateTime _lastTime = DateTime.UtcNow;
|
|
|
|
private long _totalBytes;
|
|
|
|
public void Report(ProgressArgs value)
|
|
{
|
|
if (write)
|
|
{
|
|
if (value.ProgressEvent == ProgressEvent.DownloadBytes)
|
|
{
|
|
Interlocked.Add(ref _totalBytes, value.Count);
|
|
}
|
|
var now = DateTime.UtcNow;
|
|
if (now - _lastTime >= DEBOUNCE)
|
|
{
|
|
if (value.ProgressEvent == ProgressEvent.DownloadBytes)
|
|
{
|
|
Console.WriteLine(value.ProgressEvent + " t " + _totalBytes);
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine(value.ProgressEvent + " c " + value.Count + " t " + value.Total);
|
|
}
|
|
|
|
_lastTime = now;
|
|
}
|
|
}
|
|
}
|
|
}
|