Sha256: 00bc2993d7db0112e8b85cec88e25af04e92b1119eab9a050c784d0e15be26eb

Contents?: true

Size: 1.65 KB

Versions: 8

Compression:

Stored size: 1.65 KB

Contents

module Selenium
  module WebDriver
    module Chrome
     class CommandExecutor
       TEMPLATE = "HTTP/1.1 200 OK\r\nContent-Length: %d\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n%s"

       def initialize
         @server       = TCPServer.new("0.0.0.0", 9700)
         @queue        = Queue.new
         @accepted_any = false
         @next_socket  = nil

         Thread.new { start_run_loop }
       end

       def execute(command)
         until accepted_any?
           Thread.pass
           sleep 0.01
         end

         json = command.to_json
         data = TEMPLATE % [json.length, json]

         @next_socket.write data
         @next_socket.close

         JSON.parse read_response(@queue.pop)
       end

       def close
         @server.close
       rescue IOError
       end

       private

       def start_run_loop
         loop do
           socket = @server.accept
           @queue << socket

           unless accepted_any?
             read_response socket
             @queue.pop
           end

           @accepted_any ||= true
         end
       rescue IOError => e
         raise e unless @server.closed?
       end

       def read_response(socket)
         result = ''

         seen_double_crlf = false
         while !socket.closed? && ((line = socket.gets.chomp) != "EOResponse")
           seen_double_crlf = true if line.empty?
           result << "#{line}\n" if seen_double_crlf
         end

         @next_socket = socket

         result.strip!
         # p result
         result
       end

       def accepted_any?
         @accepted_any
       end

     end # CommandExecutor
    end # Chrome
  end # WebDriver
end # Selenium

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
selenium-webdriver-0.0.13 chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb
selenium-webdriver-0.0.12 chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb
selenium-webdriver-0.0.11 chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb
selenium-webdriver-0.0.10 chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb
selenium-webdriver-0.0.9 chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb
selenium-webdriver-0.0.8 chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb
selenium-webdriver-0.0.7 chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb
selenium-webdriver-0.0.6 chrome/src/rb/lib/selenium/webdriver/chrome/command_executor.rb