要約
リモートプロセスからマーシャリングされて送られてきたオブジェクトで、そのクラスがローカルプロセス内では不明であるようなものを表すクラス。
このクラスのインスタンス内部ではマーシャリングされたバイト列を保持しています。DRB 経由で他のプロセスにこのオブジェクトを渡すと、 DRbUnknown オブジェクトではなくそのマーシャリングされたデータを渡します。
クラス名/定数名は DRb::DRbUnknown#name で取得することができます。 DRb::DRbUnknown#buf で保持しているマーシャリングされたバイト列を得ることができます。
このクラスのインスタンスの使い道としては、オブジェクトの中継が考えられます。 A, B, C と3つのプロセスがあって、drb によって A <-> B <-> C と通信しているとします。ここで A と C では定義されているが B では定義されていないクラスがあったとしましょう。A から B にマーシャリングされてオブジェクトが渡されると、B ではそのクラスの素性がわからないため DRbUnknown オブジェクトとして表現されます。それを C に送ると、マーシャリングされたバイト列が C に送られ、 C ではそれを元のオブジェクトに復元することができます。このように、中継プロセス B では中継するオブジェクトのクラスについて知らなくとも正しく動作します。
目次
インスタンスメソッド
buf -> String
[permalink][rdoc][edit]-
保持しているマーシャリングされたバイト列を返します。
exception -> DRb::DRbUnknownError
[permalink][rdoc][edit]-
マーシャリングされたオブジェクトが元のオブジェクトに変換できなかった、ということを意味する例外オブジェクトを返します。
この例外オブジェクトの DRb::DRbUnknownError#unknown を呼び出すと、 self が返されます。
name -> String
[permalink][rdoc][edit]-
保持しているマーシャリングされたオブジェクトのクラスの名前を返します。
reload -> object
[permalink][rdoc][edit]-
保持しているマーシャリングされたオブジェクトをRubyのオブジェクトに変換しようと試みます。
DRbUnknown オブジェクトを受け取った後に対応するクラスが定義された場合、このメソッドでそのクラスのオブジェクトに変換できます。変換を試みて失敗した場合は DRbUnknown オブジェクトを返します。