Files
speckle-sharp-connectors/Sdk/Speckle.Connectors.Common/Operations/ReceiveConversionHandler.cs
T
2025-06-20 10:38:48 +01:00

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;
}
}
}