celluloid_pubsub 0.2.0 → 0.3.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
- data/.reek +11 -0
- data/.rubocop.yml +4 -0
- data/Rakefile +3 -23
- data/celluloid_pubsub.gemspec +1 -5
- data/examples/redis_test.rb +1 -1
- data/examples/shared_classes.rb +14 -33
- data/examples/simple_test.rb +1 -1
- data/lib/celluloid_pubsub/client.rb +59 -49
- data/lib/celluloid_pubsub/helper.rb +64 -0
- data/lib/celluloid_pubsub/reactor.rb +60 -49
- data/lib/celluloid_pubsub/redis/redis.rb +38 -0
- data/lib/celluloid_pubsub/redis/redis_reactor.rb +97 -0
- data/lib/celluloid_pubsub/version.rb +1 -1
- data/lib/celluloid_pubsub/web_server.rb +78 -57
- data/spec/lib/celluloid_pubsub/client_pubsub_spec.rb +6 -6
- data/spec/lib/celluloid_pubsub/reactor_spec.rb +2 -0
- data/spec/spec_helper.rb +0 -8
- metadata +10 -88
- data/lib/celluloid_pubsub/redis.rb +0 -25
- data/lib/celluloid_pubsub/redis_reactor.rb +0 -78
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: celluloid_pubsub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bogdanRada
|
@@ -190,46 +190,6 @@ dependencies:
|
|
190
190
|
- - ">="
|
191
191
|
- !ruby/object:Gem::Version
|
192
192
|
version: '3.3'
|
193
|
-
- !ruby/object:Gem::Dependency
|
194
|
-
name: guard
|
195
|
-
requirement: !ruby/object:Gem::Requirement
|
196
|
-
requirements:
|
197
|
-
- - "~>"
|
198
|
-
- !ruby/object:Gem::Version
|
199
|
-
version: '2.13'
|
200
|
-
- - ">="
|
201
|
-
- !ruby/object:Gem::Version
|
202
|
-
version: '2.13'
|
203
|
-
type: :development
|
204
|
-
prerelease: false
|
205
|
-
version_requirements: !ruby/object:Gem::Requirement
|
206
|
-
requirements:
|
207
|
-
- - "~>"
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
version: '2.13'
|
210
|
-
- - ">="
|
211
|
-
- !ruby/object:Gem::Version
|
212
|
-
version: '2.13'
|
213
|
-
- !ruby/object:Gem::Dependency
|
214
|
-
name: guard-rspec
|
215
|
-
requirement: !ruby/object:Gem::Requirement
|
216
|
-
requirements:
|
217
|
-
- - "~>"
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
version: '4.6'
|
220
|
-
- - ">="
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
version: '4.6'
|
223
|
-
type: :development
|
224
|
-
prerelease: false
|
225
|
-
version_requirements: !ruby/object:Gem::Requirement
|
226
|
-
requirements:
|
227
|
-
- - "~>"
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: '4.6'
|
230
|
-
- - ">="
|
231
|
-
- !ruby/object:Gem::Version
|
232
|
-
version: '4.6'
|
233
193
|
- !ruby/object:Gem::Dependency
|
234
194
|
name: simplecov
|
235
195
|
requirement: !ruby/object:Gem::Requirement
|
@@ -310,26 +270,6 @@ dependencies:
|
|
310
270
|
- - ">="
|
311
271
|
- !ruby/object:Gem::Version
|
312
272
|
version: '0.7'
|
313
|
-
- !ruby/object:Gem::Dependency
|
314
|
-
name: rvm-tester
|
315
|
-
requirement: !ruby/object:Gem::Requirement
|
316
|
-
requirements:
|
317
|
-
- - "~>"
|
318
|
-
- !ruby/object:Gem::Version
|
319
|
-
version: '1.1'
|
320
|
-
- - ">="
|
321
|
-
- !ruby/object:Gem::Version
|
322
|
-
version: '1.1'
|
323
|
-
type: :development
|
324
|
-
prerelease: false
|
325
|
-
version_requirements: !ruby/object:Gem::Requirement
|
326
|
-
requirements:
|
327
|
-
- - "~>"
|
328
|
-
- !ruby/object:Gem::Version
|
329
|
-
version: '1.1'
|
330
|
-
- - ">="
|
331
|
-
- !ruby/object:Gem::Version
|
332
|
-
version: '1.1'
|
333
273
|
- !ruby/object:Gem::Dependency
|
334
274
|
name: rubocop
|
335
275
|
requirement: !ruby/object:Gem::Requirement
|
@@ -351,25 +291,25 @@ dependencies:
|
|
351
291
|
- !ruby/object:Gem::Version
|
352
292
|
version: '0.33'
|
353
293
|
- !ruby/object:Gem::Dependency
|
354
|
-
name:
|
294
|
+
name: reek
|
355
295
|
requirement: !ruby/object:Gem::Requirement
|
356
296
|
requirements:
|
357
297
|
- - "~>"
|
358
298
|
- !ruby/object:Gem::Version
|
359
|
-
version: '
|
299
|
+
version: '3.8'
|
360
300
|
- - ">="
|
361
301
|
- !ruby/object:Gem::Version
|
362
|
-
version:
|
302
|
+
version: 3.8.1
|
363
303
|
type: :development
|
364
304
|
prerelease: false
|
365
305
|
version_requirements: !ruby/object:Gem::Requirement
|
366
306
|
requirements:
|
367
307
|
- - "~>"
|
368
308
|
- !ruby/object:Gem::Version
|
369
|
-
version: '
|
309
|
+
version: '3.8'
|
370
310
|
- - ">="
|
371
311
|
- !ruby/object:Gem::Version
|
372
|
-
version:
|
312
|
+
version: 3.8.1
|
373
313
|
- !ruby/object:Gem::Dependency
|
374
314
|
name: yard
|
375
315
|
requirement: !ruby/object:Gem::Requirement
|
@@ -470,26 +410,6 @@ dependencies:
|
|
470
410
|
- - ">="
|
471
411
|
- !ruby/object:Gem::Version
|
472
412
|
version: '0.6'
|
473
|
-
- !ruby/object:Gem::Dependency
|
474
|
-
name: guard-inch
|
475
|
-
requirement: !ruby/object:Gem::Requirement
|
476
|
-
requirements:
|
477
|
-
- - "~>"
|
478
|
-
- !ruby/object:Gem::Version
|
479
|
-
version: '0.1'
|
480
|
-
- - ">="
|
481
|
-
- !ruby/object:Gem::Version
|
482
|
-
version: 0.1.0
|
483
|
-
type: :development
|
484
|
-
prerelease: false
|
485
|
-
version_requirements: !ruby/object:Gem::Requirement
|
486
|
-
requirements:
|
487
|
-
- - "~>"
|
488
|
-
- !ruby/object:Gem::Version
|
489
|
-
version: '0.1'
|
490
|
-
- - ">="
|
491
|
-
- !ruby/object:Gem::Version
|
492
|
-
version: 0.1.0
|
493
413
|
description: CelluloidPubsub is a simple ruby implementation of publish subscribe
|
494
414
|
design patterns using celluloid actors and websockets, using Reel server for inter-process
|
495
415
|
communication
|
@@ -500,6 +420,7 @@ extra_rdoc_files: []
|
|
500
420
|
files:
|
501
421
|
- ".coveralls.yml"
|
502
422
|
- ".gitignore"
|
423
|
+
- ".reek"
|
503
424
|
- ".rspec"
|
504
425
|
- ".rubocop.yml"
|
505
426
|
- ".travis.yml"
|
@@ -516,9 +437,10 @@ files:
|
|
516
437
|
- init.rb
|
517
438
|
- lib/celluloid_pubsub.rb
|
518
439
|
- lib/celluloid_pubsub/client.rb
|
440
|
+
- lib/celluloid_pubsub/helper.rb
|
519
441
|
- lib/celluloid_pubsub/reactor.rb
|
520
|
-
- lib/celluloid_pubsub/redis.rb
|
521
|
-
- lib/celluloid_pubsub/redis_reactor.rb
|
442
|
+
- lib/celluloid_pubsub/redis/redis.rb
|
443
|
+
- lib/celluloid_pubsub/redis/redis_reactor.rb
|
522
444
|
- lib/celluloid_pubsub/registry.rb
|
523
445
|
- lib/celluloid_pubsub/version.rb
|
524
446
|
- lib/celluloid_pubsub/web_server.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module CelluloidPubsub
|
2
|
-
class Redis
|
3
|
-
class << self
|
4
|
-
@connected ||= false
|
5
|
-
attr_accessor :connected, :connection
|
6
|
-
|
7
|
-
alias_method :connected?, :connected
|
8
|
-
|
9
|
-
def connect(_options = {})
|
10
|
-
require 'eventmachine'
|
11
|
-
require 'em-hiredis'
|
12
|
-
EM.run do
|
13
|
-
@connection = EM::Hiredis.connect
|
14
|
-
@connected = true
|
15
|
-
yield @connection if block_given?
|
16
|
-
end
|
17
|
-
EM.error_handler do |error|
|
18
|
-
unless error.is_a?(Interrupt)
|
19
|
-
puts error.inspect
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
require_relative './reactor'
|
2
|
-
module CelluloidPubsub
|
3
|
-
class RedisReactor < CelluloidPubsub::Reactor
|
4
|
-
include Celluloid
|
5
|
-
include Celluloid::IO
|
6
|
-
include Celluloid::Logger
|
7
|
-
|
8
|
-
def unsubscribe(channel)
|
9
|
-
super
|
10
|
-
async.redis_action('unsubscribe', channel)
|
11
|
-
end
|
12
|
-
|
13
|
-
def add_subscriber_to_channel(channel, message)
|
14
|
-
super
|
15
|
-
async.redis_action('subscribe', channel, message)
|
16
|
-
end
|
17
|
-
|
18
|
-
def unsubscribe_from_channel(channel)
|
19
|
-
super
|
20
|
-
async.redis_action('unsubscribe', channel)
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
def unsubscribe_all
|
25
|
-
CelluloidPubsub::Registry.channels.map do |channel|
|
26
|
-
async.redis_action('unsubscribe', channel)
|
27
|
-
end
|
28
|
-
info 'clearing connections'
|
29
|
-
shutdown
|
30
|
-
end
|
31
|
-
|
32
|
-
def shutdown
|
33
|
-
@channels.each do |channel|
|
34
|
-
redis_action('unsubscribe', channel)
|
35
|
-
end
|
36
|
-
super
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def redis_action(action, channel = nil, message = {})
|
42
|
-
CelluloidPubsub::Redis.connect do |connection|
|
43
|
-
pubsub = connection.pubsub
|
44
|
-
pubsub.on(:unsubscribe) { |channel, remaining_subscriptions|
|
45
|
-
debug [:unsubscribe_happened, channel, remaining_subscriptions].inspect if @server.debug_enabled?
|
46
|
-
}
|
47
|
-
|
48
|
-
if action == 'subscribe' && channel.present?
|
49
|
-
subscription = pubsub.subscribe(channel) {|subscribed_message|
|
50
|
-
@websocket << subscribed_message
|
51
|
-
}
|
52
|
-
subscription.callback { |reply|
|
53
|
-
@websocket << message.merge('client_action' => 'successful_subscription', 'channel' => channel, 'subscriptions' => reply).to_json
|
54
|
-
}
|
55
|
-
subscription.errback {|reply|
|
56
|
-
debug "subscription error #{reply.inspect}" if @server.debug_enabled?
|
57
|
-
}
|
58
|
-
else
|
59
|
-
if channel.present?
|
60
|
-
unsubscription = pubsub.unsubscribe(channel)
|
61
|
-
unsubscription.callback {|reply|
|
62
|
-
debug "unsubscription success #{reply.inspect}" if @server.debug_enabled?
|
63
|
-
}
|
64
|
-
unsubscription.errback {|reply|
|
65
|
-
debug "unsubscription error #{reply.inspect}" if @server.debug_enabled?
|
66
|
-
}
|
67
|
-
else
|
68
|
-
connection.unsubscribe
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
end
|
78
|
-
end
|