internal static CallTargetReturn <TReturn> Invoke(TTarget instance, TReturn returnValue, Exception exception, CallTargetState state) { if (_continuationGenerator != null) { returnValue = _continuationGenerator.SetContinuation(instance, returnValue, exception, state); } if (_invokeDelegate != null) { CallTargetReturn <TReturn> returnWrap = _invokeDelegate(instance, returnValue, exception, state); returnValue = returnWrap.GetReturnValue(); } return(new CallTargetReturn <TReturn>(returnValue)); }
internal static CallTargetReturn <TReturn> Invoke(TTarget instance, TReturn returnValue, Exception exception, CallTargetState state) { if (_continuationGenerator != null) { returnValue = _continuationGenerator.SetContinuation(instance, returnValue, exception, state); // Restore previous scope if there is a continuation // This is used to mimic the ExecutionContext copy from the StateMachine Activity.Current = state.PreviousActivity; } if (_invokeDelegate != null) { CallTargetReturn <TReturn> returnWrap = _invokeDelegate(instance, returnValue, exception, state); returnValue = returnWrap.GetReturnValue(); } return(new CallTargetReturn <TReturn>(returnValue)); }
internal static CallTargetReturn <TReturn> Invoke(TTarget instance, TReturn returnValue, Exception exception, CallTargetState state) { if (_continuationGenerator != null) { returnValue = _continuationGenerator.SetContinuation(instance, returnValue, exception, state); // Restore previous scope if there is a continuation // This is used to mimic the ExecutionContext copy from the StateMachine if (((IDatadogTracer)Tracer.Instance).ScopeManager is IScopeRawAccess rawAccess) { rawAccess.Active = state.PreviousScope; } } if (_invokeDelegate != null) { CallTargetReturn <TReturn> returnWrap = _invokeDelegate(instance, returnValue, exception, state); returnValue = returnWrap.GetReturnValue(); } return(new CallTargetReturn <TReturn>(returnValue)); }
public Task <HttpResponseMessage> PublicSendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { Task <HttpResponseMessage> result = CachedResult; CallTargetState state = CallTargetState.GetDefault(); CallTargetReturn <Task <HttpResponseMessage> > cReturn = CallTargetReturn <Task <HttpResponseMessage> > .GetDefault(); Exception exception = null; try { try { state = CallTargetInvoker.BeginMethod <HttpClientHandlerIntegration, HttpClientHandler, HttpRequestMessage, CancellationToken>(this, request, cancellationToken); } catch (Exception ex) { CallTargetInvoker.LogException <HttpClientHandlerIntegration, HttpClientHandler>(ex); } result = CachedResult; } catch (Exception ex) { exception = ex; throw; } finally { try { cReturn = CallTargetInvoker.EndMethod <HttpClientHandlerIntegration, HttpClientHandler, Task <HttpResponseMessage> >(this, result, exception, state); result = cReturn.GetReturnValue(); } catch (Exception ex) { CallTargetInvoker.LogException <HttpClientHandlerIntegration, HttpClientHandler>(ex); } } return(result); }