nats 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/HISTORY.md +9 -0
- data/Rakefile +10 -3
- data/lib/nats/client.rb +41 -6
- data/lib/nats/server/util.rb +1 -0
- data/lib/nats/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c785185ca50a110f1e5097074eb94932875ec56f
|
4
|
+
data.tar.gz: fdf520606b0140c0ea01ecce19ef4a7a2e60c5fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8caccc1be68f33b8a06385e002646ca4e9ac3bb8aea387f192a95d46978a84df8d28898f03f9b932bf9c0e7a0d9a6de9f4476041770f28b96be853f5b4fae3e1
|
7
|
+
data.tar.gz: 7f9280338f75b80a1088d2d5ac280efb239449de5a87987d3725883bd0257768cebb36b19ca9e2fe9b2d6e47a3be48494a73c16711e48e99a5bac672e107efb6
|
data/HISTORY.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# HISTORY
|
2
2
|
|
3
|
+
## v0.7.1 (July 8, 2016)
|
4
|
+
- Remove dependencies which are no longer needed for ruby-client
|
5
|
+
- See full list @ https://github.com/nats-io/ruby-nats/compare/v0.7.0...v0.7.1
|
6
|
+
|
7
|
+
## v0.7.0 (July 8, 2016)
|
8
|
+
- Enhanced TLS support: certificates and verify peer functionality added
|
9
|
+
- Bumped version of Eventmachine to 1.2 series
|
10
|
+
- See full list @ https://github.com/nats-io/ruby-nats/compare/v0.6.0...v0.7.0
|
11
|
+
|
3
12
|
## v0.6.0 (March 22, 2016)
|
4
13
|
- Removed distributing `nats-server` along with the gem
|
5
14
|
- Fixed issue with subscriptions not being sent on first reconnect (#94)
|
data/Rakefile
CHANGED
@@ -2,17 +2,24 @@
|
|
2
2
|
require 'rspec/core'
|
3
3
|
require 'rspec/core/rake_task'
|
4
4
|
|
5
|
+
task :default => 'spec:client'
|
6
|
+
|
5
7
|
desc 'Run specs from client and server'
|
6
8
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
7
9
|
spec.pattern = FileList['spec/**/*_spec.rb']
|
8
|
-
spec.rspec_opts = ["--format", "documentation", "--colour"]
|
10
|
+
spec.rspec_opts = ["--format", "documentation", "--colour", "--profile"]
|
9
11
|
end
|
10
|
-
task :default => :spec
|
11
12
|
|
12
13
|
desc 'Run spec from client using gnatsd as the server'
|
13
14
|
RSpec::Core::RakeTask.new('spec:client') do |spec|
|
14
15
|
spec.pattern = FileList['spec/client/*_spec.rb']
|
15
|
-
spec.rspec_opts = ["--format", "documentation", "--colour"]
|
16
|
+
spec.rspec_opts = ["--format", "documentation", "--colour", "--profile"]
|
17
|
+
end
|
18
|
+
|
19
|
+
desc 'Run spec from client on jruby using gnatsd as the server'
|
20
|
+
RSpec::Core::RakeTask.new('spec:client:jruby') do |spec|
|
21
|
+
spec.pattern = FileList['spec/client/*_spec.rb']
|
22
|
+
spec.rspec_opts = ["--format", "documentation", "--colour", "--tag", "~jruby_excluded", "--profile"]
|
16
23
|
end
|
17
24
|
|
18
25
|
desc 'Run spec from server'
|
data/lib/nats/client.rb
CHANGED
@@ -10,6 +10,7 @@ require "#{ep}/version"
|
|
10
10
|
|
11
11
|
module NATS
|
12
12
|
|
13
|
+
PROTOCOL_VERSION = 1
|
13
14
|
DEFAULT_PORT = 4222
|
14
15
|
DEFAULT_URI = "nats://localhost:#{DEFAULT_PORT}".freeze
|
15
16
|
|
@@ -173,8 +174,10 @@ module NATS
|
|
173
174
|
EM.epoll
|
174
175
|
elsif EM.kqueue?
|
175
176
|
EM.kqueue
|
177
|
+
elsif EM.library_type == :java
|
178
|
+
# No warning needed, we're using Java NIO
|
176
179
|
else
|
177
|
-
Kernel.warn('Neither epoll nor kqueue are supported')
|
180
|
+
Kernel.warn('Neither epoll nor kqueue are supported, performance may be impacted')
|
178
181
|
end
|
179
182
|
EM.run { @client = connect(*args, &blk) }
|
180
183
|
end
|
@@ -241,7 +244,7 @@ module NATS
|
|
241
244
|
end
|
242
245
|
|
243
246
|
# Set the default on_closed callback.
|
244
|
-
# @param [Block] &callback called when will reach a state when will no longer be connected.
|
247
|
+
# @param [Block] &callback called when will reach a state when will no longer be connected.
|
245
248
|
def on_close(&callback)
|
246
249
|
@close_cb = callback
|
247
250
|
@client.on_close(&callback) unless @client.nil?
|
@@ -517,7 +520,8 @@ module NATS
|
|
517
520
|
:verbose => @options[:verbose],
|
518
521
|
:pedantic => @options[:pedantic],
|
519
522
|
:lang => :ruby,
|
520
|
-
:version => VERSION
|
523
|
+
:version => VERSION,
|
524
|
+
:protocol => PROTOCOL_VERSION
|
521
525
|
}
|
522
526
|
if auth_connection?
|
523
527
|
cs[:user] = @uri.user
|
@@ -654,6 +658,37 @@ module NATS
|
|
654
658
|
# Otherwise, use a regular connection.
|
655
659
|
end
|
656
660
|
|
661
|
+
# Detect any announced server that we might not be aware of...
|
662
|
+
connect_urls = @server_info[:connect_urls]
|
663
|
+
if connect_urls
|
664
|
+
srvs = []
|
665
|
+
|
666
|
+
connect_urls.each do |url|
|
667
|
+
u = URI.parse("nats://#{url}")
|
668
|
+
present = server_pool.detect do |srv|
|
669
|
+
srv[:uri].host == u.host && srv[:uri].port == u.port
|
670
|
+
end
|
671
|
+
|
672
|
+
if not present
|
673
|
+
# Let explicit user and pass options set the credentials.
|
674
|
+
u.user = options[:user] if options[:user]
|
675
|
+
u.password = options[:pass] if options[:pass]
|
676
|
+
|
677
|
+
# Use creds from the current server if not set explicitly.
|
678
|
+
if @uri
|
679
|
+
u.user ||= @uri.user if @uri.user
|
680
|
+
u.password ||= @uri.password if @uri.password
|
681
|
+
end
|
682
|
+
|
683
|
+
srvs << { :uri => u, :reconnect_attempts => 0 }
|
684
|
+
end
|
685
|
+
end
|
686
|
+
srvs.shuffle! unless @options[:dont_randomize_servers]
|
687
|
+
|
688
|
+
# Include in server pool but keep current one as the first one.
|
689
|
+
server_pool.push(*srvs)
|
690
|
+
end
|
691
|
+
|
657
692
|
if @server_info[:auth_required]
|
658
693
|
current = server_pool.first
|
659
694
|
current[:auth_required] = true
|
@@ -705,7 +740,7 @@ module NATS
|
|
705
740
|
# Mark that we established already TCP connection to the server. In case of TLS,
|
706
741
|
# prepare commands which will be dispatched to server and delay flushing until
|
707
742
|
# we have processed the INFO line sent by the server and done the handshake.
|
708
|
-
@connected = true
|
743
|
+
@connected = true
|
709
744
|
process_connect
|
710
745
|
end
|
711
746
|
|
@@ -714,7 +749,7 @@ module NATS
|
|
714
749
|
process_connect
|
715
750
|
end
|
716
751
|
|
717
|
-
def process_connect #:nodoc:
|
752
|
+
def process_connect #:nodoc:
|
718
753
|
# Reset reconnect attempts since TCP connection has been successful at this point.
|
719
754
|
current = server_pool.first
|
720
755
|
current[:was_connected] = true
|
@@ -759,12 +794,12 @@ module NATS
|
|
759
794
|
|
760
795
|
def send_ping #:nodoc:
|
761
796
|
return if @closing
|
797
|
+
@pings_outstanding += 1
|
762
798
|
if @pings_outstanding > @options[:max_outstanding_pings]
|
763
799
|
close_connection
|
764
800
|
#close
|
765
801
|
return
|
766
802
|
end
|
767
|
-
@pings_outstanding += 1
|
768
803
|
queue_server_rt { process_pong }
|
769
804
|
flush_pending
|
770
805
|
end
|
data/lib/nats/server/util.rb
CHANGED
data/lib/nats/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derek Collison
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|