Sha256: 79a4e65ca30eb96b8f8c9c6b866d1b906e6c0b8c1a478913b620116f8a883992

Contents?: true

Size: 1.46 KB

Versions: 6

Compression:

Stored size: 1.46 KB

Contents

module DRbQS
  class Server

    # This class is used in DRbQS::Server::NodeList and DRbQS::Server::Queue to save some histories.
    class History
      include DRbQS::Misc

      def initialize
        @data = Hash.new { |h, k| h[k] = Array.new }
      end

      def set(id, *args)
        @data[id] << args.unshift(Time.now)
      end

      def size
        @data.size
      end

      def events(id)
        @data[id]
      end

      def number_of_events(id)
        @data[id].size
      end

      def each(&block)
        @data.each(&block)
      end
    end

    class TaskHistory < DRbQS::Server::History
      attr_reader :finished_task_number

      def initialize
        super
        @finished_task_number = 0
      end

      def set(id, *args)
        if args[0] == :result
          @finished_task_number += 1
        end
        super(id, *args)
      end

      def log_strings
        s = ''
        each do |task_id, events|
          s << "Task #{task_id}\n"
          events.each do |ev|
            case ev[1]
            when :add
              s << "  #{time_to_history_string(ev[0])}\t#{ev[1]}"
              s << "\t" << ev[2].to_s if ev[2]
              s << "\n"
            when :requeue, :hook
              s << "  #{time_to_history_string(ev[0])}\t#{ev[1]}\n"
            when :calculate, :result
              s << "  #{time_to_history_string(ev[0])}\t#{ev[1]} (node #{ev[2]})\n"
            end
          end
        end
        s
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
drbqs-0.1.1 lib/drbqs/server/history.rb
drbqs-0.1.0 lib/drbqs/server/history.rb
drbqs-0.0.19 lib/drbqs/server/history.rb
drbqs-0.0.18 lib/drbqs/server/history.rb
drbqs-0.0.17 lib/drbqs/server/history.rb
drbqs-0.0.16 lib/drbqs/server/history.rb