Class: Meimei::Server
- Inherits:
-
Object
- Object
- Meimei::Server
- Defined in:
- lib/meimei/server.rb
Instance Attribute Summary collapse
-
#autojoin ⇒ Object
Returns the value of attribute autojoin.
-
#hostname ⇒ Object
Returns the value of attribute hostname.
-
#is_connected ⇒ Object
Returns the value of attribute is_connected.
-
#last_saw_traffic_at ⇒ Object
Returns the value of attribute last_saw_traffic_at.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#port ⇒ Object
Returns the value of attribute port.
-
#socket ⇒ Object
Returns the value of attribute socket.
Instance Method Summary collapse
- #close ⇒ Object
- #connect ⇒ Object
-
#initialize(hostname, port, autojoin, options = {}) ⇒ Server
constructor
A new instance of Server.
- #read ⇒ Object
- #reconnect_delay_passed? ⇒ Boolean
- #write(msg) ⇒ Object
Constructor Details
#initialize(hostname, port, autojoin, options = {}) ⇒ Server
Returns a new instance of Server.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/meimei/server.rb', line 5 def initialize(hostname, port, autojoin, = {}) @hostname, @port, @is_connected = hostname, port, false @log_dir = [:log_dir] || "." @logger = Logger.new(open("#{@log_dir}/#{@hostname}-#{Time.now.strftime('%Y%m%d-%H%M')}.log", "w")) @logger.datetime_format = "%Y-%m-%d %H:%M:%S" @last_saw_traffic_at = Time.now case [:log_level] when :fatal @logger.level = Logger::FATAL when :error @logger.level = Logger::ERROR when :warn @logger.level = Logger::WARN when :info @logger.level = Logger::INFO when :debug @logger.level = Logger::DEBUG else @logger.level = Logger::INFO end @autojoin = autojoin.split(/,\s*/) end |
Instance Attribute Details
#autojoin ⇒ Object
Returns the value of attribute autojoin.
3 4 5 |
# File 'lib/meimei/server.rb', line 3 def autojoin @autojoin end |
#hostname ⇒ Object
Returns the value of attribute hostname.
3 4 5 |
# File 'lib/meimei/server.rb', line 3 def hostname @hostname end |
#is_connected ⇒ Object
Returns the value of attribute is_connected.
3 4 5 |
# File 'lib/meimei/server.rb', line 3 def is_connected @is_connected end |
#last_saw_traffic_at ⇒ Object
Returns the value of attribute last_saw_traffic_at.
3 4 5 |
# File 'lib/meimei/server.rb', line 3 def last_saw_traffic_at @last_saw_traffic_at end |
#logger ⇒ Object
Returns the value of attribute logger.
3 4 5 |
# File 'lib/meimei/server.rb', line 3 def logger @logger end |
#port ⇒ Object
Returns the value of attribute port.
3 4 5 |
# File 'lib/meimei/server.rb', line 3 def port @port end |
#socket ⇒ Object
Returns the value of attribute socket.
3 4 5 |
# File 'lib/meimei/server.rb', line 3 def socket @socket end |
Instance Method Details
#close ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/meimei/server.rb', line 35 def close begin @socket.close if @socket rescue Exception => x @is_connected = false @logger.info "* Could not close socket" x.dump(@logger) end end |
#connect ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/meimei/server.rb', line 59 def connect begin self.close() @socket = TCPSocket.open(@hostname, @port) @is_connected = true @logger.info "* Connected (resolved to #{@socket.peeraddr[3]})" rescue Exception => x @is_connected = false @logger.info "* Connection failed" x.dump(@logger) end return @is_connected end |
#read ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/meimei/server.rb', line 74 def read begin msg = @socket.gets @last_saw_traffic_at = Time.now @logger.debug "> #{msg}" return msg rescue Errno::ECONNRESET => x @logger.info "* Connection reset" @is_connected = false x.dump(@logger) return nil rescue Exception => x @logger.info "* Read failed" @is_connected = false x.dump(@logger) return nil end end |
#reconnect_delay_passed? ⇒ Boolean
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/meimei/server.rb', line 45 def reconnect_delay_passed? if @last_connected_at == nil @last_connected_at = Time.now return true end if Time.now - @last_connected_at > 10 @last_connected_at = Time.now return true else return false end end |
#write(msg) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/meimei/server.rb', line 93 def write(msg) @logger.debug "< #{msg}" begin @socket.write(msg + "\n") rescue Errno::ECONNRESET => x @logger.info "* Connection reset" @is_connected = false x.dump(@logger) rescue Exception => x @logger.info "* Write failed" @is_connected = false x.dump(@logger) end end |