Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > 38d9966b2e862f62a2028762250d72f3 > files > 49

ruby-bdb-0.6.5-3.fc12.i686.rpm

#!/usr/bin/ruby
def do_client
   $env.rep_start $me, BDB::REP_CLIENT
   sleep 5
   Thread.new do
      db = ''
      begin
         db = $env.open_db(BDB::BTREE, $db,  nil, "r")
      rescue
         sleep 5
         retry
      end
      while true
	 break if $master == BDB::MC::ENVID
	 display_message("content #{Time.now}")
	 db.each do |k, v|
	    puts "#{k} -- #{v}"
	 end
	 sleep 3
      end
      db.close
   end

   Thread.new do
      count = 0
      while $master == BDB::EID_INVALID
	 if (count % 2) == 0
	       $env.rep_start $me, BDB::REP_CLIENT
	 else
	    begin
	       $master = $env.rep_elect *$env.param
	    rescue BDB::RepUnavail
	       if ($env.empty? and $env.priority > 0) || count > 10
		  do_master
	       end
	    end
	 end
	 count += 1
         sleep 1
      end
   end

end