Commit efc2857
Changed files (4)
lib
camtasy
lib/camtasy/client.rb
@@ -1,4 +1,12 @@
-require "drb"
+module Camtasy
+ class Client
+ def initialize(server = DRbObject.new_with_uri('druby://localhost:8787'), stdout = $stdout)
+ @server = server
+ @stdout = stdout
+ end
-server = DRbObject.new_with_uri('druby://localhost:8787')
-print server.take_photo
+ def run
+ @stdout.print server.take_photo
+ end
+ end
+end
lib/camtasy/preview.rb
@@ -1,16 +1,22 @@
require 'av_capture'
require 'io/console'
-session = AVCapture::Session.new
-dev = AVCapture.devices.find(&:video?)
+module Camtasy
+ class Preview
+ def run
+ session = AVCapture::Session.new
+ dev = AVCapture.devices.find(&:video?)
-session.run_with(dev) do |connection|
- loop do
- case $stdin.getch
- when 'q' then break # quit when you hit 'q'
- else
- IO.popen("open -g -f -a /Applications/Preview.app", 'w') do |f|
- f.write connection.capture
+ session.run_with(dev) do |connection|
+ loop do
+ case $stdin.getch
+ when 'q' then break # quit when you hit 'q'
+ else
+ IO.popen("open -g -f -a /Applications/Preview.app", 'w') do |f|
+ f.write connection.capture
+ end
+ end
+ end
end
end
end
lib/camtasy/server.rb
@@ -1,31 +1,33 @@
-require "av_capture"
-require "drb"
+module Camtasy
+ class PhotoServer
+ attr_reader :request, :response
-class PhotoServer
- attr_reader :request, :response
-
- def initialize
- @request = Queue.new
- @response = Queue.new
- @mutex = Mutex.new
- end
+ def initialize
+ @request = Queue.new
+ @response = Queue.new
+ @mutex = Mutex.new
+ end
- def take_photo
- @mutex.synchronize do
- @request << "x"
- @response.pop
+ def take_photo
+ @mutex.synchronize do
+ @request << "x"
+ @response.pop
+ end
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)
+ def run
+ 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
end
end
end
-DRb.start_service('druby://localhost:8787', server)
-DRb.thread.join
+PhotoServer.new.run
lib/camtasy.rb
@@ -1,4 +1,8 @@
+require "av_capture"
+require "drb"
require "camtasy/version"
+require "camtasy/client"
+require "camtasy/server"
module Camtasy
# Your code goes here...