angelo 0.2.1 → 0.2.2
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
- data/README.md +1 -1
- data/lib/angelo/base.rb +19 -9
- data/lib/angelo/responder.rb +12 -5
- data/lib/angelo/server.rb +9 -1
- data/lib/angelo/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd2cb610a7377a13e931101270360afe324e1abd
|
4
|
+
data.tar.gz: 079ed6a36ff484e41ca11fdd7a1791a874923904
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6e24a7a88a9b44361c0efebb43ee3fb58130c19280cf3c73b013748ab87b76d104d85b0bd93416b7577c6504680550cfb5f77c8d2be9a38d3c7865eec9f250d
|
7
|
+
data.tar.gz: 543e9def3af8a7d149a8ce17bd1a15702a88a807949a1584f1e58f34815921fd5c2446c1b0ea536d3743156ea62e3ceb493b2235263438e3b5447fc109f1043e
|
data/README.md
CHANGED
@@ -538,7 +538,7 @@ class Foo < Angelo::Base
|
|
538
538
|
# this is a call to Base#future, telling the reactor
|
539
539
|
# do this thing and we'll want the value eventually
|
540
540
|
#
|
541
|
-
f = future :in_sec params[:sec], params[:msg]
|
541
|
+
f = future :in_sec, params[:sec], params[:msg]
|
542
542
|
f.value
|
543
543
|
end
|
544
544
|
|
data/lib/angelo/base.rb
CHANGED
@@ -128,15 +128,15 @@ module Angelo
|
|
128
128
|
Angelo::Server.define_task name, &block
|
129
129
|
end
|
130
130
|
|
131
|
-
def websockets
|
131
|
+
def websockets reject = true
|
132
132
|
@websockets ||= Stash::Websocket.new server
|
133
|
-
@websockets.reject! &:closed?
|
133
|
+
@websockets.reject! &:closed? if reject
|
134
134
|
@websockets
|
135
135
|
end
|
136
136
|
|
137
|
-
def sses
|
137
|
+
def sses reject = true
|
138
138
|
@sses ||= Stash::SSE.new server
|
139
|
-
@sses.reject! &:closed?
|
139
|
+
@sses.reject! &:closed? if reject
|
140
140
|
@sses
|
141
141
|
end
|
142
142
|
|
@@ -287,7 +287,7 @@ module Angelo
|
|
287
287
|
|
288
288
|
def eventsource &block
|
289
289
|
headers SSE_HEADER
|
290
|
-
async :handle_event_source, EventSource.new(responder
|
290
|
+
async :handle_event_source, EventSource.new(responder), block
|
291
291
|
halt 200, :sse
|
292
292
|
end
|
293
293
|
|
@@ -313,11 +313,12 @@ module Angelo
|
|
313
313
|
class EventSource
|
314
314
|
extend Forwardable
|
315
315
|
|
316
|
-
def_delegators :@socket, :close, :closed?, :<<, :write
|
317
|
-
attr_reader :socket
|
316
|
+
def_delegators :@socket, :close, :closed?, :<<, :write, :peeraddr
|
317
|
+
attr_reader :responder, :socket
|
318
318
|
|
319
|
-
def initialize
|
320
|
-
@
|
319
|
+
def initialize responder
|
320
|
+
@responder = responder
|
321
|
+
@socket = @responder.connection.detach.socket
|
321
322
|
end
|
322
323
|
|
323
324
|
def event name, data = nil
|
@@ -328,6 +329,15 @@ module Angelo
|
|
328
329
|
@socket.write Base.sse_message(data)
|
329
330
|
end
|
330
331
|
|
332
|
+
def on_close &block
|
333
|
+
@responder.on_close = block
|
334
|
+
end
|
335
|
+
|
336
|
+
def on_close= block
|
337
|
+
raise ArgumentError.new unless Proc === block
|
338
|
+
@responder.on_close = block
|
339
|
+
end
|
340
|
+
|
331
341
|
end
|
332
342
|
|
333
343
|
class ChunkedResponse
|
data/lib/angelo/responder.rb
CHANGED
@@ -30,20 +30,18 @@ module Angelo
|
|
30
30
|
|
31
31
|
end
|
32
32
|
|
33
|
-
attr_accessor :connection
|
34
|
-
attr_reader :request
|
33
|
+
attr_accessor :connection, :request
|
35
34
|
attr_writer :base
|
36
35
|
|
37
36
|
def initialize &block
|
38
37
|
@response_handler = Base.compile! :request_handler, &block
|
39
38
|
end
|
40
39
|
|
41
|
-
def
|
40
|
+
def reset!
|
42
41
|
@params = nil
|
43
42
|
@redirect = nil
|
44
43
|
@body = nil
|
45
|
-
@request =
|
46
|
-
handle_request
|
44
|
+
@request = nil
|
47
45
|
end
|
48
46
|
|
49
47
|
def handle_request
|
@@ -199,6 +197,15 @@ module Angelo
|
|
199
197
|
@redirect = url
|
200
198
|
end
|
201
199
|
|
200
|
+
def on_close= on_close
|
201
|
+
raise ArgumentError.new unless Proc === on_close
|
202
|
+
@on_close = on_close
|
203
|
+
end
|
204
|
+
|
205
|
+
def on_close
|
206
|
+
@on_close[] if @on_close
|
207
|
+
end
|
208
|
+
|
202
209
|
end
|
203
210
|
|
204
211
|
end
|
data/lib/angelo/server.rb
CHANGED
@@ -18,10 +18,15 @@ module Angelo
|
|
18
18
|
|
19
19
|
def on_connection connection
|
20
20
|
# RubyProf.resume
|
21
|
+
responders = []
|
22
|
+
|
21
23
|
connection.each_request do |request|
|
22
24
|
meth = request.websocket? ? :websocket : request.method.downcase.to_sym
|
23
|
-
dispatch! meth, connection, request
|
25
|
+
responder = dispatch! meth, connection, request
|
26
|
+
responders << responder if responder and responder.respond_to? :on_close
|
24
27
|
end
|
28
|
+
|
29
|
+
responders.each &:on_close
|
25
30
|
# RubyProf.pause
|
26
31
|
end
|
27
32
|
|
@@ -49,9 +54,12 @@ module Angelo
|
|
49
54
|
def route! meth, connection, request
|
50
55
|
if @base.routes[meth] and rs = @base.routes[meth][request.path]
|
51
56
|
responder = rs.dup
|
57
|
+
responder.reset!
|
52
58
|
responder.base = @base.new responder
|
53
59
|
responder.connection = connection
|
54
60
|
responder.request = request
|
61
|
+
responder.handle_request
|
62
|
+
responder
|
55
63
|
else
|
56
64
|
Angelo.log connection, request, nil, :not_found
|
57
65
|
connection.respond :not_found, DEFAULT_RESPONSE_HEADERS, NOT_FOUND
|
data/lib/angelo/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: angelo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenichi Nakamura
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: reel
|