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.

Since:

  • 2.0.0

[ GitHub ]

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

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

  if Mongo::Lint.enabled?
    freeze
  end
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 107

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 139

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

  elsif 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