kosmonaut 0.2.0 → 0.2.1
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.
- data/ChangeLog +8 -0
- data/NEWS +8 -0
- data/README +2 -2
- data/kosmonaut.gemspec +3 -2
- data/lib/kosmonaut/worker.rb +19 -20
- metadata +15 -2
data/ChangeLog
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
2012-01-16 Krzysztof Kowalik <chris@nu7hat.ch>
|
2
|
+
|
3
|
+
* lib/kosmonaut/socket.rb: base for worker and client
|
4
|
+
* lib/kosmonaut/worker.rb: majordomo worker
|
5
|
+
* lib/kosmonaut/client.rb: majordomo client
|
6
|
+
* lib/kosmonaut/errors.rb: possible protocol errors
|
7
|
+
* lib/kosmonaut.rb: base tools
|
8
|
+
* test/: tests for client and worker api
|
data/NEWS
ADDED
data/README
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
Kosmonaut - ruby client for the WebRocket
|
2
|
+
=========================================
|
3
3
|
|
4
4
|
Kosmonaut.rb is a ruby backend client for the WebRocket.
|
5
5
|
The idea of the Kosmonaut is to keep it simple, straightforward
|
data/kosmonaut.gemspec
CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "kosmonaut"
|
6
|
-
s.version = "0.2.
|
6
|
+
s.version = "0.2.1"
|
7
7
|
s.summary = "Ruby client for the WebRocket backend"
|
8
8
|
s.description = "The WebRocket server backend client for ruby programming language"
|
9
9
|
s.authors = ["Krzysztof Kowalik", "Cubox"]
|
@@ -11,9 +11,10 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.homepage = "http://webrocket.io/"
|
12
12
|
s.license = "MIT"
|
13
13
|
|
14
|
-
s.files = Dir["{lib/**/*.rb,test/*.rb,Rakefile,README
|
14
|
+
s.files = Dir["{lib/**/*.rb,test/*.rb,Rakefile,README,COPYING,NEWS,ChangeLog,*.gemspec}"]
|
15
15
|
s.test_files = Dir["test/*.rb"]
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
|
18
18
|
s.add_dependency "json", "~> 1.0"
|
19
|
+
s.add_development_dependency "minitest", "~> 2.0"
|
19
20
|
end
|
data/lib/kosmonaut/worker.rb
CHANGED
@@ -7,7 +7,6 @@ module Kosmonaut
|
|
7
7
|
|
8
8
|
RECONNECT_DELAY = 1000 # in milliseconds
|
9
9
|
HEARTBEAT_INTERVAL = 2000 # in milliseconds
|
10
|
-
LIVENESS = 3
|
11
10
|
|
12
11
|
def initialize(url)
|
13
12
|
super(url)
|
@@ -17,26 +16,27 @@ module Kosmonaut
|
|
17
16
|
@reconnect_delay = RECONNECT_DELAY
|
18
17
|
@heartbeat_ivl = HEARTBEAT_INTERVAL
|
19
18
|
@heartbeat_at = 0
|
20
|
-
@liveness = 0
|
21
19
|
end
|
22
20
|
|
23
21
|
def listen
|
24
|
-
reconnect
|
25
22
|
@alive = true
|
23
|
+
reconnect
|
26
24
|
while true
|
27
|
-
if !alive?
|
28
|
-
send(@sock, ["QT"])
|
29
|
-
disconnect
|
30
|
-
break
|
31
|
-
end
|
32
25
|
begin
|
26
|
+
if !alive?
|
27
|
+
send(@sock, ["QT"]) if @sock
|
28
|
+
disconnect
|
29
|
+
break
|
30
|
+
end
|
31
|
+
unless @sock
|
32
|
+
raise Errno::ECONNREFUSED
|
33
|
+
end
|
33
34
|
Timeout.timeout(((@heartbeat_ivl * 2).to_f / 1000.0).to_i + 1) {
|
34
35
|
msg = recv(@sock)
|
35
|
-
@
|
36
|
+
raise Errno::ECONNRESET if @sock.eof? || msg.empty?
|
36
37
|
log("Worker/RECV : #{msg.join("\n").inspect}")
|
37
|
-
next if msg.size < 1
|
38
38
|
cmd = msg.shift
|
39
|
-
|
39
|
+
|
40
40
|
case cmd
|
41
41
|
when "HB"
|
42
42
|
# nothing to do...
|
@@ -49,13 +49,12 @@ module Kosmonaut
|
|
49
49
|
error_handler(msg.size < 1 ? 597 : msg[0])
|
50
50
|
end
|
51
51
|
}
|
52
|
-
rescue Timeout::Error, Errno::ECONNRESET
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
52
|
+
rescue Timeout::Error, Errno::ECONNRESET, Errno::ECONNREFUSED => err
|
53
|
+
log("Worker/RECONNECT: " + err.to_s)
|
54
|
+
sleep(@reconnect_delay.to_f / 1000.0)
|
55
|
+
reconnect
|
57
56
|
end
|
58
|
-
if Time.now.to_f > @heartbeat_at
|
57
|
+
if Time.now.to_f > @heartbeat_at && @sock
|
59
58
|
send(@sock, ["HB"])
|
60
59
|
@heartbeat_at = Time.now.to_f + (@heartbeat_ivl.to_f / 1000.0)
|
61
60
|
end
|
@@ -92,9 +91,9 @@ module Kosmonaut
|
|
92
91
|
def reconnect
|
93
92
|
disconnect
|
94
93
|
@sock = connect
|
95
|
-
@sock
|
96
|
-
@
|
97
|
-
|
94
|
+
send(@sock, ["RD"])
|
95
|
+
@heartbeat_at = Time.now.to_f + (@heartbeat_ivl.to_f / 1000.0)
|
96
|
+
rescue Errno::ECONNREFUSED
|
98
97
|
end
|
99
98
|
|
100
99
|
def message_handler(data)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: kosmonaut
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Krzysztof Kowalik
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2012-01-
|
14
|
+
date: 2012-01-17 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: json
|
@@ -24,6 +24,17 @@ dependencies:
|
|
24
24
|
version: "1.0"
|
25
25
|
type: :runtime
|
26
26
|
version_requirements: *id001
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
prerelease: false
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
32
|
+
requirements:
|
33
|
+
- - ~>
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: "2.0"
|
36
|
+
type: :development
|
37
|
+
version_requirements: *id002
|
27
38
|
description: The WebRocket server backend client for ruby programming language
|
28
39
|
email: chris@nu7hat.ch
|
29
40
|
executables: []
|
@@ -45,6 +56,8 @@ files:
|
|
45
56
|
- Rakefile
|
46
57
|
- README
|
47
58
|
- COPYING
|
59
|
+
- NEWS
|
60
|
+
- ChangeLog
|
48
61
|
- kosmonaut.gemspec
|
49
62
|
homepage: http://webrocket.io/
|
50
63
|
licenses:
|