Class: Cucumber::Pro::WebSocket::Session

Inherits:
Object
  • Object
show all
Defined in:
lib/cucumber/pro/web_socket/session.rb

Instance Method Summary collapse

Constructor Details

#initialize(url, logger, options) ⇒ Session

Returns a new instance of Session.



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/cucumber/pro/web_socket/session.rb', line 19

def initialize(url, logger, options)
  @url, @logger = url, logger
  create_socket = -> worker {
    ws = Faye::WebSocket::Client.new(@url, nil, ping: 15)
    ws.on :open,    &worker.method(:on_open)
    ws.on :error,   &worker.method(:on_error)
    ws.on :message, &worker.method(:on_message)
    ws.on :close,   &worker.method(:on_close)
    ws
  }
  @queue = Queue.new
  @socket = Worker.new(create_socket, logger, self, options)
end

Instance Method Details

#closeObject



39
40
41
42
43
44
# File 'lib/cucumber/pro/web_socket/session.rb', line 39

def close
  logger.debug [:session, :close]
  socket.close
  loop until socket.closed?
  self
end

#error(exception) ⇒ Object



46
47
48
49
50
51
# File 'lib/cucumber/pro/web_socket/session.rb', line 46

def error(exception)
  logger.fatal exception
  $stderr.puts "Cucumber Pro failed to send results: #{exception}"
  $stderr.puts exception.backtrace.join("\n")
  self
end

#send_message(message) ⇒ Object



33
34
35
36
37
# File 'lib/cucumber/pro/web_socket/session.rb', line 33

def send_message(message)
  logger.debug [:session, :send, message]
  socket.send(message.to_json)
  self
end