Sha256: 20239e14b04404224c18137892587d13a89071582181c34bbd2afafb11e23c46
Contents?: true
Size: 1.54 KB
Versions: 3
Compression:
Stored size: 1.54 KB
Contents
begin require "remcached" rescue LoadError => error raise "Missing EM-Synchrony dependency: gem install remcached" end module Memcached class << self def connect(servers) Memcached.servers = servers f = Fiber.current @t = EM::PeriodicTimer.new(0.01) do if Memcached.usable? @t.cancel f.resume(self) end end Fiber.yield end %w[add get set delete].each do |type| class_eval %[ def a#{type}(contents, &callback) df = EventMachine::DefaultDeferrable.new df.callback &callback cb = Proc.new { |res| df.succeed(res) } operation Request::#{type.capitalize}, contents, &cb df end def #{type}(contents, &callback) fiber = Fiber.current df = a#{type}(contents, &Proc.new { |res| fiber.resume(res) }) df.callback &callback Fiber.yield end ] end %w[add get set delete].each do |type| class_eval %[ def amulti_#{type}(contents, &callback) df = EventMachine::DefaultDeferrable.new df.callback &callback cb = Proc.new { |res| df.succeed(res) } multi_operation Request::#{type.capitalize}, contents, &cb df end def multi_#{type}(contents, &callback) fiber = Fiber.current df = amulti_#{type}(contents, &Proc.new { |res| fiber.resume(res) }) df.callback &callback Fiber.yield end ] end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
em-synchrony-0.3.0.beta.1 | lib/em-synchrony/em-remcached.rb |
em-synchrony-0.2.0 | lib/em-synchrony/em-remcached.rb |
em-synchrony-0.1.5 | lib/em-synchrony/em-remcached.rb |