angelo 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|