Sha256: 7a64173feb1ffd0e4263826b6f10f8514a01009c2e3f5ac378b7c8dd323bb081
Contents?: true
Size: 1 KB
Versions: 2
Compression:
Stored size: 1 KB
Contents
begin require "mongo/connection" rescue LoadError => error raise "Missing EM-Synchrony dependency: gem install mongo" end # monkey-patch Mongo to use em-synchrony's socket and thread classs old_verbose = $VERBOSE begin $VERBOSE = nil class Mongo::Connection TCPSocket = ::EventMachine::Synchrony::TCPSocket Mutex = ::EventMachine::Synchrony::Thread::Mutex ConditionVariable = ::EventMachine::Synchrony::Thread::ConditionVariable end class Mongo::Pool TCPSocket = ::EventMachine::Synchrony::TCPSocket Mutex = ::EventMachine::Synchrony::Thread::Mutex ConditionVariable = ::EventMachine::Synchrony::Thread::ConditionVariable end class EventMachine::Synchrony::MongoTimeoutHandler def self.timeout(op_timeout, ex_class, &block) f = Fiber.current timer = EM::Timer.new(op_timeout) { f.resume(nil) } res = block.call timer.cancel res end end Mongo::TimeoutHandler = EventMachine::Synchrony::MongoTimeoutHandler ensure $VERBOSE = old_verbose end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
em-synchrony-1.0.2 | lib/em-synchrony/mongo.rb |
em-synchrony-1.0.1 | lib/em-synchrony/mongo.rb |