class Cucumber::Pro::WebSocket::Session

Attributes

logger[R]
queue[R]
socket[R]

Public Class Methods

new(url, logger, options) click to toggle source
# 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

Public Instance Methods

close() click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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