UNPKG

1.2 kBtext/coffeescriptView Raw
1noflo = require 'noflo'
2
3class Kick extends noflo.Component
4 description: 'This component generates a single packet and sends it to
5 the output port. Mostly usable for debugging, but can also be useful
6 for starting up networks.'
7 icon: 'share'
8
9 constructor: ->
10 @data =
11 packet: null
12 group: []
13 @groups = []
14
15 @inPorts = new noflo.InPorts
16 in:
17 datatype: 'bang'
18 description: 'Signal to send the data packet'
19 data:
20 datatype: 'all'
21 description: 'Packet to be sent'
22 @outPorts = new noflo.OutPorts
23 out:
24 datatype: 'all'
25
26 @inPorts.in.on 'begingroup', (group) =>
27 @groups.push group
28
29 @inPorts.in.on 'data', =>
30 @data.group = @groups.slice 0
31
32 @inPorts.in.on 'endgroup', (group) =>
33 @groups.pop()
34
35 @inPorts.in.on 'disconnect', =>
36 @sendKick @data
37 @groups = []
38
39 @inPorts.data.on 'data', (data) =>
40 @data.packet = data
41
42 sendKick: (kick) ->
43 for group in kick.group
44 @outPorts.out.beginGroup group
45
46 @outPorts.out.send kick.packet
47
48 for group in kick.group
49 @outPorts.out.endGroup()
50
51 @outPorts.out.disconnect()
52
53exports.getComponent = -> new Kick