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