class Mongo::Server::Description::Features

Defines behaviour around what features a specific server supports.

@since 2.0.0

Constants

DRIVER_TOO_OLD

Error message if the driver is too old for the version of the server.

@since 2.5.0

DRIVER_WIRE_VERSIONS

The wire protocol versions that this version of the driver supports.

@since 2.0.0

MAPPINGS

List of features and the wire protocol version they appear in.

@since 2.0.0

SERVER_TOO_OLD

Error message if the server is too old for this version of the driver.

@since 2.5.0

ZERO_RANGE

Attributes

server_wire_versions[R]

@return [ Range ] #server_wire_versions The server's supported wire

versions.

Public Class Methods

new(server_wire_versions, address = nil) click to toggle source

Initialize the features.

@example Initialize the features.

Features.new(0..3)

@param [ Range ] #server_wire_versions The server supported wire

versions.

@since 2.0.0

# File lib/mongo/server/description/features.rb, line 89
def initialize(server_wire_versions, address = nil)
  @server_wire_versions = server_wire_versions
  check_driver_support!(address) unless server_wire_versions == ZERO_RANGE
end

Private Instance Methods

check_driver_support!(address) click to toggle source
# File lib/mongo/server/description/features.rb, line 98
def check_driver_support!(address)
  if DRIVER_WIRE_VERSIONS.min > server_wire_versions.max
    raise Error::UnsupportedFeatures.new(SERVER_TOO_OLD % [address,
                                                           server_wire_versions.max,
                                                           DRIVER_WIRE_VERSIONS.min])
  elsif DRIVER_WIRE_VERSIONS.max < server_wire_versions.min
    raise Error::UnsupportedFeatures.new(DRIVER_TOO_OLD % [address,
                                                           server_wire_versions.min,
                                                           DRIVER_WIRE_VERSIONS.max])
  end
end