class Meshchat::Ui::CLI
A user interface is responsible for for creating a client and sending messages to that client
Constants
- AWAY_TIMEOUT
60 seconds times 5 minutes
Attributes
_command_factory[R]
_last_input_received_at[RW]
_message_dispatcher[R]
_message_factory[R]
_sent_idle_message[RW]
Public Class Methods
new(dispatcher, message_factory, _display)
click to toggle source
# File lib/meshchat/ui/cli.rb, line 23 def initialize(dispatcher, message_factory, _display) @_message_dispatcher = dispatcher @_message_factory = message_factory @_command_factory = InputFactory.new(dispatcher, message_factory, self) self._sent_idle_message = false self._last_input_received_at = Time.now # only check for timeout once a minute EM.add_periodic_timer(60) { away_timeout } end
Public Instance Methods
activity_timeout_triggred?()
click to toggle source
# File lib/meshchat/ui/cli.rb, line 45 def activity_timeout_triggred? return false if _sent_idle_message seconds_passed = Time.now - _last_input_received_at seconds_passed > AWAY_TIMEOUT end
away_timeout()
click to toggle source
# File lib/meshchat/ui/cli.rb, line 34 def away_timeout return unless activity_timeout_triggred? message = _message_factory.create(Network::Message::EMOTE, data: { message: 'has become idle' }) _message_dispatcher.send_to_all(message) self._sent_idle_message = true end
create_input(msg)
click to toggle source
# File lib/meshchat/ui/cli.rb, line 56 def create_input(msg) reset_timeout_timer handler = _command_factory.create(for_input: msg) handler.handle rescue => e Debug.creating_input_failed(e) end
reset_timeout_timer()
click to toggle source
# File lib/meshchat/ui/cli.rb, line 51 def reset_timeout_timer self._last_input_received_at = Time.now self._sent_idle_message = false end
send_disconnect()
click to toggle source
# File lib/meshchat/ui/cli.rb, line 75 def send_disconnect klass = Command::SendDisconnect command = _command_factory.create(with_class: klass) command.handle end
shutdown()
click to toggle source
save config and exit
# File lib/meshchat/ui/cli.rb, line 65 def shutdown # close_server Display.info 'saving config...' APP_CONFIG.user.save Display.info 'notifying of disconnection...' send_disconnect Display.alert "\n\nGoodbye. \n\nThank you for using #{Meshchat.name}" exit end