Class: Terminus::Connector::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/terminus/connector/server.rb

Constant Summary collapse

RECV_SIZE =
1024
BIND_TIMEOUT =
5

Instance Method Summary collapse

Constructor Details

#initialize(browser, timeout = BIND_TIMEOUT) ⇒ Server

Returns a new instance of Server.



31
32
33
34
35
36
37
# File 'lib/terminus/connector/server.rb', line 31

def initialize(browser, timeout = BIND_TIMEOUT)
  @browser = browser
  @skips   = 0
  @server  = start_server
  @timeout = timeout
  reset
end

Instance Method Details

#connected?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/terminus/connector/server.rb', line 47

def connected?
  not @socket.nil?
end

#drain_socketObject



69
70
71
# File 'lib/terminus/connector/server.rb', line 69

def drain_socket
  @closing = true if @socket
end

#portObject



51
52
53
# File 'lib/terminus/connector/server.rb', line 51

def port
  @server.addr[1]
end

#request(message) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/terminus/connector/server.rb', line 55

def request(message)
  @browser.debug(:send, @browser.id, message)
  accept unless connected?
  @socket.write(@handler.encode(message))
  true while @closing && receive
  result = receive
  @browser.debug(:recv, @browser.id, result)
  reset if result.nil?
  result
rescue Errno::ECONNRESET, Errno::EPIPE, Errno::EWOULDBLOCK
  reset
  nil
end

#resetObject



39
40
41
42
43
44
45
# File 'lib/terminus/connector/server.rb', line 39

def reset
  @closing = false
  @env     = nil
  @handler = nil
  @parser  = Http::Parser.new
  @socket  = nil
end