keminglabs-fox-rubby 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDIyNWEyYjE4Y2FiZDBmZDhhM2Y5NzVmNjljNzQxYWY3YzNhZjA2Yg==
4
+ NDk2MTQwNzFlM2U3NzBmNmZmZmQyNmNkNTdkZmU3MTM0NTUzMzI2Nw==
5
5
  data.tar.gz: !binary |-
6
- YTBlZTQ1N2QzNTEwYmNhMTIxZjlhZWNlOTc3M2M1YjQyMGUyODBjMA==
6
+ NmM4ZjY3YzA5NzhhMjE2ZjYwODJlMDUwM2UzOTMxNjZhYWYyNjY3ZA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NjMwOGMzOTBjODhjMzcwOWRmNGE5M2ZhMzYyNjVlZmM0YTNlZGQzYTUwODEx
10
- Y2MwYzQ0NmRlM2ZjYjE4NzBhMTE2ZmU1NWI5ZDcxMDEwNzBhOTdhNjZiZmU1
11
- OGE3N2YwM2M2MTVlNDg5ODIyZjcxMmYxNWFhZDViODgwYTgzNjg=
9
+ MGRiMmZjNWU1ZDMxYjYwMDAwMzU2MTNlZmZhMTNjNzQ5YWMxOTliZGU3YzVj
10
+ OTEyMWM1N2RiODBiYzI4ZmUxZmVhNjJmZWNkNGUxNDRmMzBmYzM1OTlmNjNi
11
+ OTk2MTYzMzQwZWZiNTNlZjU4YzVkMWVlMWJmYzg1NzdjODEwMWY=
12
12
  data.tar.gz: !binary |-
13
- Njc3NWIxZTE2ZDE2MTdmZWMzZjY1ZTUzYjhlMjU5M2Q3NjM5ZWQ1MzFlZGE5
14
- YzQ5Y2YyYWEwZmFiODM2N2FiYmVjNTk4NzFiZWRkODA2NjdkNjYwNzUxMDM3
15
- Y2MzMGRkMDZmMWFjYzQxZDI1NzU5Y2RiZGFlZjg5N2QwYmE4NGI=
13
+ MDBhNzlhMDg4MGRkYjgzOTY5NjJiZmU5YmM1MWNjZjE5ZDZkMDdiY2NhNzY1
14
+ M2E1MTFmZGNkMjExN2MwNzllODY5MDUyNmVjOTkyNWFkYTg4YmE2MWI5OTc3
15
+ MDZjMGEwYWE3ZWEwYmY3ZjdjNWE0Yjg4ZGNkMWFlZjY2ZjY5YzM=
@@ -1,3 +1,3 @@
1
1
  module Fox
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -20,9 +20,9 @@ module Fox
20
20
  #If something isn't met, raises a special exception that's rescued by the main run loop and turned into an abort message.
21
21
  def self._assert(raise_p, req, *dependencies)
22
22
  deps = dependencies.flatten.uniq.compact
23
-
23
+
24
24
  return true if deps.empty?
25
-
25
+
26
26
  sock = Context.socket(ZMQ::REQ)
27
27
  sock.connect req[:socket]
28
28
  sock.send_string JSON.generate({target: req[:target], dependencies: deps})
@@ -40,27 +40,27 @@ module Fox
40
40
  end
41
41
  end
42
42
 
43
-
43
+
44
44
  def self.assert(req, *dependencies)
45
45
  self._assert true, req, dependencies
46
46
  end
47
47
 
48
-
48
+
49
49
  def self.register(path, handler)
50
50
  FileUtils.mkdir_p SockPath + "/" + File.dirname(path)
51
- sock = Context.socket(ZMQ::REP)
51
+ sock = Context.socket(ZMQ::ROUTER)
52
52
  sock.bind "ipc://#{SockPath}/#{path}.ipc"
53
53
  @handlers[sock] = {handler: handler, path: path}
54
54
  nil
55
55
  end
56
56
 
57
-
57
+
58
58
  def self.start!
59
59
  @handlers.each do |sock, h|
60
60
  $stderr.puts "Registering handler at: #{h[:path]}"
61
- Poller.register(sock, ZMQ::POLLIN)
61
+ Poller.register_readable sock
62
62
  end
63
-
63
+
64
64
  Signal.trap("INT") do
65
65
  break
66
66
  Context.terminate
@@ -69,18 +69,17 @@ module Fox
69
69
  loop do
70
70
  Poller.poll(:blocking)
71
71
  Poller.readables.each do |sock|
72
- req = recv sock
72
+ id, req = recv_multipart sock
73
73
  msg = begin
74
74
  parse_handler_response @handlers[sock][:handler].call(req)
75
75
  rescue Abort => _
76
76
  {exit: "abort"}
77
77
  rescue Exception => e
78
- pp e
79
78
  $stderr.puts e
80
79
  {exit: "fail", log: e.to_s}
81
80
  end
82
81
  $stderr.puts "#{msg[:exit]}: #{req[:target]}"
83
- send! sock, msg
82
+ send! sock, id, msg
84
83
  end
85
84
  end
86
85
  end
@@ -90,15 +89,16 @@ module Fox
90
89
  private
91
90
 
92
91
 
93
- def self.send!(sock, msg)
94
- sock.send_string JSON.generate msg
92
+ def self.send!(sock, id, msg)
93
+ sock.send_strings [id, "", JSON.generate(msg)]
95
94
  end
96
95
 
97
-
98
- def self.recv(sock)
99
- msg_str = ""
100
- sock.recv_string msg_str
101
- JSON.parse msg_str, symbolize_names: true
96
+ def self.recv_multipart(sock)
97
+ parts = []
98
+ sock.recvmsgs parts
99
+ id, _, msg = parts
100
+
101
+ [id.copy_out_string, JSON.parse(msg.copy_out_string, symbolize_names: true)]
102
102
  end
103
103
 
104
104
 
@@ -125,5 +125,5 @@ module Fox
125
125
  end
126
126
  end
127
127
 
128
-
128
+
129
129
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keminglabs-fox-rubby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin J. Lynagh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-30 00:00:00.000000000 Z
11
+ date: 2013-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi-rzmq