Multi-thread the parsing of books to speed up loading.
[quanlib.git] / book_loader.rb
diff --git a/book_loader.rb b/book_loader.rb
new file mode 100644 (file)
index 0000000..5516f04
--- /dev/null
@@ -0,0 +1,28 @@
+
+require_relative 'book'
+require_relative 'store'
+
+class BookLoader 
+  DONE_MARKER = '<END>'
+
+  def initialize(config_file, queue)
+    @config_file = config_file
+    @queue = queue
+  end
+
+  def run
+    @store = Store.new(@config_file)
+    @store.connect()
+
+    file = @queue.pop
+    until file == DONE_MARKER do
+      book = Book.new(@store)
+      book.load_from_file!(file)
+      @store.store_book(book)
+
+      file = @queue.pop
+    end
+
+    @store.disconnect()
+  end
+end