Class: Groonga::Client::Protocol::HTTP::Synchronous

Inherits:
Object
  • Object
show all
Includes:
PathResolvable
Defined in:
lib/groonga/client/protocol/http/synchronous.rb

Direct Known Subclasses

Thread

Defined Under Namespace

Classes: HTTPClient

Instance Method Summary collapse

Constructor Details

#initialize(url, options = {}) ⇒ Synchronous

Returns a new instance of Synchronous.



53
54
55
56
# File 'lib/groonga/client/protocol/http/synchronous.rb', line 53

def initialize(url, options={})
  @url = url
  @options = options
end

Instance Method Details

#closefalse #close({}) { ... } ⇒ #wait

Does nothing because the current implementation doesn't support keep-alive. If the implementation supports keep-alive, it close the opend connection.

Overloads:

  • #closefalse

    Closes synchronously.

    Returns:

    • (false)

      It always returns false because there is always no connection.

  • #close({}) { ... } ⇒ #wait

    Closes asynchronously.

    Yields:

    • [] Calls the block when the opened connection is closed.

    Returns:

    • (#wait)

      The request object. If you want to wait until the request is processed. You can send #wait message to the request.



105
106
107
108
109
110
111
112
113
# File 'lib/groonga/client/protocol/http/synchronous.rb', line 105

def close(&block)
  sync = !block_given?
  if sync
    false
  else
    yield
    EmptyRequest.new
  end
end

#connected?false

Returns Always returns false because the current implementation doesn't support keep-alive.

Returns:

  • (false)

    Always returns false because the current implementation doesn't support keep-alive.



84
85
86
# File 'lib/groonga/client/protocol/http/synchronous.rb', line 84

def connected?
  false
end

#send(command) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/groonga/client/protocol/http/synchronous.rb', line 58

def send(command)
  begin
    HTTPClient.start(@url.host, @url.port, start_options) do |http|
      http.read_timeout = read_timeout
      response = send_request(http, command)
      case response
      when Net::HTTPSuccess, Net::HTTPBadRequest
        yield(response.body)
      else
        if response.body.start_with?("[[")
          yield(response.body)
        else
          message =
            "#{response.code} #{response.message}: #{response.body}"
          raise Error.new(message)
        end
      end
    end
  rescue SystemCallError, Timeout::Error
    raise WrappedError.new($!)
  end
  EmptyRequest.new
end