cztop-reactor 0.3.0 → 0.4.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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/ChangeLog +15 -1
- data/History.md +8 -0
- data/Rakefile +4 -1
- data/lib/cztop/reactor.rb +49 -33
- data/lib/cztop/reactor/signal_handling.rb +2 -2
- metadata +18 -18
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ebc72ede3239718ff03c2c29509a494c993d2d115bf07b4c3d5d748ea4f20ae6
|
4
|
+
data.tar.gz: 77596ee72fc148492039318ee36ba075152b96a963421d458c88df884b0d267f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b2bf31a6cf841f39395dc04aa25ca80a0dbbbeddc267393410f77e072671c817c4e4d82dd0429e9869c1bf67c7f7f0dc91ab121cc2f66d5614727c6c56645fc
|
7
|
+
data.tar.gz: 470fca566a0285487be7ad4dbe6b3bdb40a8c61cb64c01b11d28b86e70bed17da5052efad30185216c9273a7fcc0afcaed4cfeb62aba99c67c164cbfcdb4cc6b
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,9 +1,23 @@
|
|
1
|
+
2017-05-16 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* .hgtags:
|
4
|
+
Added tag v0.3.0 for changeset 93726ed1d11c
|
5
|
+
[4a5ff1ab5370] [tip]
|
6
|
+
|
7
|
+
* .hgsigs:
|
8
|
+
Added signature for changeset b27d8748d922
|
9
|
+
[93726ed1d11c] [v0.3.0]
|
10
|
+
|
11
|
+
* History.md, lib/cztop/reactor.rb:
|
12
|
+
Bumped the minor version, updated history.
|
13
|
+
[b27d8748d922]
|
14
|
+
|
1
15
|
2017-05-15 Michael Granger <ged@FaerieMUD.org>
|
2
16
|
|
3
17
|
* .hgignore, Manifest.txt, lib/cztop/reactor/signal_handling.rb,
|
4
18
|
spec/cztop/reactor/signal_handling_spec.rb:
|
5
19
|
Add a mixin for signal handling.
|
6
|
-
[970a2eb110fb]
|
20
|
+
[970a2eb110fb]
|
7
21
|
|
8
22
|
2017-04-30 Michael Granger <ged@FaerieMUD.org>
|
9
23
|
|
data/History.md
CHANGED
data/Rakefile
CHANGED
@@ -54,6 +54,7 @@ task 'hg:precheckin' => [ :check_history, :check_manifest, :gemspec, :spec ]
|
|
54
54
|
task :test => :spec
|
55
55
|
|
56
56
|
# Rebuild the ChangeLog immediately before release
|
57
|
+
file 'ChangeLog'
|
57
58
|
task :prerelease => 'ChangeLog'
|
58
59
|
CLOBBER.include( 'ChangeLog' )
|
59
60
|
|
@@ -81,8 +82,10 @@ if File.directory?( '.hg' )
|
|
81
82
|
end
|
82
83
|
end
|
83
84
|
|
85
|
+
file 'Manifest.txt'
|
86
|
+
|
84
87
|
task :gemspec => GEMSPEC
|
85
|
-
file GEMSPEC => __FILE__
|
88
|
+
file GEMSPEC => [ 'Manifest.txt', 'ChangeLog', __FILE__ ]
|
86
89
|
task GEMSPEC do |task|
|
87
90
|
spec = $hoespec.spec
|
88
91
|
spec.files.delete( '.gemtest' )
|
data/lib/cztop/reactor.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'loggability'
|
5
5
|
require 'timers'
|
6
6
|
require 'ffi'
|
7
|
+
require 'monitor'
|
7
8
|
|
8
9
|
require 'cztop'
|
9
10
|
require 'cztop/poller'
|
@@ -20,9 +21,10 @@ require 'cztop/has_ffi_delegate'
|
|
20
21
|
#
|
21
22
|
class CZTop::Reactor
|
22
23
|
extend Loggability
|
24
|
+
include MonitorMixin
|
23
25
|
|
24
26
|
# The version of this library
|
25
|
-
VERSION = '0.
|
27
|
+
VERSION = '0.4.0'
|
26
28
|
|
27
29
|
# The maximum number of seconds to wait for events when there are no timers
|
28
30
|
# registered.
|
@@ -63,6 +65,8 @@ class CZTop::Reactor
|
|
63
65
|
CZTop::Poller::ZMQ.poller_destroy( ptr_ptr )
|
64
66
|
})
|
65
67
|
@event_ptr = ::FFI::MemoryPointer.new( CZTop::Poller::ZMQ::PollerEvent )
|
68
|
+
|
69
|
+
super
|
66
70
|
end
|
67
71
|
|
68
72
|
|
@@ -107,18 +111,20 @@ class CZTop::Reactor
|
|
107
111
|
|
108
112
|
raise LocalJumpError, "no block or handler given" unless handler
|
109
113
|
|
110
|
-
self.
|
114
|
+
self.synchronize do
|
115
|
+
self.unregister( socket )
|
111
116
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
117
|
+
ptr = self.ptr_for_socket( socket )
|
118
|
+
rc = CZTop::Poller::ZMQ.poller_add( @poller_ptr, ptr, nil, 0 )
|
119
|
+
self.log.debug "poller_add: rc = %p" % [ rc ]
|
120
|
+
CZTop::HasFFIDelegate.raise_zmq_err if rc == -1
|
116
121
|
|
117
|
-
|
118
|
-
|
119
|
-
|
122
|
+
self.log.info "Registered: %p with handler: %p" % [ socket, handler ]
|
123
|
+
self.sockets[ socket ][ :handler ] = handler
|
124
|
+
self.enable_events( socket, *events )
|
120
125
|
|
121
|
-
|
126
|
+
@socket_pointers[ ptr.to_i ] = socket
|
127
|
+
end
|
122
128
|
end
|
123
129
|
alias_method :add, :register
|
124
130
|
alias_method :register_socket, :register
|
@@ -128,15 +134,17 @@ class CZTop::Reactor
|
|
128
134
|
### handles, if present. Returns the handle if it was registered, or
|
129
135
|
### <tt>nil</tt> if it was not.
|
130
136
|
def unregister( socket )
|
131
|
-
|
132
|
-
self.
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
137
|
+
self.synchronize do
|
138
|
+
if self.sockets.delete( socket )
|
139
|
+
self.log.info "Unregistering: %p" % [ socket ]
|
140
|
+
ptr = self.ptr_for_socket( socket )
|
141
|
+
rc = CZTop::Poller::ZMQ.poller_remove( @poller_ptr, ptr )
|
142
|
+
self.log.debug "poller_remove: rc = %p" % [ rc ]
|
143
|
+
CZTop::HasFFIDelegate.raise_zmq_err if rc == -1
|
144
|
+
end
|
138
145
|
|
139
|
-
|
146
|
+
@socket_pointers.delete( ptr.to_i )
|
147
|
+
end
|
140
148
|
end
|
141
149
|
alias_method :remove, :unregister
|
142
150
|
alias_method :unregister_socket, :unregister
|
@@ -156,12 +164,14 @@ class CZTop::Reactor
|
|
156
164
|
raise ArgumentError, "invalid events: %p" % [ invalid ]
|
157
165
|
end
|
158
166
|
|
159
|
-
|
160
|
-
|
161
|
-
|
167
|
+
self.synchronize do
|
168
|
+
socket = self.socket_for_ptr( socket ) if socket.is_a?( FFI::Pointer )
|
169
|
+
raise ArgumentError, "%p is not registered yet" % [ socket ] unless
|
170
|
+
self.registered?( socket )
|
162
171
|
|
163
|
-
|
164
|
-
|
172
|
+
self.sockets[ socket ][ :events ] |= events
|
173
|
+
self.update_poller_for( socket )
|
174
|
+
end
|
165
175
|
end
|
166
176
|
alias_method :enable_event, :enable_events
|
167
177
|
alias_method :enable_socket_events, :enable_events
|
@@ -171,9 +181,11 @@ class CZTop::Reactor
|
|
171
181
|
### Remove the specified +events+ from the list that will be polled for on
|
172
182
|
### the given +socket+ handle.
|
173
183
|
def disable_events( socket, *events )
|
174
|
-
|
175
|
-
|
176
|
-
|
184
|
+
self.synchronize do
|
185
|
+
socket = self.socket_for_ptr( socket ) if socket.is_a?( FFI::Pointer )
|
186
|
+
self.sockets[ socket ][:events] -= events
|
187
|
+
self.update_poller_for( socket )
|
188
|
+
end
|
177
189
|
end
|
178
190
|
alias_method :disable_socket_events, :disable_events
|
179
191
|
|
@@ -197,9 +209,11 @@ class CZTop::Reactor
|
|
197
209
|
|
198
210
|
### Clear all registered sockets and returns the sockets that were cleared.
|
199
211
|
def clear
|
200
|
-
|
201
|
-
|
202
|
-
|
212
|
+
self.synchronize do
|
213
|
+
sockets = self.sockets.keys
|
214
|
+
sockets.each {|sock| self.unregister(sock) }
|
215
|
+
return sockets
|
216
|
+
end
|
203
217
|
end
|
204
218
|
|
205
219
|
|
@@ -348,11 +362,13 @@ class CZTop::Reactor
|
|
348
362
|
### Modify the underlying poller's event mask with the events +socket+ is
|
349
363
|
### interested in.
|
350
364
|
def update_poller_for( socket )
|
351
|
-
|
365
|
+
self.synchronize do
|
366
|
+
event_mask = self.mask_for( socket )
|
352
367
|
|
353
|
-
|
354
|
-
|
355
|
-
|
368
|
+
ptr = self.ptr_for_socket( socket )
|
369
|
+
rc = CZTop::Poller::ZMQ.poller_modify( @poller_ptr, ptr, event_mask )
|
370
|
+
CZTop::HasFFIDelegate.raise_zmq_err if rc == -1
|
371
|
+
end
|
356
372
|
end
|
357
373
|
|
358
374
|
|
@@ -14,7 +14,7 @@ require 'cztop/reactor' unless defined?( CZTop::Reactor )
|
|
14
14
|
# require 'cztop/reactor/signal_handling'
|
15
15
|
#
|
16
16
|
# class MyDaemon
|
17
|
-
# include
|
17
|
+
# include CZTop::Reactor::SignalHandling
|
18
18
|
#
|
19
19
|
# def start
|
20
20
|
# @reactor = CZTop::Reactor.new
|
@@ -133,7 +133,7 @@ module CZTop::Reactor::SignalHandling
|
|
133
133
|
|
134
134
|
### Set up signal traps for the specified +signals+.
|
135
135
|
def set_signal_traps( *signals )
|
136
|
-
self.log.debug "Setting up deferred signal handlers."
|
136
|
+
self.log.debug "Setting up deferred signal handlers for signals: %p." % [ signals ]
|
137
137
|
signals.each do |sig|
|
138
138
|
Signal.trap( sig ) do
|
139
139
|
Thread.main[ SIGNAL_QUEUE_KEY ] << sig
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cztop-reactor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -10,9 +10,9 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIEbDCCAtSgAwIBAgIBATANBgkqhkiG9w0BAQUFADA+MQwwCgYDVQQDDANnZWQx
|
14
14
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
15
|
-
|
15
|
+
HhcNMTcwOTI3MDAzMDQ0WhcNMTgwOTI3MDAzMDQ0WjA+MQwwCgYDVQQDDANnZWQx
|
16
16
|
GTAXBgoJkiaJk/IsZAEZFglGYWVyaWVNVUQxEzARBgoJkiaJk/IsZAEZFgNvcmcw
|
17
17
|
ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC/JWGRHO+USzR97vXjkFgt
|
18
18
|
83qeNf2KHkcvrRTSnR64i6um/ziin0I0oX23H7VYrDJC9A/uoUa5nGRJS5Zw/+wW
|
@@ -25,17 +25,17 @@ cert_chain:
|
|
25
25
|
/D+K9JW9DDs3Yjgv9k4h7YMhW5gftosd+NkNC/+Y2CkCAwEAAaN1MHMwCQYDVR0T
|
26
26
|
BAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFHKN/nkRusdqCJEuq3lgB3fJvyTg
|
27
27
|
MBwGA1UdEQQVMBOBEWdlZEBGYWVyaWVNVUQub3JnMBwGA1UdEgQVMBOBEWdlZEBG
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
YWVyaWVNVUQub3JnMA0GCSqGSIb3DQEBBQUAA4IBgQB/qyi5pCjK8ceoKalfVAjS
|
29
|
+
vG64FEnLnD1bm39T5UaFIRmo+abZtfpg2QhwKvPbPjOicau2+m+MDQ2Cc3tgyaC3
|
30
|
+
dZxcP6w8APFg4AId09uWAZKf0xajvBMS2aOz8Bbmag6fwqRRkTMqsNYnmqcF7aRT
|
31
|
+
DuEzbEMfaOUYjU9RuB48vr4q8yRft0ww+3jq5iwNkrX1buL2pwBbyvgms6D/BV41
|
32
|
+
MaTVMjsHqJUwU2xVfhGtxGAWAer5S1HGYHkbio6mGVtiie0uWjmnzi7ppIlMr48a
|
33
|
+
7BNTsoZ+/JRk3iQWmmNsyFT7xfqBKye7cH11BX8V8P4MeGB5YWlMI+Myj5DZY3fQ
|
34
|
+
st2AGD4rb1l0ia7PfubcBThSIdz61eCb8gRi/RiZZwb3/7+eyEncLJzt2Ob9fGSF
|
35
|
+
X0qdrKi+2aZZ0NGuFj9AItBsVmAvkBGIpX4TEKQp5haEbPpmaqO5nIIhV26PXmyT
|
36
|
+
OMKv6pWsoS81vw5KAGBmfX8nht/Py90DQrbRvakATGI=
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2018-06-27 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: loggability
|
@@ -99,14 +99,14 @@ dependencies:
|
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0.
|
102
|
+
version: '0.9'
|
103
103
|
type: :development
|
104
104
|
prerelease: false
|
105
105
|
version_requirements: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '0.
|
109
|
+
version: '0.9'
|
110
110
|
- !ruby/object:Gem::Dependency
|
111
111
|
name: hoe-highline
|
112
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,14 +169,14 @@ dependencies:
|
|
169
169
|
requirements:
|
170
170
|
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: '3.
|
172
|
+
version: '3.16'
|
173
173
|
type: :development
|
174
174
|
prerelease: false
|
175
175
|
version_requirements: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: '3.
|
179
|
+
version: '3.16'
|
180
180
|
description: |-
|
181
181
|
This is an implementation of the Reactor pattern described in [Pattern-Oriented
|
182
182
|
Software Architecture (Volume 2)][POSA2]. It allows an asynchronous application
|
@@ -244,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
244
|
version: '0'
|
245
245
|
requirements: []
|
246
246
|
rubyforge_project:
|
247
|
-
rubygems_version: 2.6
|
247
|
+
rubygems_version: 2.7.6
|
248
248
|
signing_key:
|
249
249
|
specification_version: 4
|
250
250
|
summary: This is an implementation of the Reactor pattern described in [Pattern-Oriented
|
metadata.gz.sig
CHANGED
Binary file
|