UNPKG

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