riddle 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/riddle/client.rb +34 -22
  2. metadata +3 -3
@@ -575,6 +575,34 @@ module Riddle
575
575
  socket
576
576
  end
577
577
 
578
+ def request_header(command, length = 0)
579
+ length += key_message.length if key
580
+ core_header = case command
581
+ when :search
582
+ # Message length is +4/+8 to account for the following count value for
583
+ # the number of messages.
584
+ if Versions[command] >= 0x118
585
+ [Commands[command], Versions[command], 8 + length].pack("nnN")
586
+ else
587
+ [Commands[command], Versions[command], 4 + length].pack("nnN")
588
+ end
589
+ when :status
590
+ [Commands[command], Versions[command], 4, 1].pack("nnNN")
591
+ else
592
+ [Commands[command], Versions[command], length].pack("nnN")
593
+ end
594
+
595
+ key ? core_header + key_message : core_header
596
+ end
597
+
598
+ def key_message
599
+ @key_message ||= begin
600
+ message = Message.new
601
+ message.append_string key
602
+ message.to_s
603
+ end
604
+ end
605
+
578
606
  # Send a collection of messages, for a command type (eg, search, excerpts,
579
607
  # update), to the Sphinx daemon.
580
608
  def request(command, messages)
@@ -588,36 +616,20 @@ module Riddle
588
616
  message = message.force_encoding('ASCII-8BIT')
589
617
  end
590
618
 
591
- if key
592
- prefix = Message.new
593
- prefix.append_string key
594
- message = prefix.to_s + message
595
- end
596
-
597
619
  connect do |socket|
598
620
  case command
599
621
  when :search
600
- # Message length is +4 to account for the following count value for
601
- # the number of messages (well, that's what I'm assuming).
602
622
  if Versions[command] >= 0x118
603
- socket.send [
604
- Commands[command], Versions[command],
605
- 8+message.length, messages.length, 0
606
- ].pack("nnNNN") + message, 0
623
+ socket.send request_header(command, message.length) +
624
+ [messages.length, 0].pack('NN') + message, 0
607
625
  else
608
- socket.send [
609
- Commands[command], Versions[command],
610
- 4+message.length, messages.length
611
- ].pack("nnNN") + message, 0
626
+ socket.send request_header(command, message.length) +
627
+ [messages.length].pack('N') + message, 0
612
628
  end
613
629
  when :status
614
- socket.send [
615
- Commands[command], Versions[command], 4, 1
616
- ].pack("nnNN"), 0
630
+ socket.send request_header(command, message.length), 0
617
631
  else
618
- socket.send [
619
- Commands[command], Versions[command], message.length
620
- ].pack("nnN") + message, 0
632
+ socket.send request_header(command, message.length) + message, 0
621
633
  end
622
634
 
623
635
  header = socket.recv(8)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: riddle
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.3.1
5
+ version: 1.3.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Pat Allan
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-09 00:00:00 +10:00
13
+ date: 2011-05-12 00:00:00 +10:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -136,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
- hash: 4547098215792839825
139
+ hash: -2415930395284714044
140
140
  segments:
141
141
  - 0
142
142
  version: "0"