class Thin::SwiftiplyConnection
Public Instance Methods
connection_completed()
click to toggle source
# File lib/thin/backends/swiftiply_client.rb, line 33 def connection_completed send_data swiftiply_handshake(@backend.key) end
persistent?()
click to toggle source
# File lib/thin/backends/swiftiply_client.rb, line 37 def persistent? true end
unbind()
click to toggle source
Calls superclass method
# File lib/thin/backends/swiftiply_client.rb, line 41 def unbind super EventMachine.add_timer(rand(2)) { reconnect(@backend.host, @backend.port) } if @backend.running? end
Protected Instance Methods
host_ip()
click to toggle source
For some reason Swiftiply request the current host
# File lib/thin/backends/swiftiply_client.rb, line 52 def host_ip begin if defined?(Addrinfo) # ruby 2.0+ # TODO: ipv6 support here? Addrinfo.getaddrinfo(@backend.host, @backend.port, :PF_INET, :STREAM).first.ip_address.split('.').map(&:to_i) else Socket.gethostbyname(@backend.host)[3].unpack('CCCC') end rescue [0, 0, 0, 0] end end
swiftiply_handshake(key)
click to toggle source
# File lib/thin/backends/swiftiply_client.rb, line 47 def swiftiply_handshake(key) 'swiftclient' << host_ip.collect { |x| sprintf('%02x', x.to_i) }.join << sprintf('%04x', @backend.port) << sprintf('%02x', key.length) << key end