[#21157] あったらうれしいメソッド to_n, to_n!, to_s! — ogino@...

荻野です。あったらうれしいメソッドということで書いてみます。

16 messages 2000/03/03

[#21159] メソッドの入り口 — ogino@...

荻野です。もうひとつご指導ください。

93 messages 2000/03/03
[#21170] Re: メソッドの入り口 — Shin-ichiro Hara <sinara@...> 2000/03/03

原です。

[#21243] Re: メソッドの入り口 — keiju@... (石塚圭樹) 2000/03/07

けいじゅ@日本ラショナルソフトウェアです.

[#21247] Re: メソッドの入り口 — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/07

[#21267] 引数コピーとオブジェクト指向 (Re: メソッドの入り口) — Hideto ISHIBASHI <s34204@...> 2000/03/08

石橋秀仁です。

[#21272] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — 中村暁史 Nakamura Akifumi <BXQ04723@...> 2000/03/08

[#21276] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — nobu.nakada@... 2000/03/09

なかだです。

[#21279] Re: 引数コピーとオブジェクト指向 (Re: メソッドの入り口 ) — ogino@... 2000/03/09

oop未満の世界観の荻野です。

[#21282] Re: 引数コピーとオブジェクト指向 — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/03/09

越水です。

[#21285] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21293] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/10

松尾です。

[#21297] Re: 引数コピーとオブジェクト指向 — ogino@... 2000/03/10

荻野です。

[#21302] Re: 引数コピーとオブジェクト指向 — 土岐 仁謙 <toki@...> 2000/03/10

土岐です。

[#21371] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21374] Re: 引数コピーとオブジェクト指向 — TADA Tadashi <sho@...> 2000/03/13

ただただしです。

[#21365] Re: 引数コピーとオブジェクト指向 — Matsuo Hisanori <hisanori@...> 2000/03/13

松尾です。

[#21280] raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp>

24 messages 2000/03/09
[#21283] Re: raise non-Exception object — nobu.nakada@... 2000/03/09

なかだです。

[#21315] Re: raise non-Exception object — Kenichi Komiya <kom@...3.rim.or.jp> 2000/03/11

[#21342] Re: raise non-Exception object — nobu.nakada@... 2000/03/12

なかだです。

[#21384] ruby 1.4.4 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

35 messages 2000/03/13

[#21442] 配列内のソート — Takayuki Tanaka <tanaka@...>

こんにちは Tanです。

16 messages 2000/03/15

[#21583] ruby for Web — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

27 messages 2000/03/22
[#21584] Re: ruby for Web — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/03/22

なひです.

[#21649] net-1.1.10 — TAKAHASHI Masayoshi <maki@...>

高橋征義です。net/http 使いたおし中。

17 messages 2000/03/27

[#21669] new version of mod_ruby & eRuby — Shugo Maeda <shugo@...>

前田です。

14 messages 2000/03/28

[ruby-list:21274] Re: agent

From: Masatoshi SEKI <m_seki@...>
Date: 2000-03-08 18:46:25 UTC
List: ruby-list #21274
咳といいます。

MQ> 折角ですので osv.rb と一緒に使う script も載せます。

MQ> osv.rb は hello.rb を require しないといけないのが
MQ> 美しくないなあ,と思いました。


dRubyで書いてみました。
# telescriptまではほど遠い…。しくしく


□ How to play

プレースは同一のホストでも起こせます。

 ■ host1	プレースの起動
% ruby place.rb
druby://host1:1234      # -> このプレースのURI

 ■ host2	プレースの起動
% ruby place.rb
druby://host2:2345      # -> このプレースのURI

 ■ host3	片道のエージェント。引数に巡回するプレースの列を与える
% ruby hello.rb druby://host1:1234 druby://host2:2345

 ■ host3 	自宅に戻ってくるエージェント。
% ruby home.rb druby://host1:1234 druby://host2:2345


--- place.rb ---
require 'drb'	# http://www2a.biglobe.ne.jp/~seki/ruby/drb-1.1.tar.gz
require 'thread'

class Place
  include DRbUndumped

  def initialize(name)
    @pool = Queue.new
    @th = Thread.start { main_loop }
    @name = name
  end
  attr_reader :name

  def load_agent_code(mod)
#    require('agent/' + File.basename(mod))
    require mod
  end

  def enter(obj)
    @pool.push(obj)
  end

  def exec(obj)
    Thread.start do
      obj.live(self)
    end
  end

  def main_loop
    while(true)
      obj = @pool.pop
      exec(obj)
    end
  end

  private :exec
  private :main_loop
end

if __FILE__ == $0
  DRb.start_service(nil, Place.new($$))
  puts DRb.uri
  DRb.thread.join
end


--- hello.rb ---
class Hello
  def initialize(name, msg)
    @name = name
    @msg = msg
    @places = []
    @report = []
  end
  attr_reader :places
  attr_reader :name
  attr_reader :report

  def live(place)
    @report.push(place.name)
    greeting
    walk
  end

  def greeting
    puts "greeting[#{@name.inspect}]: #{@msg}"
  end

  def walk    
    place = @places.shift
    return unless place
    place.load_agent_code('hello')
    place.enter(self)
  end
end

if __FILE__ == $0
  require 'drb'

  DRb.start_service
  hello = Hello.new($$, 'Hello, World')
  ARGV.each do |uri|
    hello.places.push(DRbObject.new(nil, uri))
  end
  hello.walk
end

--- home.rb ---
require 'drb'
require 'hello'
require 'place'

class HomePlace < Place
  def waiting(agent_name)
    @my_agent_name = agent_name
  end

  def exec(obj)
    if @my_agent_name == obj.name
      puts "Hi, my agent: [#{obj.report.join(', ')}]." 
      exit
    end
    super(obj)
  end
end

if __FILE__ == $0
  place = HomePlace.new($$)
  DRb.start_service(nil, place)
  puts DRb.uri

  hello = Hello.new([$$, place.id], 'Hello, World')
  place.waiting(hello.name)
  ARGV.each do |uri|
    hello.places.push(DRbObject.new(nil, uri))
  end
  hello.places.push(DRbObject.new(place))
  hello.walk

  DRb.thread.join
end

In This Thread

Prev Next