예제 #1
0
        public CanWrapResponse CanWrap(InstrumentedMethodInfo methodInfo)
        {
            var method  = methodInfo.Method;
            var canWrap = method.MatchesAny("Couchbase.NetClient", "Couchbase.CouchbaseBucket", new[]
            {
                "AppendAsync",
                "DecrementAsync",
                "ExistsAsync",
                "GetAndLockAsync",
                "GetAsync",
                "GetAndTouchAsync",
                "GetFromReplicaAsync",
                "GetWithLockAsync",
                "IncrementAsync",
                "InsertAsync",
                "InvokeAsync",
                "ObserveAsync",
                "PrependAsync",
                "RemoveAsync",
                "ReplaceAsync",
                "TouchAsync",
                "UnlockAsync",
                "UpsertAsync"
            });

            if (canWrap)
            {
                return(TaskFriendlySyncContextValidator.CanWrapAsyncMethod("Couchbase.NetClient", "Couchbase.CouchbaseBucket", methodInfo.Method.MethodName));
            }

            return(new CanWrapResponse(false));
        }
        public CanWrapResponse CanWrap(InstrumentedMethodInfo instrumentedMethodInfo)
        {
            var canWrap = PossibleWrapperNames.Contains(instrumentedMethodInfo.RequestedWrapperName, StringComparer.OrdinalIgnoreCase);

            if (canWrap && instrumentedMethodInfo.IsAsync)
            {
                return(TaskFriendlySyncContextValidator.CanWrapAsyncMethod("custom", "custom", instrumentedMethodInfo.Method.MethodName));
            }

            return(new CanWrapResponse(canWrap));
        }
        public CanWrapResponse CanWrap(InstrumentedMethodInfo methodInfo)
        {
            var canWrap = WrapperNames.Contains(methodInfo.RequestedWrapperName, StringComparer.OrdinalIgnoreCase);

            if (canWrap && ExecuteAsAsync)
            {
                var method = methodInfo.Method;
                return(TaskFriendlySyncContextValidator.CanWrapAsyncMethod(method.Type.Assembly.GetName().Name, method.Type.FullName, method.MethodName));
            }

            return(new CanWrapResponse(canWrap));
        }
        public CanWrapResponse CanWrap(InstrumentedMethodInfo instrumentedMethodInfo)
        {
            var canWrap = instrumentedMethodInfo.IsAsync &&
                          PossibleWrapperNames.Contains(instrumentedMethodInfo.RequestedWrapperName);

            if (!canWrap)
            {
                return(new CanWrapResponse(false));
            }

            return(TaskFriendlySyncContextValidator.CanWrapAsyncMethod("custom", "custom", instrumentedMethodInfo.Method.MethodName));
        }
예제 #5
0
        public CanWrapResponse CanWrap(InstrumentedMethodInfo methodInfo)
        {
            var method  = methodInfo.Method;
            var canWrap = method.MatchesAny("Couchbase.NetClient", "Couchbase.CouchbaseBucket", "QueryAsync");

            if (canWrap)
            {
                return(TaskFriendlySyncContextValidator.CanWrapAsyncMethod("Couchbase.NetClient", "Couchbase.CouchbaseBucket", "QueryAsync"));
            }

            return(new CanWrapResponse(false));
        }
예제 #6
0
        public CanWrapResponse CanWrap(InstrumentedMethodInfo methodInfo)
        {
            var method = methodInfo.Method;

            if (method.MatchesAny(assemblyName: "System.Net.Http", typeName: InstrumentedTypeName, methodName: "SendAsync"))
            {
                return(TaskFriendlySyncContextValidator.CanWrapAsyncMethod("System.Net.Http", "System.Net.Http.HttpClient", method.MethodName));
            }
            else
            {
                return(new CanWrapResponse(false));
            }
        }
예제 #7
0
        public CanWrapResponse CanWrap(InstrumentedMethodInfo methodInfo)
        {
            var method = methodInfo.Method;

            if (method.MatchesAny(assemblyName: AssemblyName, typeNames: new[] { HttpClientTypeName, SocketsHttpHandlerTypeName }, methodName: SendAsyncMethodName))
            {
                return(TaskFriendlySyncContextValidator.CanWrapAsyncMethod(AssemblyName, HttpClientTypeName, method.MethodName));
            }
            else if (method.MatchesAny(assemblyName: AssemblyName, typeName: SocketsHttpHandlerTypeName, methodName: SendMethodName))
            {
                return(new CanWrapResponse(true));
            }

            return(new CanWrapResponse(false));
        }
예제 #8
0
        public CanWrapResponse CanWrap(InstrumentedMethodInfo methodInfo)
        {
            var method = methodInfo.Method;

            var version = method.Type.Assembly.GetName().Version;

            if (version == null)
            {
                return(new CanWrapResponse(false));
            }

            var canWrap = method.MatchesAny(assemblyName: "System.Web.Http", typeName: "System.Web.Http.Controllers.ApiControllerActionInvoker", methodName: "InvokeActionAsync") &&
                          version.Major == 4; // WebApi v1 == System.Web.Http v4

            if (canWrap)
            {
                return(TaskFriendlySyncContextValidator.CanWrapAsyncMethod("System.Web.Http", "System.Web.Http.Controllers.ApiControllerActionInvoker", method.MethodName));
            }

            return(new CanWrapResponse(false));
        }