private static CallTargetState CommonOnMethodBegin(CouchbaseTags tags)
 {
     try
     {
         var tracer      = Tracer.Instance;
         var serviceName = tracer.Settings.GetServiceName(tracer, ServiceName);
         var scope       = tracer.StartActiveInternal(OperationName, serviceName: serviceName, tags: tags);
         scope.Span.Type         = SpanTypes.Db;
         scope.Span.ResourceName = tags.OperationCode;
         tracer.TracerManager.Telemetry.IntegrationGeneratedSpan(IntegrationId);
         return(new CallTargetState(scope));
     }
     catch (Exception ex)
     {
         Log.Error(ex, "Error creating or populating scope.");
         return(CallTargetState.GetDefault());
     }
 }
        internal static CallTargetState CommonOnMethodBeginV3 <TOperation>(TOperation tOperation)
        {
            if (!Tracer.Instance.Settings.IsIntegrationEnabled(IntegrationId) || tOperation == null)
            {
                // integration disabled, don't create a scope, skip this trace
                return(CallTargetState.GetDefault());
            }

            var operation = tOperation.DuckCast <OperationStructV3>();

            var tags = new CouchbaseTags()
            {
                OperationCode = operation.OpCode.ToString(),
                Bucket        = operation.BucketName,
                Key           = operation.Key,
            };

            return(CommonOnMethodBegin(tags));
        }
        internal static CallTargetState CommonOnMethodBegin <TOperation>(TOperation tOperation)
        {
            if (!Tracer.Instance.Settings.IsIntegrationEnabled(IntegrationId) || tOperation == null)
            {
                // integration disabled, don't create a scope, skip this trace
                return(CallTargetState.GetDefault());
            }

            var operation = tOperation.DuckCast <OperationStruct>();

            var host = operation.CurrentHost?.Address?.ToString();
            var port = operation.CurrentHost?.Port.ToString();
            var code = operation.OperationCode.ToString();

            var tags = new CouchbaseTags()
            {
                OperationCode = code,
                Key           = operation.Key,
                Host          = host,
                Port          = port
            };

            return(CommonOnMethodBegin(tags));
        }