Class: PuppetDebugServer::LogMessageAggregator

Inherits:
Object
  • Object
show all
Defined in:
lib/puppet-debugserver/puppet_debug_session.rb

Overview

A helper class which hooks into log messages and saves them in receive order

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hook_manager) ⇒ LogMessageAggregator

Returns a new instance of LogMessageAggregator.

Parameters:



513
514
515
516
517
518
# File 'lib/puppet-debugserver/puppet_debug_session.rb', line 513

def initialize(hook_manager)
  @hook_manager = hook_manager
  @hook_id = :"aggregator#{object_id}"
  @messages = []
  @started = false
end

Instance Attribute Details

#messagesArray<Puppet::Util::Log> (readonly)

The saved messages

Returns:

  • (Array<Puppet::Util::Log>)


510
511
512
# File 'lib/puppet-debugserver/puppet_debug_session.rb', line 510

def messages
  @messages
end

Instance Method Details

#on_hook_log_message(args) ⇒ Object

Fires when a message is sent to the puppet logger Arguments:

Message - The message being sent to the log


537
538
539
# File 'lib/puppet-debugserver/puppet_debug_session.rb', line 537

def on_hook_log_message(args)
  @messages << args[0]
end

#start!Object

Start aggregating log messages



521
522
523
524
525
# File 'lib/puppet-debugserver/puppet_debug_session.rb', line 521

def start!
  return if @started

  @hook_manager.add_hook(:hook_log_message, @hook_id) { |args| on_hook_log_message(args) }
end

#stop!Object

Stop aggregating log messages



528
529
530
531
532
# File 'lib/puppet-debugserver/puppet_debug_session.rb', line 528

def stop!
  return unless @started

  @hook_manager.delete_hook(:hook_log_message, @hook_id)
end