# File lib/new_relic/agent/datastores.rb, line 105 def self.wrap(product, operation, collection = nil, callback = nil) return yield unless operation segment = NewRelic::Agent::Transaction.start_datastore_segment(product, operation, collection) begin result = yield ensure if callback elapsed_time = (Time.now - segment.start_time).to_f callback.call(result, segment.name, elapsed_time) end segment.finish end end