pigato 0.4.2 → 0.4.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b822493aa1119e5d424b54ea0ba8abf7aa6f5d3e
4
- data.tar.gz: 86c7e13b733bde0f9a98fffd81da9d254b48aef3
3
+ metadata.gz: bdf1137eca61937e2e82029877d8019e644e666d
4
+ data.tar.gz: fa72b975774ccbbb195da86b0fceae53a302a473
5
5
  SHA512:
6
- metadata.gz: 427ee48ca61901c6f42634874f79fb76336d0d15ea25186c5dec23eea175643694f56fe41591de5bc88bec74c678af2f6e3218b0e2e276a794c0e6502d4e0b23
7
- data.tar.gz: 042ae6003050d3bcf0dbe5d5015bdd46bb56a668bba9bae771966eddb091429540e7b24bdb077e13d2373ab973097be7fda6e6e08868343a411709049868d592
6
+ metadata.gz: bd2a025e0dcc5242622fac54e0e8e60ec32fdf7efbac0388feb68ece36cd93e9c778f07cb4b927a050f949028c973bd42a97f3454abf27c62ea701a818d4da2b
7
+ data.tar.gz: 38cef7013fabeaea9c6dd52af0e875e9928d8891d3d74d1a03b8c64b6f3f7f664b699dc803bda91ce5e33d8ff7b2055d8948564429348025f83de1de721f36b2
@@ -19,6 +19,8 @@ def start
19
19
  else
20
20
  sleep 0.1
21
21
  end
22
+ sleep 40
23
+ worker.start
22
24
  end
23
25
  }
24
26
  end
data/lib/pigato/base.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  class Pigato::Base
2
2
 
3
3
  @@sockets = {}
4
+ @@sockets_ids = {}
4
5
  @@mtxs = {}
5
6
  @@mtx = Mutex.new
7
+ @@global_heartbeat_at = Time.now
6
8
 
7
9
  def init
8
10
  @iid = SecureRandom.uuid
@@ -49,14 +51,16 @@ class Pigato::Base
49
51
  end
50
52
 
51
53
  socket = ctx.socket ZMQ::DEALER
52
- socket.identity = SecureRandom.uuid
54
+ sid = SecureRandom.uuid
55
+ socket.identity = sid
53
56
  socket.connect @broker
54
57
 
55
58
  if !@conf[:timeout].nil? then
56
- socket.rcvtimeo = @conf[:timeout];
59
+ socket.rcvtimeo = @conf[:timeout]
57
60
  end
58
61
 
59
62
  @@sockets[get_iid] = socket
63
+ @@sockets_ids[get_iid] = sid
60
64
  }
61
65
  end
62
66
 
@@ -73,6 +77,7 @@ class Pigato::Base
73
77
  rescue
74
78
  end
75
79
  @@sockets.delete(iid)
80
+ @@sockets_ids.delete(iid)
76
81
  end
77
82
  }
78
83
  end
data/lib/pigato/client.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  require "#{File.dirname(__FILE__)}/base.rb"
2
2
 
3
3
  class Pigato::Client < Pigato::Base
4
-
5
4
  @@mtx = Mutex.new
6
5
  @@ctxs = {}
7
6
  @@sockets = {}
@@ -23,20 +22,25 @@ class Pigato::Client < Pigato::Base
23
22
  end
24
23
  end
25
24
 
26
- def request service, request, opts = {}
25
+ def send msg
27
26
  iid = get_iid
28
27
  start if @@sockets[iid] == nil && @conf[:autostart]
29
-
30
28
  socket = get_socket
31
29
  return nil if socket.nil?
30
+ socket.send_message msg
31
+ true
32
+ end
32
33
 
34
+ def request service, request, opts = {}
33
35
  request = [Oj.dump(request), Oj.dump(opts)]
34
36
 
35
37
  rid = SecureRandom.uuid
36
38
  request = [Pigato::C_CLIENT, Pigato::W_REQUEST, service, rid].concat(request)
37
39
  msg = ZMQ::Message.new
38
40
  request.reverse.each{|p| msg.push(ZMQ::Frame(p))}
39
- socket.send_message msg
41
+
42
+ res = send msg
43
+ return nil if res.nil?
40
44
 
41
45
  res = []
42
46
  while 1 do
@@ -1,3 +1,3 @@
1
1
  module Pigato
2
- VERSION = "0.4.2"
2
+ VERSION = "0.4.3"
3
3
  end
data/lib/pigato/worker.rb CHANGED
@@ -22,80 +22,96 @@ class Pigato::Worker < Pigato::Base
22
22
  @reply_to = nil
23
23
  @reply_rid = nil
24
24
  @reply_service = nil
25
-
25
+
26
26
  init
27
27
 
28
28
  if @conf[:autostart]
29
29
  start
30
30
  end
31
+
32
+ Thread.new do
33
+ client = Pigato::Client.new(broker, { :autostart => true })
34
+ loop do
35
+ @@mtx.lock
36
+ begin
37
+ if Time.now > @@global_heartbeat_at
38
+ @@sockets_ids.each do |iid, sid|
39
+ request = [Pigato::C_CLIENT, Pigato::W_HEARTBEAT, "worker", sid]
40
+ msg = ZMQ::Message.new
41
+ request.reverse.each{|p| msg.push(ZMQ::Frame(p))}
42
+ client.send msg
43
+ end
44
+ @@global_heartbeat_at = Time.now + 2
45
+ end
46
+ rescue => e
47
+ puts e
48
+ end
49
+ @@mtx.unlock
50
+ sleep 2
51
+ end
52
+ end
31
53
  end
32
54
 
33
55
  def reply reply
34
56
  reply = [@reply_to, '', @reply_rid, '0'].concat([Oj.dump(reply)])
35
57
  send Pigato::W_REPLY, reply
36
58
  end
37
-
59
+
38
60
  def recv
61
+ val = nil
39
62
 
40
- loop do
41
- @reply_rid = nil
42
- @reply_to = nil
43
- @reply_service = nil
63
+ @reply_rid = nil
64
+ @reply_to = nil
65
+ @reply_service = nil
44
66
 
45
- iid = get_iid
46
-
47
- start if @@sockets[iid] == nil && @conf[:autostart]
67
+ iid = get_iid
48
68
 
49
- socket = get_socket
50
- return nil if socket.nil?
69
+ start if @@sockets[iid] == nil && @conf[:autostart]
51
70
 
52
- socket.rcvtimeo = @conf[:timeout]
71
+ socket = get_socket
72
+ return nil if socket.nil?
53
73
 
54
- msg = socket.recv_message
74
+ socket.rcvtimeo = @conf[:timeout]
55
75
 
56
- return nil if msg.nil?
76
+ msg = socket.recv_message
57
77
 
58
- if msg && msg.size
59
- @liveness = HEARTBEAT_LIVENESS
78
+ if msg && msg.size
79
+ @liveness = HEARTBEAT_LIVENESS
60
80
 
61
- header = msg.pop.data
62
- if header != Pigato::W_WORKER
63
- puts "E: Header is not Pigato::WORKER"
64
- next
65
- end
81
+ header = msg.pop.data
82
+ if header != Pigato::W_WORKER
83
+ puts "E: Header is not Pigato::WORKER"
84
+ return nil
85
+ end
66
86
 
67
- command = msg.pop.data
68
-
69
- case command
70
- when Pigato::W_REQUEST
71
- # We should pop and save as many addresses as there are
72
- # up to a null part, but for now, just save one...
73
- @reply_to = msg.pop.data
74
- @reply_service = msg.pop.data
75
- msg.pop # empty
76
- @reply_rid = msg.pop.data
77
- val = Oj.load(msg.pop.data) # We have a request to process
78
- return val
79
- when Pigato::W_HEARTBEAT
80
- # do nothing
81
- when Pigato::W_DISCONNECT
82
- start
83
- else
84
- end
87
+ command = msg.pop.data
88
+
89
+ case command
90
+ when Pigato::W_REQUEST
91
+ @reply_to = msg.pop.data
92
+ @reply_service = msg.pop.data
93
+ msg.pop # empty
94
+ @reply_rid = msg.pop.data
95
+ val = Oj.load(msg.pop.data)
96
+ when Pigato::W_HEARTBEAT
97
+ when Pigato::W_DISCONNECT
98
+ start
85
99
  else
86
- @liveness -= 1
87
- if @liveness == 0
88
- sleep 0.001 * @conf[:reconnect]
89
- start
90
- end
91
100
  end
92
-
93
- if Time.now > @heartbeat_at
94
- send Pigato::W_HEARTBEAT
95
- @heartbeat_at = Time.now + 0.001 * @conf[:heartbeat]
101
+ else
102
+ @liveness -= 1
103
+ if @liveness == 0
104
+ sleep 0.001 * @conf[:reconnect]
105
+ start
96
106
  end
107
+ end
97
108
 
109
+ if Time.now > @heartbeat_at
110
+ send Pigato::W_HEARTBEAT
111
+ @heartbeat_at = Time.now + 0.001 * @conf[:heartbeat]
98
112
  end
113
+
114
+ val
99
115
  end
100
116
 
101
117
  def start
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pigato
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paolo Ardoino
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-30 00:00:00.000000000 Z
11
+ date: 2016-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.8'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rbczmq
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.7.9
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: 1.7.9
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: oj
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: 2.14.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.14.1
69
69
  description: PIGATO-RUBY
@@ -73,7 +73,7 @@ executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - ".gitignore"
76
+ - .gitignore
77
77
  - CODE_OF_CONDUCT.md
78
78
  - Gemfile
79
79
  - LICENSE.txt
@@ -101,19 +101,18 @@ require_paths:
101
101
  - lib
102
102
  required_ruby_version: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - ">="
104
+ - - '>='
105
105
  - !ruby/object:Gem::Version
106
106
  version: '0'
107
107
  required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ">="
109
+ - - '>='
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  requirements: []
113
113
  rubyforge_project:
114
- rubygems_version: 2.0.14
114
+ rubygems_version: 2.4.7
115
115
  signing_key:
116
116
  specification_version: 4
117
117
  summary: PIGATO-RUBY
118
118
  test_files: []
119
- has_rdoc: