# DRb::DRbUnknown (Class)

In: | drb/drb.rb
Parent: | Object

Class wrapping a marshalled object whose type is unknown locally.

If an object is returned by a method invoked over drb, but the class of the object is unknown in the client namespace, or the object is a constant unknown in the client namespace, then the still-marshalled object is returned wrapped in a DRbUnknown instance.

If this object is passed as an argument to a method invoked over drb, then the wrapped object is passed instead.

The class or constant name of the object can be read from the `name` attribute. The marshalled object is held in the `buf` attribute.

## Methods

exception new reload

## Attributes

buf | [R] | Buffer contained the marshalled, unknown object.
name | [R] | The name of the unknown thing. Class name for unknown objects; variable name for unknown constants.

## Public Class methods

new(err, buf)

Create a new DRbUnknown object.

`buf` is a string containing a marshalled object that could not be unmarshalled. `err` is the error message that was raised when the unmarshalling failed. It is used to determine the name of the unmarshalled object.

[Source]

    # File drb/drb.rb, line 453
        def initialize(err, buf)
          case err
          when /uninitialized constant (\S+)/
            @name = $1
          when /undefined class\/module (\S+)/
            @name = $1
          else
            @name = nil
          end
          @buf = buf
        end

## Public Instance methods

reload()

Attempt to load the wrapped marshalled object again.

If the class of the object is now known locally, the object will be unmarshalled and returned. Otherwise, a new but identical DRbUnknown object will be returned.

[Source]

    # File drb/drb.rb, line 491
        def reload
          self.class._load(@buf)
        end

exception()

Create a DRbUnknownError exception containing this object.

[Source]

    # File drb/drb.rb, line 496
        def exception
          DRbUnknownError.new(self)
        end

[Validate]