class NewRelic::Agent::PipeService
Attributes
agent_id[RW]
buffer[R]
channel_id[R]
collector[RW]
pipe[R]
request_timeout[RW]
Public Class Methods
new(channel_id)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 10 def initialize(channel_id) @channel_id = channel_id @collector = NewRelic::Control::Server.new(:name => 'parent', :port => 0) @pipe = NewRelic::Agent::PipeChannelManager.channels[@channel_id] if @pipe && @pipe.parent_pid != $$ @pipe.after_fork_in_child else NewRelic::Agent.logger.error("No communication channel to parent process, please see https://newrelic.com/docs/ruby/resque-instrumentation for more information.") end end
Public Instance Methods
analytic_event_data(events)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 30 def analytic_event_data(events) write_to_pipe(:analytic_event_data, events) if events end
connect(config)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 22 def connect(config) nil end
custom_event_data(events)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 34 def custom_event_data(events) write_to_pipe(:custom_event_data, events) if events end
error_data(errors)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 47 def error_data(errors) write_to_pipe(:error_data, errors) if errors end
error_event_data(events)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 51 def error_event_data(events) write_to_pipe(:error_event_data, events) if events end
get_agent_commands()
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 26 def get_agent_commands [] end
metric_data(unsent_timeslice_data)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 38 def metric_data(unsent_timeslice_data) write_to_pipe(:metric_data, unsent_timeslice_data) {} end
reset_metric_id_cache()
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 70 def reset_metric_id_cache # we don't cache metric IDs, so nothing to do end
session() { || ... }
click to toggle source
Invokes the block it is passed. This is used to implement HTTP keep-alive in the NewRelicService, and is a required interface for any Service class.
# File lib/new_relic/agent/pipe_service.rb, line 66 def session yield end
shutdown(time)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 59 def shutdown(time) @pipe.close if @pipe end
sql_trace_data(sql)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 55 def sql_trace_data(sql) write_to_pipe(:sql_trace_data, sql) if sql end
transaction_sample_data(transactions)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 43 def transaction_sample_data(transactions) write_to_pipe(:transaction_sample_data, transactions) if transactions end
Private Instance Methods
marshal_payload(data)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 76 def marshal_payload(data) NewRelic::LanguageSupport.with_cautious_gc do Marshal.dump(data) end end
write_to_pipe(endpoint, data)
click to toggle source
# File lib/new_relic/agent/pipe_service.rb, line 82 def write_to_pipe(endpoint, data) @pipe.write(marshal_payload([endpoint, data])) if @pipe end