null+****@clear*****
null+****@clear*****
2012年 6月 6日 (水) 17:05:09 JST
Haruka Yoshihara 2012-06-06 17:05:09 +0900 (Wed, 06 Jun 2012)
New Revision: b6f154980289da7ffba72f0e37f3d6469feb01d1
Log:
Extract command send/receive process
Modified files:
lib/groonga/tester.rb
Modified: lib/groonga/tester.rb (+42 -22)
===================================================================
--- lib/groonga/tester.rb 2012-06-06 16:48:43 +0900 (af8224d)
+++ lib/groonga/tester.rb 2012-06-06 17:05:09 +0900 (90a1c50)
@@ -476,6 +476,7 @@ module Groonga
def initialize(context=nil)
@loading = false
@pending_command = ""
+ @pending_load_command = nil
@current_command_name = nil
@output_format = nil
@context = context || Context.new
@@ -509,6 +510,11 @@ module Groonga
private
def execute_line_on_loading(line)
+ if @pending_load_command
+ log_input(@pending_load_command)
+ @input.print(@pending_load_command)
+ @pending_load_command = nil
+ end
log_input(line)
@input.print(line)
@input.flush
@@ -592,16 +598,12 @@ module Groonga
def execute_command(line)
extract_command_info(line)
- @loading = true if @current_command == "load"
- begin
- @input.print(line)
- @input.flush
- rescue SystemCallError
- raise Error.new("failed to write to groonga: <#{line}>: #{$!}")
- end
- log_input(line)
- unless @loading
- log_output(read_output)
+ if @current_command == "load"
+ @loading = true
+ @pending_load_command = line
+ else
+ log_input(line)
+ log_output(send_command(line))
end
end
@@ -621,18 +623,6 @@ module Groonga
end
end
- def read_output
- output = ""
- first_timeout = 1
- timeout = first_timeout
- while IO.select([@output], [], [], timeout)
- break if****@outpu*****?
- output << @output.readpartial(65535)
- timeout = 0
- end
- output
- end
-
def log(tag, content, options={})
return unles****@conte*****?
return if content.empty?
@@ -666,6 +656,29 @@ module Groonga
@input = input
@output = output
end
+
+ def send_command(command_line)
+ begin
+ @input.print(command_line)
+ @input.flush
+ rescue SystemCallError
+ raise Error.new("failed to write to groonga: <#{comand_line}>: #{$!}")
+ end
+ read_output
+ end
+
+ private
+ def read_output
+ output = ""
+ first_timeout = 1
+ timeout = first_timeout
+ while IO.select([@output], [], [], timeout)
+ break if****@outpu*****?
+ output << @output.readpartial(65535)
+ timeout = 0
+ end
+ output
+ end
end
class HTTPExecutor < Executor
@@ -674,6 +687,13 @@ module Groonga
@host = host
@port = port
end
+
+ def send_command(command_line)
+ converter = CommandFormatConverter.new(command_line)
+ open("http://#{@host}:#{@port}#{converter.to_url}") do |response|
+ response.read
+ end
+ end
end
class CommandFormatConverter