Class: NatsWork::Protocol::VersionNegotiator
- Inherits:
-
Object
- Object
- NatsWork::Protocol::VersionNegotiator
- Defined in:
- lib/natswork/protocol.rb
Overview
Protocol version negotiation
Constant Summary collapse
- SUPPORTED_VERSIONS =
['1.0.0'].freeze
Class Method Summary collapse
- .compatible?(version1, version2) ⇒ Boolean
- .negotiate(client_version, server_versions = SUPPORTED_VERSIONS) ⇒ Object
- .parse_major_version(version) ⇒ Object
Class Method Details
.compatible?(version1, version2) ⇒ 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 |