Sha256: 734ef918b69d9abb27c545ceec34520534d425c9c6a494f0b6529ab65019f3a9

Contents?: true

Size: 1.63 KB

Versions: 4

Compression:

Stored size: 1.63 KB

Contents

require 'drbqs/node/node'

module DRbQS
  module Test
    class Node < DRbQS::Node
      def initialize(log_level, transfer, queue)
        super(nil, :log_file => $stdout, :log_level => log_level)
        DRbQS::Transfer::Client.set(transfer.get_client(true)) if transfer
        @task_client = DRbQS::Node::TaskClient.new(nil, queue, nil, [DRbQS::Node::SAME_HOST_GROUP], 1)
        @special_task_number = 0
      end

      def server_on_same_host?
        true
      end

      def subdirectory_name(task_id)
        if task_id
          sprintf("T%08d", task_id)
        else
          sprintf("S%08d", (@special_task_number += 1))
        end
      end
      private :subdirectory_name

      def execute_task(task_id, marshal_obj, method_sym, args)
        DRbQS::Temporary.set_sub_directory(subdirectory_name(task_id))
        result = DRbQS::Task.execute_task(marshal_obj, method_sym, args)
        if files = DRbQS::Transfer.dequeue_all
          transfer_file(files)
        end
        if subdir = DRbQS::Temporary.subdirectory
          FileUtils.rm_r(subdir)
        end
        result
      end
      private :execute_task

      def calc
        if ary = @task_client.get_task
          task_id, marshal_obj, method_sym, args = ary
          result = execute_task(task_id, marshal_obj, method_sym, args)
          return [task_id, result]
        end
        nil
      end

      def finalize(finalization_task_ary)
        if finalization_task_ary
          finalization_task_ary.each do |task|
            args = task.simple_drb_args
            execute_task(nil, *args)
          end
        end
        clear_node_files
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
drbqs-0.1.1 lib/drbqs/server/test/node.rb
drbqs-0.1.0 lib/drbqs/server/test/node.rb
drbqs-0.0.19 lib/drbqs/server/test/node.rb
drbqs-0.0.18 lib/drbqs/server/test/node.rb