Class: NatsWork::Protocol::VersionNegotiator

Inherits:
Object
  • Object
show all
Defined in:
lib/natswork/protocol.rb

Overview

Protocol version negotiation

Constant Summary collapse

SUPPORTED_VERSIONS =
['1.0.0'].freeze

Class Method Summary collapse

Class Method Details

.compatible?(version1, version2) ⇒ Boolean

Returns:

  • (Boolean)


445
446
447
# File 'lib/natswork/protocol.rb', line 445

def self.compatible?(version1, version2)
  parse_major_version(version1) == parse_major_version(version2)
end

.negotiate(client_version, server_versions = SUPPORTED_VERSIONS) ⇒ Object



432
433
434
435
436
437
438
439
440
441
442
443
# File 'lib/natswork/protocol.rb', line 432

def self.negotiate(client_version, server_versions = SUPPORTED_VERSIONS)
  return VERSION if client_version.nil?

  client_major = parse_major_version(client_version)

  # Find highest compatible version
  compatible = server_versions.select do |version|
    parse_major_version(version) == client_major
  end

  compatible.max || nil
end

.parse_major_version(version) ⇒ Object



449
450
451
# File 'lib/natswork/protocol.rb', line 449

def self.parse_major_version(version)
  version.to_s.split('.').first.to_i
end