# File lib/rudy/utils.rb, line 65
65:     def waiter(duration=2, max=240, logger=STDOUT, msg=nil, bells=0, &check)
66:       # TODO: Move to Drydock. [ed-why?]
67:       raise "The waiter needs a block!" unless check
68:       duration = 1 if duration < 1
69:       max = duration*2 if max < duration
70:       dot = '.'
71:       begin
72:         if msg && logger
73:           logger.print msg 
74:           logger.flush
75:         end
76:         Timeout::timeout(max) do
77:           while !check.call
78:             sleep duration
79:             logger.print dot if logger.respond_to?(:print)
80:             logger.flush if logger.respond_to?(:flush)
81:           end
82:         end
83:       rescue Timeout::Error => ex
84:         retry if Annoy.pose_question(" Keep waiting?\a ", /yes|y|ya|sure|you bet!/i, logger)
85:         return false
86:       end
87:       
88:       if msg && logger
89:         logger.puts
90:         logger.flush
91:       end
92:       
93:       Rudy::Utils.bell(bells, logger)
94:       true
95:     end