Sha256: a70b72974e97612447d81fabfc3053886a7638f8d0242e786f82b3dec3a30029

Contents?: true

Size: 1.25 KB

Versions: 8

Compression:

Stored size: 1.25 KB

Contents

require 'rinda/ring'
require 'rinda/tuplespace'

module Marvin
  module Distributed
    class RingServer
      
      attr_accessor :tuple_space, :ring_server
      cattr_accessor :logger
      self.logger = Marvin::Logger
      
      def initialize
        self.tuple_space = Rinda::TupleSpace.new
        if Marvin::Settings.log_level == :debug
          observer = self.tuple_space.notify('write', [:marvin_event, Marvin::Settings.distributed_namespace, nil, nil, nil])
          Thread.start do
            observer.each do |i|
              event_name, args = i[1][2..3]
              Marvin::Logger.logger.debug "Marvin event added - #{event_name.inspect} w/ #{args.inspect}"
            end
          end
        end
        self.ring_server = Rinda::RingServer.new(self.tuple_space)
      end
      
      def self.run
        begin
          logger.info "Starting up DRb"
          drb_server = DRb.start_service
          logger.info "Creating TupleSpace & Ring Server Instances - Running on #{DRb.uri}"
          self.new
          logger.info "Started - Joining thread."
          DRb.thread.join
        rescue
          logger.fatal "Error starting ring server - please ensure another instance isn't already running."
        end
      end
      
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
Sutto-marvin-0.2.2 lib/marvin/distributed/ring_server.rb
Sutto-marvin-0.2.3 lib/marvin/distributed/ring_server.rb
Sutto-marvin-0.2.4 lib/marvin/distributed/ring_server.rb
Sutto-marvin-0.3.0 lib/marvin/distributed/ring_server.rb
Sutto-marvin-0.3.2 lib/marvin/distributed/ring_server.rb
Sutto-marvin-0.3.3 lib/marvin/distributed/ring_server.rb
Sutto-marvin-0.3.4 lib/marvin/distributed/ring_server.rb
Sutto-marvin-0.4.0 lib/marvin/distributed/ring_server.rb