UNPKG

1.06 kBtext/coffeescriptView Raw
1{EventEmitter2} = require 'eventemitter2'
2
3class MultiHydrantManager extends EventEmitter2
4 constructor: ({@client, @uuidAliasResolver}) ->
5 throw new Error('MultiHydrantManager: client is required') unless @client?
6 throw new Error('MultiHydrantManager: uuidAliasResolver is required') unless @uuidAliasResolver?
7
8 connect: (callback) =>
9 @client.once 'ready', =>
10 @client.on 'message', @_onMessage
11 callback()
12 callback = ->
13
14 @client.once 'error', (error) =>
15 callback error
16 callback = ->
17
18 subscribe: ({uuid}, callback) =>
19 @uuidAliasResolver.resolve uuid, (error, uuid) =>
20 return callback error if error?
21 @client.subscribe uuid, callback
22
23 close: =>
24 if @client.disconnect?
25 @client.quit()
26 @client.disconnect false
27 return
28 @client.end true
29
30 _onMessage: (channel, messageStr) =>
31 try
32 message = JSON.parse messageStr
33 catch
34 @emit 'error', 'Error: unable to parse message'
35 return
36
37 @emit 'message', channel, message
38
39module.exports = MultiHydrantManager