class Mongo::ServerSelector::Secondary

Encapsulates specifications for selecting secondary servers given a list

of candidates.

@since 2.0.0

Public Instance Methods

name() click to toggle source

Get the name of the server mode type.

@example Get the name of the server mode for this preference.

preference.name

@return [ Symbol ] :secondary

@since 2.0.0

# File lib/mongo/server_selector/secondary.rb, line 34
def name
  :secondary
end
slave_ok?() click to toggle source

Whether the slaveOk bit should be set on wire protocol messages.

I.e. whether the operation can be performed on a secondary server.

@return [ true ] true

@since 2.0.0

# File lib/mongo/server_selector/secondary.rb, line 44
def slave_ok?
  true
end
tags_allowed?() click to toggle source

Whether tag sets are allowed to be defined for this server preference.

@return [ true ] true

@since 2.0.0

# File lib/mongo/server_selector/secondary.rb, line 53
def tags_allowed?
  true
end
to_mongos() click to toggle source

Convert this server preference definition into a format appropriate

for a mongos server.

@example Convert this server preference definition into a format

for mongos.
preference = Mongo::ServerSelector::Secondary.new
preference.to_mongos

@return [ Hash ] The server preference formatted for a mongos server.

@since 2.0.0

# File lib/mongo/server_selector/secondary.rb, line 68
def to_mongos
  preference = { :mode => 'secondary' }
  preference.merge!({ :tags => tag_sets }) unless tag_sets.empty?
  preference
end

Private Instance Methods

select(candidates) click to toggle source

Select the secondary servers taking into account any defined tag sets and

local threshold between the nearest secondary and other secondaries.

@example Select secondary servers given a list of candidates.

preference = Mongo::ServerSelector::Secondary.new
preference.select([candidate_1, candidate_2])

@return [ Array ] The secondary servers from the list of candidates.

@since 2.0.0

# File lib/mongo/server_selector/secondary.rb, line 86
def select(candidates)
  near_servers(secondaries(candidates))
end