Commit ccbabca

mo khan <mo@mokhan.ca>
2014-08-29 03:56:51
add client command.
1 parent 5ea4318
Changed files (3)
bin/camtasy
@@ -5,10 +5,16 @@ require "thor"
 
 module Camtasy
   class CLI < Thor
+    DEFAULT_URI='druby://localhost:8787'
+
     desc 'server', 'starts a server.'
     def server
-      #PhotoServer.new.run('druby://localhost:8787')
-      puts "server"
+      PhotoServer.new.run(DEFAULT_URI)
+    end
+
+    desc 'client', 'connect to a server'
+    def client
+      Client.new(DEFAULT_URI).run
     end
   end
 end
lib/camtasy/client.rb
@@ -1,12 +1,12 @@
 module Camtasy
   class Client
-    def initialize(server = DRbObject.new_with_uri('druby://localhost:8787'), stdout = $stdout)
-      @server = server
+    def initialize(uri, stdout = $stdout)
+      @server = DRbObject.new_with_uri(uri)
       @stdout = stdout
     end
 
     def run
-      @stdout.print server.take_photo
+      @stdout.print @server.take_photo
     end
   end
 end
lib/camtasy/server.rb
@@ -1,7 +1,5 @@
 module Camtasy
   class PhotoServer
-    attr_reader :request, :response
-
     def initialize
       @request = Queue.new
       @response = Queue.new
@@ -18,13 +16,13 @@ module Camtasy
     def run(uri)
       Thread.new do
         AVCapture::Session.new.run_with(AVCapture.devices.find(&:video?)) do |connection|
-          while server.request.pop
-            server.response.push(connection.capture)
+          while @request.pop
+            @response.push(connection.capture)
           end
         end
       end
 
-      DRb.start_service(uri, server)
+      DRb.start_service(uri, self)
       DRb.thread.join
     end
   end