1 | noflo = require 'noflo'
|
2 |
|
3 | class 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 |
|
53 | exports.getComponent = -> new Kick
|