class Droonga::Client::Connection::DroongaProtocol

Attributes

on_error[W]

Public Class Methods

new(options={}) click to toggle source
# File lib/droonga/client/connection/droonga-protocol.rb, line 31
def initialize(options={})
  @host = options[:host] || "127.0.0.1"
  @port = options[:port] || 24224
  @tag = options[:tag] || "droonga"
  @options = options
  @backend = create_backend
  @backend.on_error = lambda do |error|
    on_error(BackendError.new(error))
  end
end

Public Instance Methods

close() click to toggle source

Close the connection. This connection can’t be used anymore.

@return [void]

# File lib/droonga/client/connection/droonga-protocol.rb, line 114
def close
  @backend.close
end
request(message, options={}, &block) click to toggle source

Sends a request message and receives one or more response messages.

@overload request(message, options={})

This is synchronously version.

@param message [Hash] Request message.
@param options [Hash] The options.
   TODO: WRITE ME

@return [Object] The response. TODO: WRITE ME

@overload request(message, options={}, &block)

This is asynchronously version.

@param message [Hash] Request message.
@param options [Hash] The options.
   TODO: WRITE ME
@yield [response]
   The block is called when response is received.
@yieldparam [Object] response
   The response.

@return [Request] The request object.
# File lib/droonga/client/connection/droonga-protocol.rb, line 66
def request(message, options={}, &block)
  @backend.request(message, options, &block)
end
send(message, options={}, &block) click to toggle source

Sends low level request. Normally, you should use other convenience methods.

@param message [Hash] Request message. @param options [Hash] The options to send request.

TODO: WRITE ME

@return [void]

# File lib/droonga/client/connection/droonga-protocol.rb, line 107
def send(message, options={}, &block)
  @backend.send(message, options, &block)
end
subscribe(message, options={}, &block) click to toggle source

Subscribes something and receives zero or more published messages.

@overload subscribe(message, options={})

This is enumerator version.

@param message [Hash] Subscribe message.
@param options [Hash] The options.
   TODO: WRITE ME

@return [Enumerator] You can get a published message by
  #next. You can also use #each to get published messages.

@overload subscribe(message, options={}, &block)

This is asynchronously version.

@param message [Hash] Subscribe message.
@param options [Hash] The options.
   TODO: WRITE ME
@yield [message]
   The block is called when a published message is received.
   The block may be called zero or more times.
@yieldparam [Object] message
   The published message.

@return [Request] The request object.
# File lib/droonga/client/connection/droonga-protocol.rb, line 96
def subscribe(message, options={}, &block)
  @backend.subscribe(message, options, &block)
end

Private Instance Methods

create_backend() click to toggle source
# File lib/droonga/client/connection/droonga-protocol.rb, line 119
def create_backend
  backend = @options[:backend] || :thread

  begin
    require "droonga/client/connection/droonga-protocol/#{backend}"
  rescue LoadError
    raise UnknownBackendError.new("Droonga protocol",
                                  backend,
                                  $!.message)
  end

  backend_name = backend.to_s.capitalize
  backend_class = self.class.const_get(backend_name)
  backend_class.new(@host, @port, @tag, @options)
end
on_error(error) click to toggle source
# File lib/droonga/client/connection/droonga-protocol.rb, line 135
def on_error(error)
  @on_error.call(error) if @on_error
end