Skip to content

Commit

Permalink
Merge branch 'master' of git://github.com/mperham/em-jack
Browse files Browse the repository at this point in the history
  • Loading branch information
dj2 committed Jun 12, 2010
2 parents 0e829bc + 09ed5e3 commit 0075b28
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.rdoc
Expand Up @@ -78,3 +78,4 @@ contact me by email at dj2 at everburning dot com.
Charles Melbye (cmelbye)
Peter Kieltyka (pkieltyka)
Martyn Loughran (mloughran)
Mike Perham (mperham)
19 changes: 19 additions & 0 deletions lib/em-jack/connection.rb
Expand Up @@ -43,6 +43,25 @@ def initialize(opts = {})
end
end

def fiber!
eigen = (class << self
self
end)
eigen.instance_eval do
%w(use reserve ignore watch peek stats list delete touch bury kick pause release put).each do |meth|
alias_method :"a#{meth}", meth.to_sym
define_method(meth.to_sym) do |*args|
fib = Fiber.current
ameth = :"a#{meth}"
p [ameth, *args]
proc = lambda { |*result| fib.resume(*result) }
send(ameth, *args, &proc)
Fiber.yield
end
end
end
end

def use(tube, &blk)
return if @used_tube == tube

Expand Down
26 changes: 26 additions & 0 deletions spec/fiber_spec.rb
@@ -0,0 +1,26 @@
require 'rubygems'
require 'spec'

require 'em-jack'
require 'fiber'

describe EMJack::Connection do
it "should process live messages" do
EM.run do
EM.add_timer(10) { EM.stop }

Fiber.new do
bean = EMJack::Connection.new
bean.fiber!

bean.put("hello!")
job = bean.reserve
job.body.should == "hello!"
job.delete

p bean.stats
EM.stop
end.resume
end
end
end

0 comments on commit 0075b28

Please sign in to comment.