cztop-reactor 0.5.0 → 0.6.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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/ChangeLog +75 -2
- data/History.md +7 -0
- data/Manifest.txt +2 -0
- data/lib/cztop/reactor.rb +1 -1
- data/lib/cztop/reactor/socket_monitoring.rb +117 -0
- data/spec/cztop/reactor/socket_monitoring_spec.rb +42 -0
- metadata +5 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c35b32fd4ad494b65ff397c7bc78e0c2f02cffbd9745bc674c6813de209844b1
|
4
|
+
data.tar.gz: a13ddcdbbf60a25b2e06675fb00430502cb1d5808ad65c01c7de531856ed0669
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 356fde892a03e56418ceada7be45cf08e1cb1355f67e6c3ad7cb7aed4cc408dfd029598d81473715c3eaf1c4ab809eed3966d2b1c8bfca3f8ba6c770ea0da151
|
7
|
+
data.tar.gz: 26a7370a6a141b4e0959bbead2b51c9bfa72711c1f5a369bacc61eb7aabb7c9fcea6ee8a4f20341625863d0ba4b370ee70417e5875ea70ec7130bb82810f15cb
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,8 +1,81 @@
|
|
1
|
+
2018-07-21 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* Manifest.txt, lib/cztop/reactor/socket_monitoring.rb,
|
4
|
+
spec/cztop/reactor/socket_monitoring_spec.rb:
|
5
|
+
Add a socket monitor mixin
|
6
|
+
[e65cdcbe5f89] [tip]
|
7
|
+
|
8
|
+
2018-07-11 Michael Granger <ged@FaerieMUD.org>
|
9
|
+
|
10
|
+
* .hgtags:
|
11
|
+
Added tag v0.5.0 for changeset c82d889b3d2e
|
12
|
+
[0338a8ab0f8b]
|
13
|
+
|
14
|
+
* .hgsigs:
|
15
|
+
Added signature for changeset c6276b15f479
|
16
|
+
[c82d889b3d2e] [v0.5.0]
|
17
|
+
|
18
|
+
* History.md, Rakefile, cztop-reactor.gemspec, lib/cztop/reactor.rb:
|
19
|
+
Bump the minor version, cztop dep, and update History.
|
20
|
+
[c6276b15f479]
|
21
|
+
|
22
|
+
* cztop-reactor.gemspec, lib/cztop/reactor.rb,
|
23
|
+
spec/cztop/reactor_spec.rb:
|
24
|
+
Added methods to pause/resume all timers.
|
25
|
+
[67cfabefffd2]
|
26
|
+
|
27
|
+
2018-06-27 Michael Granger <ged@FaerieMUD.org>
|
28
|
+
|
29
|
+
* .hgtags:
|
30
|
+
Added tag v0.4.0 for changeset 36b814356934
|
31
|
+
[9e371cd81152]
|
32
|
+
|
33
|
+
* .hgsigs:
|
34
|
+
Added signature for changeset 4fa4ea9f2a91
|
35
|
+
[36b814356934] [v0.4.0]
|
36
|
+
|
37
|
+
* History.md, lib/cztop/reactor.rb:
|
38
|
+
Bump the minor version, update history.
|
39
|
+
[4fa4ea9f2a91]
|
40
|
+
|
41
|
+
* .ruby-version, lib/cztop/reactor.rb:
|
42
|
+
Make the reactor threadsafe
|
43
|
+
[c0beb742a2a2]
|
44
|
+
|
45
|
+
2018-06-06 Michael Granger <ged@FaerieMUD.org>
|
46
|
+
|
47
|
+
* Merged with 33bf1ec41017
|
48
|
+
[9ca502f040d3]
|
49
|
+
|
50
|
+
* lib/cztop/reactor/signal_handling.rb:
|
51
|
+
Fix docs and logging in signal handling mixin
|
52
|
+
[0adc6861a172]
|
53
|
+
|
54
|
+
* lib/cztop/reactor.rb:
|
55
|
+
Guard against events with no sockets
|
56
|
+
[749f5de1d5fe]
|
57
|
+
|
58
|
+
* certs/ged.pem:
|
59
|
+
Update my gem-signing cert
|
60
|
+
[26089589e937]
|
61
|
+
|
62
|
+
2017-11-07 Michael Granger <ged@FaerieMUD.org>
|
63
|
+
|
64
|
+
* .ruby-version:
|
65
|
+
Update to Ruby 2.4
|
66
|
+
[33bf1ec41017]
|
67
|
+
|
68
|
+
2017-05-19 Michael Granger <ged@FaerieMUD.org>
|
69
|
+
|
70
|
+
* Rakefile, cztop-reactor.gemspec:
|
71
|
+
Fix the rules for the gemspec.
|
72
|
+
[469956f9635b]
|
73
|
+
|
1
74
|
2017-05-16 Michael Granger <ged@FaerieMUD.org>
|
2
75
|
|
3
76
|
* .hgtags:
|
4
77
|
Added tag v0.3.0 for changeset 93726ed1d11c
|
5
|
-
[4a5ff1ab5370]
|
78
|
+
[4a5ff1ab5370]
|
6
79
|
|
7
80
|
* .hgsigs:
|
8
81
|
Added signature for changeset b27d8748d922
|
@@ -67,7 +140,7 @@
|
|
67
140
|
|
68
141
|
* .hgsigs:
|
69
142
|
Added signature for changeset 8616ee222428
|
70
|
-
[10a0b983e907]
|
143
|
+
[10a0b983e907]
|
71
144
|
|
72
145
|
* .hgtags:
|
73
146
|
Added tag v0.1.0.pre20170323172345 for changeset 77db55f567df
|
data/History.md
CHANGED
data/Manifest.txt
CHANGED
@@ -10,7 +10,9 @@ Rakefile
|
|
10
10
|
lib/cztop/reactor.rb
|
11
11
|
lib/cztop/reactor/event.rb
|
12
12
|
lib/cztop/reactor/signal_handling.rb
|
13
|
+
lib/cztop/reactor/socket_monitoring.rb
|
13
14
|
spec/cztop/reactor/event_spec.rb
|
14
15
|
spec/cztop/reactor/signal_handling_spec.rb
|
16
|
+
spec/cztop/reactor/socket_monitoring_spec.rb
|
15
17
|
spec/cztop/reactor_spec.rb
|
16
18
|
spec/spec_helper.rb
|
data/lib/cztop/reactor.rb
CHANGED
@@ -0,0 +1,117 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'cztop/reactor' unless defined?( CZTop::Reactor )
|
5
|
+
|
6
|
+
# Methods for logging monitor events.
|
7
|
+
module CZTop::Reactor::SocketMonitoring
|
8
|
+
|
9
|
+
### Inclusion callback -- add Loggability to including classes.
|
10
|
+
def self::included( mod )
|
11
|
+
super
|
12
|
+
mod.extend( Loggability )
|
13
|
+
mod.log_to( :cztop ) unless Loggability.log_host?( mod )
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
### Set up a monitor instance variable on object creation.
|
18
|
+
def initialize( * ) # :notnew:
|
19
|
+
@monitor = nil
|
20
|
+
end
|
21
|
+
|
22
|
+
##
|
23
|
+
# The CZTop::Monitor for the server socket
|
24
|
+
attr_reader :monitor
|
25
|
+
|
26
|
+
|
27
|
+
### Run the block with monitoring for the specified +socket+.
|
28
|
+
def with_socket_monitor( reactor, socket, *events )
|
29
|
+
mon = self.set_up_socket_monitor( reactor, socket )
|
30
|
+
|
31
|
+
return yield
|
32
|
+
ensure
|
33
|
+
self.clean_up_socket_monitor( mon )
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
### Create a monitor for the specified +socket+.
|
38
|
+
def set_up_socket_monitor( reactor, socket, *events )
|
39
|
+
return reactor.register_monitor( socket, *events, &self.method(:on_monitor_event) )
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
### Tear down the monitor.
|
44
|
+
def clean_up_socket_monitor( mon )
|
45
|
+
mon.terminate if mon
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
### Handle monitor events.
|
50
|
+
def on_monitor_event( monitor_event )
|
51
|
+
self.log.debug "Got monitor event: %p" % [ monitor_event ]
|
52
|
+
|
53
|
+
msg = monitor_event.socket.receive
|
54
|
+
type, *payload = *msg
|
55
|
+
callback_name = "on_#{type.downcase}"
|
56
|
+
|
57
|
+
if self.respond_to?( callback_name, true )
|
58
|
+
self.send( callback_name, *payload )
|
59
|
+
else
|
60
|
+
self.log.warn "No handler (#%s) for monitored %s event." % [ callback_name, type ]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
alias_method :handle_monitor_event, :on_monitor_event
|
64
|
+
|
65
|
+
|
66
|
+
#########
|
67
|
+
protected
|
68
|
+
#########
|
69
|
+
|
70
|
+
### Monitor event callback for socket connection events
|
71
|
+
def on_connected( fd, endpoint )
|
72
|
+
self.log.debug "Client socket on FD %d connected" % [ fd ]
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
### Monitor event callback for socket accepted events
|
77
|
+
def on_accepted( fd, endpoint )
|
78
|
+
self.log.debug "Client socket on FD %d accepted" % [ fd ]
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
### Monitor event callback for successful auth events.
|
83
|
+
def on_handshake_succeeded( fd, endpoint )
|
84
|
+
self.log.debug "Client socket on FD %d handshake succeeded" % [ fd ]
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
### Monitor event callback for failed auth events.
|
89
|
+
def on_handshake_failed( fd, endpoint )
|
90
|
+
self.log.debug "Client socket on FD %d handshake failed" % [ fd ]
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
### Monitor event callback for failed handshake events.
|
95
|
+
def on_handshake_failed_no_detail( fd, endpoint )
|
96
|
+
self.log.debug "Client socket on FD %d handshake failed; no further details are known" % [ fd ]
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
### Monitor event callback for failed handshake events.
|
101
|
+
def on_handshake_failed_protocol( fd, endpoint )
|
102
|
+
self.log.debug "Client socket on FD %d handshake failed: protocol error" % [ fd ]
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
### Monitor event callback for socket closed events
|
107
|
+
def on_closed( fd, endpoint )
|
108
|
+
self.log.debug "Client socket on FD %d closed" % [ fd ]
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
### Monitor event callback for socket disconnection events
|
113
|
+
def on_disconnected( fd, endpoint )
|
114
|
+
self.log.debug "Client socket on FD %d disconnected" % [ fd ]
|
115
|
+
end
|
116
|
+
|
117
|
+
end # module CZTop::Reactor::SocketMonitoring
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env rspec -cfd
|
2
|
+
|
3
|
+
require_relative '../../spec_helper'
|
4
|
+
|
5
|
+
require 'cztop/reactor/socket_monitoring'
|
6
|
+
|
7
|
+
|
8
|
+
describe CZTop::Reactor::SocketMonitoring do
|
9
|
+
|
10
|
+
it "can add a socket monitor setup to a reactor for a block" do
|
11
|
+
including_class = Class.new do
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@monitor_events = []
|
15
|
+
end
|
16
|
+
|
17
|
+
attr_reader :monitor_events
|
18
|
+
|
19
|
+
def on_connect_delayed( fd, endpoint )
|
20
|
+
@monitor_events << :connect_delayed
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
including_class.include( described_class )
|
26
|
+
|
27
|
+
obj = including_class.new
|
28
|
+
reactor = CZTop::Reactor.new
|
29
|
+
listener = CZTop::Socket::SERVER.new( '@tcp://127.0.0.1:*' )
|
30
|
+
socket = CZTop::Socket::CLIENT.new
|
31
|
+
|
32
|
+
obj.with_socket_monitor( reactor, socket, :CONNECTED ) do
|
33
|
+
socket.connect( listener.last_endpoint )
|
34
|
+
reactor.poll_once
|
35
|
+
end
|
36
|
+
|
37
|
+
expect( obj.monitor_events ).to include( :connect_delayed )
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
end
|
42
|
+
|
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.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
X0qdrKi+2aZZ0NGuFj9AItBsVmAvkBGIpX4TEKQp5haEbPpmaqO5nIIhV26PXmyT
|
36
36
|
OMKv6pWsoS81vw5KAGBmfX8nht/Py90DQrbRvakATGI=
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2018-07-
|
38
|
+
date: 2018-07-23 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: loggability
|
@@ -218,8 +218,10 @@ files:
|
|
218
218
|
- lib/cztop/reactor.rb
|
219
219
|
- lib/cztop/reactor/event.rb
|
220
220
|
- lib/cztop/reactor/signal_handling.rb
|
221
|
+
- lib/cztop/reactor/socket_monitoring.rb
|
221
222
|
- spec/cztop/reactor/event_spec.rb
|
222
223
|
- spec/cztop/reactor/signal_handling_spec.rb
|
224
|
+
- spec/cztop/reactor/socket_monitoring_spec.rb
|
223
225
|
- spec/cztop/reactor_spec.rb
|
224
226
|
- spec/spec_helper.rb
|
225
227
|
homepage: http://deveiate.org/projects/cztop-reactor
|
@@ -244,7 +246,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
246
|
version: '0'
|
245
247
|
requirements: []
|
246
248
|
rubyforge_project:
|
247
|
-
rubygems_version: 2.7.
|
249
|
+
rubygems_version: 2.7.7
|
248
250
|
signing_key:
|
249
251
|
specification_version: 4
|
250
252
|
summary: This is an implementation of the Reactor pattern described in [Pattern-Oriented
|
metadata.gz.sig
CHANGED
Binary file
|