Sha256: dc12f0b4e4e652dc012066624d3b75febd907192fac26c55cb99edea39ff72b1

Contents?: true

Size: 1.97 KB

Versions: 10

Compression:

Stored size: 1.97 KB

Contents

# encoding: utf-8

module TingYun
  module Instrumentation
    module Support
      class TransactionNamer


        def self.prefix_for_category(txn, category = nil)
          category ||= (txn && txn.category)

          case category
            when :controller then
              ::TingYun::Agent::Transaction::CONTROLLER_PREFIX
            when :task then
              ::TingYun::Agent::Transaction::TASK_PREFIX
            when :rack then
              ::TingYun::Agent::Transaction::RACK_PREFIX
            when :uri then
              ::TingYun::Agent::Transaction::CONTROLLER_PREFIX
            when :sinatra then
              ::TingYun::Agent::Transaction::SINATRA_PREFIX
            when :middleware then
              ::TingYun::Agent::Transaction::MIDDLEWARE_PREFIX
            when :grape then
              ::TingYun::Agent::Transaction::GRAPE_PREFIX
            when :rake then
              ::TingYun::Agent::Transaction::RAKE_PREFIX
            else
              "#{category.to_s}/" # for internal use only
          end
        end


        def self.name_for(txn, traced_obj, category, options={})
          "#{prefix_for_category(txn, category)}#{path_name(traced_obj, options)}"
        end

        def self.path_name(traced_obj, options={})
          return options[:path] if options[:path]

          class_name = klass_name(traced_obj, options)
          if options[:name]
            if class_name
              "#{class_name}/#{options[:name]}"
            else
              options[:name]
            end
          elsif traced_obj.respond_to?(:tingyun_metric_path)
            traced_obj.tingyun_metric_path
          else
            class_name
          end
        end

        def self.klass_name(traced_obj, options={})
          return options[:class_name] if options[:class_name]

          if (traced_obj.is_a?(Class) || traced_obj.is_a?(Module))
            traced_obj.name
          else
            traced_obj.class.name
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
tingyun_rpm-1.2.0 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.1.4.2 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.1.4.1 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.1.4 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.1.3 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.1.2 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.1.1 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.1.0 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.0.7 lib/ting_yun/instrumentation/support/transaction_namer.rb
tingyun_rpm-1.0.6 lib/ting_yun/instrumentation/support/transaction_namer.rb