38 lines
972 B
C#
38 lines
972 B
C#
using Speckle.InterfaceGenerator;
|
|
using Speckle.Sdk;
|
|
using Speckle.Sdk.Common.Exceptions;
|
|
using Speckle.Sdk.Logging;
|
|
|
|
namespace Speckle.Connectors.Common.Operations;
|
|
|
|
[GenerateAutoInterface]
|
|
public class ReceiveConversionHandler(ISdkActivityFactory activityFactory) : IReceiveConversionHandler
|
|
{
|
|
public Exception? TryConvert(Action conversion)
|
|
{
|
|
using var convertActivity = activityFactory.Start("Converting object");
|
|
try
|
|
{
|
|
conversion();
|
|
convertActivity?.SetStatus(SdkActivityStatusCode.Ok);
|
|
return null;
|
|
}
|
|
catch (ConversionException ce)
|
|
{
|
|
//handle conversions but don't log to seq
|
|
return ce;
|
|
}
|
|
catch (OperationCanceledException)
|
|
{
|
|
//handle conversions but don't log to seq and also throw
|
|
throw;
|
|
}
|
|
catch (Exception ex) when (!ex.IsFatal())
|
|
{
|
|
convertActivity?.SetStatus(SdkActivityStatusCode.Error);
|
|
convertActivity?.RecordException(ex);
|
|
return ex;
|
|
}
|
|
}
|
|
}
|