1- var utils = require ( __dirname + '/utils.js' ) ;
1+ const utils = require ( __dirname + '/utils.js' ) ;
22
3- var subscriptions = function ( callback ) {
4- var self = this ;
5- var subscriptions = { } ;
6- var count = 0 ;
3+ class Subscriptions {
4+ subscriptions ( callback ) {
5+ var self = this ;
6+ var subscriptions = { } ;
7+ var count = 0 ;
78
8- var now = new Date ( ) . getTime ( ) ;
9- self . connection . redis . smembers ( fullSubscriptionSet ( self ) , function ( err , applications ) {
10- if ( err || applications . length === 0 ) {
11- callback ( err , subscriptions , count ) ;
12- } else {
13- var started = 0 ;
14- applications . forEach ( function ( app ) {
15- started ++ ;
16- self . connection . redis . hgetall ( fullAppPrefix ( self ) + app , function ( err , subscription ) {
17- for ( var i in subscription ) {
18- if ( subscriptions [ app ] === null || subscriptions [ app ] === undefined ) { subscriptions [ app ] = { } ; }
19- subscriptions [ app ] [ i ] = JSON . parse ( subscription [ i ] ) ;
20- count ++ ;
21- }
22- started -- ;
23- if ( started === 0 ) {
24- callback ( err , subscriptions , count ) ;
25- }
9+ var now = new Date ( ) . getTime ( ) ;
10+ self . connection . redis . smembers ( fullSubscriptionSet ( self ) , function ( err , applications ) {
11+ if ( err || applications . length === 0 ) {
12+ callback ( err , subscriptions , count ) ;
13+ } else {
14+ var started = 0 ;
15+ applications . forEach ( function ( app ) {
16+ started ++ ;
17+ self . connection . redis . hgetall ( fullAppPrefix ( self ) + app , function ( err , subscription ) {
18+ for ( var i in subscription ) {
19+ if ( subscriptions [ app ] === null || subscriptions [ app ] === undefined ) { subscriptions [ app ] = { } ; }
20+ subscriptions [ app ] [ i ] = JSON . parse ( subscription [ i ] ) ;
21+ count ++ ;
22+ }
23+ started -- ;
24+ if ( started === 0 ) {
25+ callback ( err , subscriptions , count ) ;
26+ }
27+ } ) ;
2628 } ) ;
27- } ) ;
28- }
29- } ) ;
30- } ;
31-
32- var fullAppPrefix = function ( self ) {
33- return self . options . connection . namespace + self . options . appPrefix ;
34- } ;
29+ }
30+ } ) ;
31+ } ;
3532
36- var fullSubscriptionSet = function ( self ) {
37- return self . options . connection . namespace + self . options . subscriptionSet ;
38- } ;
33+ var fullAppPrefix = function ( self ) {
34+ return self . options . connection . namespace + self . options . appPrefix ;
35+ } ;
3936
40- var rubyizeMatcher = function ( matcher ) {
41- for ( var i in matcher ) {
42- matcher [ i ] = utils . toRubyRegExp ( matcher [ i ] ) ;
43- }
44- return matcher ;
45- } ;
37+ var fullSubscriptionSet = function ( self ) {
38+ return self . options . connection . namespace + self . options . subscriptionSet ;
39+ } ;
4640
47- var subscribe = function ( appKey , priority , job , matcher , callback ) {
48- var self = this ;
49- appKey = utils . normalize ( appKey ) ;
50- var key = utils . hashKey ( appKey , priority , job ) ;
51- var combined_queue_name = appKey + "_" + priority ;
52- var subscription = {
53- queue_name : combined_queue_name ,
54- key : key ,
55- class : job ,
56- matcher : rubyizeMatcher ( matcher )
41+ var rubyizeMatcher = function ( matcher ) {
42+ for ( var i in matcher ) {
43+ matcher [ i ] = utils . toRubyRegExp ( matcher [ i ] ) ;
44+ }
45+ return matcher ;
5746 } ;
5847
59- self . connection . redis . hset ( fullAppPrefix ( self ) + appKey , key , JSON . stringify ( subscription ) , function ( err ) {
60- self . connection . redis . sadd ( fullSubscriptionSet ( self ) , appKey , function ( err ) {
61- if ( typeof callback === 'function' ) { callback ( err , combined_queue_name ) ; }
48+ var subscribe = function ( appKey , priority , job , matcher , callback ) {
49+ var self = this ;
50+ appKey = utils . normalize ( appKey ) ;
51+ var key = utils . hashKey ( appKey , priority , job ) ;
52+ var combined_queue_name = appKey + "_" + priority ;
53+ var subscription = {
54+ queue_name : combined_queue_name ,
55+ key : key ,
56+ class : job ,
57+ matcher : rubyizeMatcher ( matcher )
58+ } ;
59+
60+ self . connection . redis . hset ( fullAppPrefix ( self ) + appKey , key , JSON . stringify ( subscription ) , function ( err ) {
61+ self . connection . redis . sadd ( fullSubscriptionSet ( self ) , appKey , function ( err ) {
62+ if ( typeof callback === 'function' ) { callback ( err , combined_queue_name ) ; }
63+ } ) ;
6264 } ) ;
63- } ) ;
64- } ;
65+ } ;
6566
66- var unsubscribe = function ( appKey , priority , job , callback ) {
67- var self = this ;
68- appKey = utils . normalize ( appKey ) ;
69- var key = utils . hashKey ( appKey , priority , job ) ;
70- self . connection . redis . hdel ( fullAppPrefix ( self ) + appKey , key , function ( err ) {
71- self . connection . redis . hkeys ( fullAppPrefix ( self ) + appKey , function ( err , keys ) {
72- if ( keys . length === 0 ) {
73- self . unsubscribeAll ( appKey , function ( ) {
67+ var unsubscribe = function ( appKey , priority , job , callback ) {
68+ var self = this ;
69+ appKey = utils . normalize ( appKey ) ;
70+ var key = utils . hashKey ( appKey , priority , job ) ;
71+ self . connection . redis . hdel ( fullAppPrefix ( self ) + appKey , key , function ( err ) {
72+ self . connection . redis . hkeys ( fullAppPrefix ( self ) + appKey , function ( err , keys ) {
73+ if ( keys . length === 0 ) {
74+ self . unsubscribeAll ( appKey , function ( ) {
75+ if ( typeof callback === 'function' ) { callback ( ) ; }
76+ } ) ;
77+ } else {
7478 if ( typeof callback === 'function' ) { callback ( ) ; }
75- } ) ;
76- } else {
77- if ( typeof callback === 'function' ) { callback ( ) ; }
78- }
79+ }
80+ } ) ;
7981 } ) ;
80- } ) ;
81- } ;
82+ } ;
8283
83- var unsubscribeAll = function ( appKey , callback ) {
84- var self = this ;
85- appKey = utils . normalize ( appKey ) ;
86- self . connection . redis . srem ( fullSubscriptionSet ( self ) , appKey , function ( err ) {
87- self . connection . redis . del ( fullAppPrefix ( self ) + appKey , function ( err ) {
88- if ( typeof callback === 'function' ) { callback ( ) ; }
84+ var unsubscribeAll = function ( appKey , callback ) {
85+ var self = this ;
86+ appKey = utils . normalize ( appKey ) ;
87+ self . connection . redis . srem ( fullSubscriptionSet ( self ) , appKey , function ( err ) {
88+ self . connection . redis . del ( fullAppPrefix ( self ) + appKey , function ( err ) {
89+ if ( typeof callback === 'function' ) { callback ( ) ; }
90+ } ) ;
8991 } ) ;
90- } ) ;
91- } ;
92+ } ;
93+
94+ }
95+ exports . Subscriptions = Subscriptions ;
9296
93- exports . subscriptions = subscriptions ;
94- exports . subscribe = subscribe ;
95- exports . unsubscribe = unsubscribe ;
96- exports . unsubscribeAll = unsubscribeAll ;
0 commit comments