Commit 3fa8ecc

mo khan <mo@mokhan.ca>
2014-08-29 03:27:47
add a client server example.
1 parent 47e3c96
Changed files (2)
client.rb
@@ -0,0 +1,4 @@
+require "drb"
+
+server = DRbObject.new_with_uri('druby://localhost:8787')
+print server.take_photo
server.rb
@@ -0,0 +1,31 @@
+require "av_capture"
+require "drb"
+
+class PhotoServer
+  attr_reader :request, :response
+
+  def initialize
+    @request = Queue.new
+    @response = Queue.new
+    @mutex = Mutex.new
+  end
+
+  def take_photo
+    @mutex.synchronize do
+      @request << "x"
+      @response.pop
+    end
+  end
+end
+
+server = PhotoServer.new
+Thread.new do
+  AVCapture::Session.new.run_with(AVCapture.devices.find(&:video?)) do |connection|
+    while server.request.pop
+      server.response.push(connection.capture)
+    end
+  end
+end
+
+DRb.start_service('druby://localhost:8787', server)
+DRb.thread.join