commit 6c964c2a261871dcf9978233901f6c48be7ed75f
parent bc309d8cc770f2a94ab3f14f0554e8f0a163aebd
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date: Sat, 5 Jun 2010 21:17:21 -0700
pass index object to server
Diffstat:
3 files changed, 21 insertions(+), 12 deletions(-)
diff --git a/bin/sup-server b/bin/sup-server
@@ -34,7 +34,8 @@ begin
Index.load
EM.run do
- EM.start_server global_opts[:host], global_opts[:port], Redwood::Server
+ EM.start_server global_opts[:host], global_opts[:port],
+ Redwood::Server, Index.instance
EM.next_tick { puts "ready" }
end
diff --git a/lib/sup/server.rb b/lib/sup/server.rb
@@ -3,6 +3,11 @@ require 'sup/protocol'
module Redwood
class Server < EM::P::RedwoodServer
+ def initialize index
+ super
+ @index = index
+ end
+
def receive_message type, tag, params
if respond_to? :"request_#{type}"
send :"request_#{type}", tag, params
@@ -12,7 +17,7 @@ class Server < EM::P::RedwoodServer
end
def request_query tag, a
- q = Redwood::Index.parse_query a['query']
+ q = @index.parse_query a['query']
query q, a['offset'], a['limit'], a['raw'] do |r|
send_message 'message', tag, r
end
@@ -20,13 +25,13 @@ class Server < EM::P::RedwoodServer
end
def request_count tag, a
- q = Redwood::Index.parse_query a['query']
+ q = @index.parse_query a['query']
c = count q
send_message 'count', tag, 'count' => c
end
def request_label tag, a
- q = Redwood::Index.parse_query a['query']
+ q = @index.parse_query a['query']
label q, a['add'], a['remove']
send_message 'done', tag
end
@@ -66,7 +71,7 @@ private
def query query, offset, limit, raw
c = 0
- Index.each_message query do |m|
+ @index.each_message query do |m|
next if c < offset
break if c >= offset + limit if limit
yield result_from_message(m, raw)
@@ -76,14 +81,14 @@ private
end
def count query
- Index.num_results_for query
+ @index.num_results_for query
end
def label query, remove_labels, add_labels
- Index.each_message query do |m|
+ @index.each_message query do |m|
remove_labels.each { |l| m.remove_label l }
add_labels.each { |l| m.add_label l }
- Index.update_message_state m
+ @index.update_message_state m
end
nil
end
@@ -98,13 +103,13 @@ private
m2 = m
end
m2.labels = Set.new(labels.map(&:to_sym))
- Index.update_message_state m2
+ @index.update_message_state m2
nil
end
def thread msg_id, raw
- msg = Index.build_message msg_id
- Index.each_message_in_thread_for msg do |id, builder|
+ msg = @index.build_message msg_id
+ @index.each_message_in_thread_for msg do |id, builder|
m = builder.call
yield result_from_message(m, raw)
end
diff --git a/test/test_server.rb b/test/test_server.rb
@@ -64,7 +64,9 @@ class TestServer < Test::Unit::TestCase
EM.spawn_reactor_thread
@path = Dir.mktmpdir
socket_path = File.join(@path, 'socket')
- @server = EM.start_server socket_path, Redwood::Server
+ Redwood::Index.init File.join(@path, 'index')
+ @server = EM.start_server socket_path,
+ Redwood::Server, Redwood::Index.instance
@client = EM.connect socket_path, QueueingClient
@client.wait_until_ready
end
@@ -72,6 +74,7 @@ class TestServer < Test::Unit::TestCase
def teardown
FileUtils.rm_r @path if passed?
puts "not cleaning up #{@path}" unless passed?
+ Redwood::Index.deinstantiate!
EM.kill_reactor_thread
end