Sha256: 0d77d1379f72b21ceaa9363bd8cb2b941117a6cc916b80e0031a7c0b59c7c72f

Contents?: true

Size: 1010 Bytes

Versions: 6

Compression:

Stored size: 1010 Bytes

Contents

if ENV["MONGOO_ASYNC"] == "1" || (ENV["MONGOO_SYNC"] != "1" && (defined?(EM) && EM.reactor_running?))
  require "em-synchrony"
  require "em-synchrony/tcpsocket"
  module Mongo
    class Connection
      EMTCPSocket = ::EventMachine::Synchrony::TCPSocket

      def check_is_master(node)
        begin
          host, port = *node
          socket = EMTCPSocket.new(host, port)
          socket.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)

          config = self['admin'].command({:ismaster => 1}, :socket => socket)
        rescue OperationFailure, SocketError, SystemCallError, IOError => ex
          close
        ensure
          socket.close if socket
        end

        config
      end
    end
  end

  module Mongoo
    def self.mode
      :async
    end
  end

  puts "* Mongoo Running in Asynchronous Mode" if ENV["MONGOO_DEBUG"] == "1"
else
  module Mongoo
    def self.mode
      :sync
    end
  end
  
  puts "* Mongoo Running in Synchronous Mode" if ENV["MONGOO_DEBUG"] == "1"
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mongoo-0.2.1 lib/mongoo/async.rb
mongoo-0.2.0 lib/mongoo/async.rb
mongoo-0.1.5 lib/mongoo/async.rb
mongoo-0.1.4 lib/mongoo/async.rb
mongoo-0.1.3 lib/mongoo/async.rb
mongoo-0.1.2 lib/mongoo/async.rb