123456789_123456789_123456789_123456789_123456789_

Class: Mongo::Server::Description::Features

Relationships & Source Files
Inherits: Object
Defined in: lib/mongo/server/description/features.rb

Overview

Defines behavior around what features a specific server supports.

Since:

  • 2.0.0

Constant Summary

Class Method Summary

Instance Attribute Summary

Instance Method Summary

  • #check_driver_support!

    Check that there is an overlap between the driver supported wire version range and the server wire version range.

Constructor Details

.new(server_wire_versions, address = nil) ⇒ Features

Initialize the features.

Examples:

Initialize the features.

Features.new(0..3)

Parameters:

  • server_wire_versions (Range)

    The server supported wire versions.

Raises:

  • (ArgumentError)

Since:

  • 2.0.0

[ GitHub ]

  
# File 'lib/mongo/server/description/features.rb', line 114

def initialize(server_wire_versions, address = nil)
  raise ArgumentError, "server_wire_versions's min is nil" if server_wire_versions.min.nil?
  raise ArgumentError, "server_wire_versions's max is nil" if server_wire_versions.max.nil?

  @server_wire_versions = server_wire_versions
  @address = address

  return unless Mongo::Lint.enabled?

  freeze
end

Instance Attribute Details

#server_wire_versionsRange (readonly)

Returns:

  • (Range)

    server_wire_versions The server’s supported wire versions.

Since:

  • 2.0.0

[ GitHub ]

  
# File 'lib/mongo/server/description/features.rb', line 103

attr_reader :server_wire_versions

Instance Method Details

#check_driver_support!

Check that there is an overlap between the driver supported wire version range and the server wire version range. Also checks to see if the server is using a deprecated wire version.

Raises:

Since:

  • 2.0.0

[ GitHub ]

  
# File 'lib/mongo/server/description/features.rb', line 132

def check_driver_support!
  if DEPRECATED_WIRE_VERSIONS.include?(@server_wire_versions.max)
    feature = "wire_version:#{@address}"
    Mongo::Deprecations.warn(feature, format(SERVER_DEPRECATED, @address, @server_wire_versions.max))

  elsif DRIVER_WIRE_VERSIONS.min > @server_wire_versions.max
    raise Error::UnsupportedFeatures.new(format(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(format(DRIVER_TOO_OLD, @address, @server_wire_versions.min,
                                                DRIVER_WIRE_VERSIONS.max))
  end
end