Sha256: 8344e5b4add0ad510d56bbfa3d25073bbaacc41ce29c28ad30d8ce564471c01c

Contents?: true

Size: 1.41 KB

Versions: 4

Compression:

Stored size: 1.41 KB

Contents

# Copyright: Copyright (c) 2004  Nicolas Despres. All rights reserved.
# Author: Nicolas Despres  <polrop@lrde.epita.fr>.
# License: Gnu General Public License.

# $LastChangedBy: polrop $
# $Id: drb_undumped_attributes.rb 88 2005-01-09 21:11:26Z polrop $


require 'drb/drb'


module DRb

  module DRbUndumpedAttributes

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

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

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

    end

  end # module DRbUndumpedAttributes

end # module DRb

Version data entries

4 entries across 4 versions & 2 rubygems

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