module Mongo::ServerSelector

Functionality for getting an object able to select a server, given a preference.

@since 2.0.0

Constants

LOCAL_THRESHOLD

The max latency in seconds between the closest server and other servers considered for selection.

@since 2.0.0

PREFERENCES

Hash lookup for the selector classes based off the symbols

provided in configuration.

@since 2.0.0

PRIMARY

Primary read preference.

@since 2.1.0

SERVER_SELECTION_TIMEOUT

How long to block for server selection before throwing an exception.

@since 2.0.0

SMALLEST_MAX_STALENESS_SECONDS

The smallest allowed max staleness value, in seconds.

@since 2.4.0

Public Instance Methods

get(preference = {}) click to toggle source

Create a server selector object.

@example Get a server selector object for selecting a secondary with

specific tag sets.
Mongo::ServerSelector.get(:mode => :secondary, :tag_sets => [{'dc' => 'nyc'}])

@param [ Hash ] preference The server preference.

@since 2.0.0

# File lib/mongo/server_selector.rb, line 72
def get(preference = {})
  return preference if PREFERENCES.values.include?(preference.class)
  Mongo::Lint.validate_underscore_read_preference(preference)
  PREFERENCES.fetch((preference[:mode] || :primary).to_sym).new(preference)
end
primary() click to toggle source

Returns the primary server selector.

A call to this method is equivalent to `get(mode: :primary)`, except the resulting server selector object is cached and not recreated each time.

@api private

# File lib/mongo/server_selector.rb, line 84
def primary
  @primary ||= get(mode: :primary)
end