Object
# File lib/rabbiter.rb, line 217 def close return if @client.nil? @source_ids.reject! do |id| GLib::Source.remove(id) true end @socket.close @socket = nil @input = nil @output = nil @connection = nil @client = nil end
# File lib/rabbiter.rb, line 156 def connect close @client = Gio::SocketClient.new @client.tls = @options[:ssl] @client.tls_validation_flags = :validate_all # if Rabbit::Utils.windows? @client.tls_validation_flags -= :unknown_ca # end @connection = @client.connect_to_host(@options[:host], @options[:port]) @socket = @connection.socket @socket.blocking = false @input = @connection.input_stream @output = @connection.output_stream reader_source = @socket.create_source(:in) do |socket, condition| @logger.debug("[twitter][read][start]") data = @input.read(8192) || "" @logger.debug("[twitter][read][done] #{data.bytesize}") if data.empty? @source_ids.reject! {|id| id == reader_source.id} @logger.debug("[twitter][read][eof]") false else @handler.receive_data(data) true end end @source_ids << reader_source.attach error_source = @socket.create_source(:err) do |socket, condition| @handler.send(:receive_error, condition) true end @source_ids << error_source.attach @handler.extend(GLibAdapter) @handler.connection = self @handler.connection_completed end
# File lib/rabbiter.rb, line 231 def reconnect(options={}) close after = options[:after] || 0 if after.zero? connect else id = GLib::Timeout.add(after) do connect false end @source_ids << id end end
# File lib/rabbiter.rb, line 196 def send_data(data) rest = data.bytesize writer_source = @socket.create_source(:out) do |socket, condition| if rest.zero? @logger.debug("[twitter][flush][start]") @output.flush @logger.debug("[twitter][flush][done]") @source_ids.reject! {|id| id == writer_source.id} false else @logger.debug("[twitter][write][start]") written_size = @output.write(data) @logger.debug("[twitter][write][done] #{written_size}") rest -= written_size data[0, written_size] = "" true end end @source_ids << writer_source.attach end
Generated with the Darkfish Rdoc Generator 2.