Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > rinda/tuplespaceライブラリ > Rinda::TupleSpaceクラス
クラス・モジュールの継承リスト: Rinda::TupleSpace < MonitorMixin < DRb::DRbUndumped < Object < Kernel < BasicObject
Tuple Space を表すクラスです。
このクラスのインスタンスを drb を経由して公開することでタプルスペースを他のプロセスからアクセスさせることができるようになります。
タプルスペースを drb 経由で利用する側は DRb::DRbObject.new_with_uri などでこのオブジェクトのリモートオブジェクトを取得し、Rinda::TupleSpaceProxy をかぶせることで利用します。
タプルを Rinda::TupleSpace#write などで追加するときにその寿命を秒数で指定することができます。タプルをタプルスペースに追加してからその秒数過ぎるとタプルは削除されます。
ただし、指定秒数を過ぎてもすぐには削除されず、Rinda::TupleSpace.new の引数で指定した秒数ごとに「掃除用スレッド」が動き、それによって cancel されたタプルや期限切れになったタプルが削除されます。
sec には秒数の代わりに renewer を指定することもできます。これは renew という名前を持つオブジェクトで、上で説明した掃除用スレッドによって renew メソッドが呼び出されます。renew が 正の秒数を返した場合、有効期限がその秒数に更新されます。ただし、renew はタプルの有効期限が切れていない場合のみ呼び出されます(有効期限切れのタプルは削除されます)。
Rinda::SimpleRenewer はシンプルな renewer で renewer のサンプル実装でもあります。このクラスはデフォルトで寿命を180秒後に変更します。つまりこのクラスのインスタンスを renewer に指定すると無限に renew され続けるように思われますが、そうではありません。このクラスは DRb::DRbUndumped を include しているので、オブジェクトが生成されたプロセスが止まるとそのオブジェクトは無効になります。その時点でrenewの呼び出しに失敗するようになるので、そこからしばらく(数分)するとそのタプルは有効期限切れとなります。
定義 | 説明 | |
---|---|---|
new(period = 60) -> Rinda::TupleSpace
|
Rinda::TupleSpace オブジェクトを生成します。 |
定義 | 説明 | |
---|---|---|
notify(event, pattern, sec = nil) -> Rinda::NotifyTemplateEntry
|
event で指定した種類のイベントの監視を開始します。 |
|
read(tuple, sec=nil) -> [Array|Hash]
|
タプルスペース内の tuple にマッチするタプルを一つコピーして返します。 |
|
read_all(tuple) -> [Array|Hash]
|
タプルスペース内の tuple にマッチするタプルをすべてコピーして返します。 |
|
take(tuple, sec = nil) -> Array | Hash
|
tuple にマッチするタプルをタプルスペースから取り出して返します。 |
|
write(tuple, sec = nil) -> Rinda::TupleEntry
|
tuple をタプルスペースに加えます。 tuple を管理するための Rinda::TupleEntry オブジェクトを返します。 |
!
!=
__id__
__send__
instance_eval
instance_exec
method_missing
singleton_method_added
singleton_method_removed
singleton_method_undefined
mon_enter
mon_exit
mon_locked?
mon_owned?
mon_synchronize
mon_try_enter
new_cond
!~
<=>
==
===
=~
_dump
class
clone
define_singleton_method
display
enum_for
eql?
equal?
extend
freeze
frozen?
hash
initialize
initialize_copy
inspect
instance_of?
instance_variable_defined?
instance_variable_get
instance_variable_set
instance_variables
is_a?
itself
marshal_dump
marshal_load
method
methods
nil?
object_id
pretty_inspect
pretty_print
pretty_print_cycle
pretty_print_inspect
pretty_print_instance_variables
private_methods
protected_methods
psych_to_yaml
public_method
public_methods
public_send
remove_instance_variable
respond_to?
respond_to_missing?
send
singleton_class
singleton_method
singleton_methods
taint
tainted?
tap
to_a
to_ary
to_hash
to_int
to_io
to_proc
to_regexp
to_s
to_str
trust
untaint
untrust
untrusted?
yield_self
.yaml_tag
::ARGF
::ARGV
::DATA
::ENV
::FALSE
::NIL
::RUBY_COPYRIGHT
::RUBY_DESCRIPTION
::RUBY_ENGINE
::RUBY_ENGINE_VERSION
::RUBY_PATCHLEVEL
::RUBY_PLATFORM
::RUBY_RELEASE_DATE
::RUBY_REVISION
::RUBY_VERSION
::SCRIPT_LINES__
::STDERR
::STDIN
::STDOUT
::TOPLEVEL_BINDING
::TRUE