Sha256: a3e944a3a4445a87887258337955d7b9daf345d4abbad9f43f9c0f920a619447

Contents?: true

Size: 1.23 KB

Versions: 9

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

Riddle::Client::Versions[:search] = 0x116
Riddle::Client::Versions[:update] = 0x102

class Riddle::Client
  private

  def initialise_connection(available_server)
    socket = initialise_socket(available_server)

    # Send version
    socket.send [1].pack('N'), 0

    # Checking version
    version = socket.recv(4).unpack('N*').first
    if version < 1
      socket.close
      raise Riddle::VersionError, "Can only connect to searchd version 1.0 or better, not version #{version}"
    end

    socket
  end

  def update_message(index, attributes, values_by_doc)
    message = Message.new

    message.append_string index
    message.append_int attributes.length
    attributes.each_with_index do |attribute, index|
      message.append_string attribute
      message.append_boolean values_by_doc.values.first[index].is_a?(Array)
    end

    message.append_int values_by_doc.length
    values_by_doc.each do |key,values|
      message.append_64bit_int key # document ID
      values.each do |value|
        case value
        when Array
          message.append_int value.length
          message.append_ints *value
        else
          message.append_int value
        end
      end
    end

    message.to_s
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
riddle-2.4.3 lib/riddle/0.9.9/client.rb
riddle-2.4.2 lib/riddle/0.9.9/client.rb
riddle-2.4.1 lib/riddle/0.9.9/client.rb
riddle-2.4.0 lib/riddle/0.9.9/client.rb
riddle-2.3.2 lib/riddle/0.9.9/client.rb
riddle-2.3.1 lib/riddle/0.9.9/client.rb
riddle-2.3.0 lib/riddle/0.9.9/client.rb
riddle-2.2.2 lib/riddle/0.9.9/client.rb
riddle-2.2.1 lib/riddle/0.9.9/client.rb