Sha256: ae6f8ba6a6906a2e399a7881fefe8f8c686e49d29eb4d99c7727b432aa26e772
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
module Vedeu module Runtime # Provides the main loop for a Vedeu application. # class MainLoop trap('SIGTERM') { stop! } trap('TERM') { stop! } trap('INT') { stop! } class << self # :nocov: # Start the main loop. # # @return [void] # @yieldreturn [void] The client application. def start! @started = true @loop = true while @loop yield Vedeu.trigger(:_hide_cursor_) Vedeu.log(type: :info, message: 'MainLoop rendering terminal buffer.') Vedeu::Terminal::Buffer.render Vedeu.trigger(:_show_cursor_) safe_exit_point! end rescue Vedeu::Error::Interrupt Vedeu.log(type: :info, message: 'Vedeu execution interrupted, exiting.') end # :nocov: # Signal that we wish to terminate the running application. # # @return [void] def stop! @loop = false end # :nocov: # Check the application has started and we wish to continue # running. # # @raise [Vedeu::Error::Interrupt] When we wish to terminate # the running application. # @return [void] def safe_exit_point! fail Vedeu::Error::Interrupt if @started && !@loop end # :nocov: end # Eigenclass end # MainLoop end # Runtime end # Vedeu
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
vedeu-0.6.22 | lib/vedeu/runtime/main_loop.rb |
vedeu-0.6.21 | lib/vedeu/runtime/main_loop.rb |