Skip to content

Commit cac55e6

Browse files
committed
participant: Send discovery messages regularly
References msgflo/msgflo#30
1 parent 0853f10 commit cac55e6

1 file changed

Lines changed: 11 additions & 3 deletions

File tree

src/participant.coffee

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,16 @@ instantiateDefinition = (d, role) ->
5151

5252
class Participant extends EventEmitter
5353
# @func gets called with inport, , and should return outport, outdata
54-
constructor: (client, def, @func, role) ->
54+
constructor: (client, def, @func, role, options={}) ->
5555
client = transport.getClient(client) if typeof client == 'string'
5656
@messaging = client
5757
role = 'unknown' if not role
5858
@definition = instantiateDefinition def, role
5959
@running = false
6060
newrelic = require './newrelic'
6161
@_transactions = new newrelic.Transactions @definition
62+
@options = options
63+
@options.discoveryPeriod = 60 if not @options.discoveryPeriod # seconds
6264

6365
start: (callback) ->
6466
@messaging.connect (err) =>
@@ -68,8 +70,14 @@ class Participant extends EventEmitter
6870
@setupPorts (err) =>
6971
@running = true
7072
return callback err if err
71-
@register (err) ->
72-
return callback err
73+
@register (err) =>
74+
return callback err if err
75+
period = @options.discoveryPeriod*1000/2.2 # try to send 2 messages before deadline
76+
setTimeout () =>
77+
@register (err) ->
78+
console.log 'Could not send discovery message', err if err
79+
, period
80+
return callback null
7381

7482
stop: (callback) ->
7583
@running = false

0 commit comments

Comments
 (0)