Client ancestor class
# File lib/qrack/client.rb, line 20 def initialize(connection_string_or_opts = Hash.new, opts = Hash.new) opts = case connection_string_or_opts when String then AMQ::Client::Settings.parse_amqp_url(connection_string_or_opts) when Hash then connection_string_or_opts else Hash.new end.merge(opts) @host = opts[:host] || 'localhost' @port = opts[:port] || (opts[:ssl] ? Qrack::Protocol::SSL_PORT : Qrack::Protocol::PORT) @user = opts[:user] || 'guest' @pass = opts[:pass] || 'guest' @vhost = opts[:vhost] || '/' @logfile = opts[:logfile] || nil @logging = opts[:logging] || false @ssl = opts[:ssl] || false @ssl_cert = opts[:ssl_cert] || nil @ssl_key = opts[:ssl_key] || nil @ssl_cert_string = opts[:ssl_cert_string] || nil @ssl_key_string = opts[:ssl_key_string] || nil @verify_ssl = opts[:verify_ssl].nil? || opts[:verify_ssl] @status = :not_connected @frame_max = opts[:frame_max] || 131072 @channel_max = opts[:channel_max] || 0 @heartbeat = opts[:heartbeat] || 0 @connect_timeout = opts[:connect_timeout] || CONNECT_TIMEOUT @read_write_timeout = opts[:socket_timeout] @read_write_timeout = nil if @read_write_timeout == 0 @disconnect_timeout = @read_write_timeout || @connect_timeout @logger = nil create_logger if @logging @message_in = false @message_out = false @last_method = nil @connecting = false @channels ||= [] # Create channel 0 @channel = create_channel() @exchanges ||= {} @queues ||= {} end
@return [Symbol] @:not_connected@ if successful.
# File lib/qrack/client.rb, line 68 def close return if @socket.nil? || @socket.closed? # Close all active channels channels.each do |c| Bunny::Timer::timeout(@disconnect_timeout) { c.close } if c.open? end # Close connection to AMQP server Bunny::Timer::timeout(@disconnect_timeout) { close_connection } rescue Exception # http://cheezburger.com/Asset/View/4033311488 ensure # Clear the channels @channels = [] # Create channel 0 @channel = create_channel() # Close TCP Socket close_socket end
# File lib/qrack/client.rb, line 94 def connected? status == :connected end
# File lib/qrack/client.rb, line 98 def connecting? connecting end
# File lib/qrack/client.rb, line 102 def logging=(bool) @logging = bool create_logger if @logging end
# File lib/qrack/client.rb, line 107 def next_payload(options = {}) res = next_frame(options) res.payload if res end
# File lib/qrack/client.rb, line 114 def read(*args) send_command(:read, *args) # Got a SIGINT while waiting; give any traps a chance to run rescue Errno::EINTR retry end
# File lib/qrack/client.rb, line 162 def read_ready?(timeout, cancelator = nil) io = IO.select([ @socket, cancelator ].compact, nil, nil, timeout) io and io[0].include?(@socket) end
@param [Hash] opts Options. @option opts [Numeric] :timeout (0.1) The method will wait for a return message until this timeout interval is reached. @return [Hash] @{:header => nil, :payload => :no_return, :return_details => nil}@ if message is not returned before timeout. @{:header, :return_details, :payload}@ if message is returned. @:return_details@ is a hash @{:reply_code, :reply_text, :exchange, :routing_key}@.
# File lib/qrack/client.rb, line 127 def returned_message(opts = {}) begin frame = next_frame(:timeout => opts[:timeout] || 0.1) rescue Qrack::FrameTimeout return {:header => nil, :payload => :no_return, :return_details => nil} end method = frame.payload header = next_payload # If maximum frame size is smaller than message payload body then message # will have a message header and several message bodies msg = '' while msg.length < header.size msg << next_payload end # Return the message and related info {:header => header, :payload => msg, :return_details => method.arguments} end
Generated with the Darkfish Rdoc Generator 2.