Sha256: 7b39f3ae8e2a0d9e3aed2c0d1d2cf14de7785a237cce28c8ba7e3a991e951543

Contents?: true

Size: 1.03 KB

Versions: 3

Compression:

Stored size: 1.03 KB

Contents

module Pione
  module Agent
    # Messenger is an agent for receiveing message logs.
    class Messenger < TupleSpaceClient
      set_agent_type :messenger

      # Create a messenger agent.
      #
      # @param tuple_space_server [TupleSpaceServer]
      #   tuple space server
      def initialize(tuple_space_server)
        super(tuple_space_server)
        @buffer = []
      end

      define_state :initialized
      define_state :print
      define_state :terminated

      define_state_transition :initialized => :print
      define_state_transition :print => :print

      # Transits to the state +print+.
      def transit_to_print
        tuples = take_all(Tuple[:message].any)
        tuples.sort{|a,b| a.timestamp <=> b.timestamp}.each do |tuple|
          msgs = tuple.contents
          msgs = [msgs] if tuple.contents.kind_of?(String)
          msgs.each do |msg|
            puts "%s%s %s" % ["  "*tuple.level, ("%5s" % tuple.head).color(tuple.color), msg]
          end
        end
      end
    end

    set_agent Messenger
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pione-0.2.2 lib/pione/agent/messenger.rb
pione-0.2.1 lib/pione/agent/messenger.rb
pione-0.2.0 lib/pione/agent/messenger.rb