class Mmtrix::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/mmtrix/agent/pipe_service.rb, line 11 def initialize(channel_id) @channel_id = channel_id @collector = Mmtrix::Control::Server.new(:name => 'parent', :port => 0) @pipe = Mmtrix::Agent::PipeChannelManager.channels[@channel_id] if @pipe && @pipe.parent_pid != $$ @pipe.after_fork_in_child else Mmtrix::Agent.logger.error("No communication channel to parent process, please see https://mmtrix.com/docs/ruby/resque-instrumentation for more information.") end end
Public Instance Methods
analytic_event_data(events)
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 31 def analytic_event_data(events) write_to_pipe(:analytic_event_data, events) if events end
connect(config)
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 23 def connect(config) nil end
custom_event_data(events)
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 35 def custom_event_data(events) write_to_pipe(:custom_event_data, events) if events end
error_data(errors)
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 48 def error_data(errors) write_to_pipe(:error_data, errors) if errors end
get_agent_commands()
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 27 def get_agent_commands [] end
metric_data(unsent_timeslice_data)
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 39 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/mmtrix/agent/pipe_service.rb, line 67 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 MmtrixService
, and is a required interface for any Service class.
# File lib/mmtrix/agent/pipe_service.rb, line 63 def session yield end
shutdown(time)
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 56 def shutdown(time) @pipe.close if @pipe end
sql_trace_data(sql)
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 52 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/mmtrix/agent/pipe_service.rb, line 44 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/mmtrix/agent/pipe_service.rb, line 73 def marshal_payload(data) Mmtrix::LanguageSupport.with_cautious_gc do Marshal.dump(data) end end
write_to_pipe(endpoint, data)
click to toggle source
# File lib/mmtrix/agent/pipe_service.rb, line 79 def write_to_pipe(endpoint, data) @pipe.write(marshal_payload([endpoint, data])) if @pipe end