Sha256: 0946d29b70eacadb4cffaa08a568073bb9341a0303db9dead0066ab8092f6007

Contents?: true

Size: 1.31 KB

Versions: 4

Compression:

Stored size: 1.31 KB

Contents

# Author:: Nicolas Despres  <nicolas.despres@epita.fr>.
# Copyright:: Copyright (c) 2004 TTK Team. All rights reserved.
# License:: Ruby license.

# $LastChangedBy: polrop $
# $Id: drb_undumped_indexed_object.rb 73 2004-12-09 18:24:52Z polrop $


require 'drb'


module DRb

  module DRbUndumpedIndexedObject

    def DRbUndumpedIndexedObject.append_features(cl)
      super
      cl.module_eval do

        def _dump(depth)
          if self.class.include?(DRb::DRbUndumped)
            raise(TypeError, 'can\'t dump')
          end
          attribs = {}
          each_pair do |k, v|
            begin
              attribs[k] = Marshal.dump(v)
            rescue TypeError
              if (defined? LOG) and (not v.class.include? DRb::DRbUndumped)
                LOG.warn("#{self.class}._dump") do
                  "can't dump a #{k}:#{v.class}"
                end
              end
              attribs[k] = Marshal.dump(DRbObject.new(v))
            end
          end
          Marshal.dump([self.class, attribs])
        end

        def self._load(data)
          klass, attribs = Marshal.load(data)
          obj = klass.new
          attribs.each do |key, value|
            obj[key] = Marshal.load(value)
          end
          obj
        end
      end

    end

  end # module DRbUndumpedIndexedObject

end # module DRb

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
ttk-0.1.576 ruby_ex/drb/drb_undumped_indexed_object.rb
ttk-0.1.579 ruby_ex/drb/drb_undumped_indexed_object.rb
ttk-0.1.580 ruby_ex/drb/drb_undumped_indexed_object.rb
vcs-0.2.148 ruby_ex/drb/drb_undumped_indexed_object.rb