class Mongo::Cluster::Topology::Sharded

Defines behaviour for when a cluster is in sharded topology.

@since 2.0.0

Constants

NAME

The display name for the topology.

@since 2.0.0

Public Class Methods

new(options, seeds = []) click to toggle source

Initialize the topology with the options.

@example Initialize the topology.

Sharded.new(options)

@param [ Hash ] options The options.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 62
def initialize(options, seeds = [])
  @options = options
end

Public Instance Methods

add_hosts?(description, servers) click to toggle source

Whether a server description's hosts may be added to the cluster.

@example Check if a description's hosts may be added to the cluster.

topology.add_hosts?(description, servers)

@param [ Mongo::Server::Description ] description The description. @param [ Array<Mongo::Server> ] servers The cluster servers.

@return [ false ] A description's hosts are never added to a

sharded cluster.

@since 2.0.6

# File lib/mongo/cluster/topology/sharded.rb, line 112
def add_hosts?(description, servers); false; end
display_name() click to toggle source

Get the display name.

@example Get the display name.

Sharded.display_name

@return [ String ] The display name.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 37
def display_name
  NAME
end
elect_primary(description, servers) click to toggle source

Elect a primary server within this topology.

@example Elect a primary server.

topology.elect_primary(description, servers)

@param [ Server::Description ] description The description of the

elected primary.

@param [ Array<Server> ] servers The list of known servers to the

cluster.

@return [ Sharded ] The topology.

# File lib/mongo/cluster/topology/sharded.rb, line 52
def elect_primary(description, servers); self; end
remove_hosts?(description) click to toggle source

Whether a description can be used to remove hosts from the cluster.

@example Check if a description can be used to remove hosts from the cluster.

topology.remove_hosts?(description)

@param [ Mongo::Server::Description ] description The description.

@return [ true ] A description can always be used to remove hosts

from a sharded cluster.

@since 2.0.6

# File lib/mongo/cluster/topology/sharded.rb, line 126
def remove_hosts?(description); true; end
remove_server?(description, server) click to toggle source

Whether a specific server in the cluster can be removed, given a description.

@example Check if a specific server can be removed from the cluster.

topology.remove_server?(description, server)

@param [ Mongo::Server::Description ] description The description. @param [ Mongo::Serve ] server The server in question.

@return [ true, false ] Whether the server can be removed from the cluster.

@since 2.0.6

# File lib/mongo/cluster/topology/sharded.rb, line 139
def remove_server?(description, server)
  remove_self?(description, server) ||
    !(server.mongos? || server.unknown?)
end
replica_set?() click to toggle source

A sharded topology is not a replica set.

@example Is the topology a replica set?

Sharded.replica_set?

@return [ false ] Always false.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 74
def replica_set?; false; end
replica_set_name() click to toggle source

Sharded topologies have no replica set name.

@example Get the replica set name.

sharded.replica_set_name

@return [ nil ] Always nil.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 84
def replica_set_name; nil; end
servers(servers) click to toggle source

Select appropriate servers for this topology.

@example Select the servers.

Sharded.servers(servers)

@param [ Array<Server> ] servers The known servers.

@return [ Array<Server> ] The mongos servers.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 96
def servers(servers)
  servers.select{ |server| server.mongos? }
end
sharded?() click to toggle source

A sharded topology is sharded.

@example Is the topology sharded?

Sharded.sharded?

@return [ true ] Always true.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 152
def sharded?; true; end
single?() click to toggle source

A sharded topology is not single.

@example Is the topology single?

Sharded.single?

@return [ false ] Always false.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 162
def single?; false; end
standalone_discovered() click to toggle source

Notify the topology that a standalone was discovered.

@example Notify the topology that a standalone was discovered.

topology.standalone_discovered

@return [ Topology::Sharded ] Always returns self.

@since 2.0.6

# File lib/mongo/cluster/topology/sharded.rb, line 182
def standalone_discovered; self; end
unknown?() click to toggle source

A sharded topology is not unknown.

@example Is the topology unknown?

Sharded.unknown?

@return [ false ] Always false.

@since 2.0.0

# File lib/mongo/cluster/topology/sharded.rb, line 172
def unknown?; false; end

Private Instance Methods

remove_self?(description, server) click to toggle source
# File lib/mongo/cluster/topology/sharded.rb, line 186
def remove_self?(description, server)
  description.is_server?(server) && !(description.mongos? || description.unknown?)
end