Skip to content

Commit

Permalink
Merge e317521 into 73f67ce
Browse files Browse the repository at this point in the history
  • Loading branch information
jonnor committed Feb 19, 2018
2 parents 73f67ce + e317521 commit 0f0821d
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 34 deletions.
7 changes: 4 additions & 3 deletions src/Base.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,11 @@ class BaseTransport

if @options.defaultGraph?
@options.defaultGraph.baseDir = @options.baseDir
path = 'default/main'
graphName = 'default/main'
@context = 'none'
@graph.registerGraph path, @options.defaultGraph
@network.startNetwork @options.defaultGraph, { graph: path }, @context
@graph.registerGraph graphName, @options.defaultGraph
@network._startNetwork @options.defaultGraph, graphName, @context, (err) ->
throw err if err

if @options.captureOutput? and @options.captureOutput
# Start capturing so that we can send it to the UI when it connects
Expand Down
67 changes: 36 additions & 31 deletions src/protocol/Network.coffee
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
noflo = require 'noflo'
EventEmitter = require('events').EventEmitter

prepareSocketEvent = (event, req) ->
prepareSocketEvent = (event, graphName) ->
payload =
id: event.id
graph: req.graph
graph: graphName
if event.socket.from
payload.src =
node: event.socket.from.process.id
Expand Down Expand Up @@ -120,56 +120,56 @@ class NetworkProtocol extends EventEmitter
sign = getSocketSignature(event.socket)
return @networks[graph].filters[sign]

initNetwork: (graph, payload, context, callback) ->
initNetwork: (graph, graphName, context, callback) ->
# Ensure we stop previous network
if @networks[payload.graph] and @networks[payload.graph].network
network = @networks[payload.graph].network
if @networks[graphName] and @networks[graphName].network
network = @networks[graphName].network
network.stop (err) =>
return callback err if err
delete @networks[payload.graph]
@emit 'removenetwork', network, payload.graph, @networks
@initNetwork graph, payload, context, callback
delete @networks[graphName]
@emit 'removenetwork', network, graphName, @networks
@initNetwork graph, graphName, context, callback
return

graph.componentLoader = @transport.component.getLoader graph.baseDir, @transport.options
opts = JSON.parse JSON.stringify @transport.options
opts.delay = true
noflo.createNetwork graph, (err, network) =>
return callback err if err
if @networks[payload.graph] and @networks[payload.graph].network
@networks[payload.graph].network = network
if @networks[graphName] and @networks[graphName].network
@networks[graphName].network = network
else
@networks[payload.graph] =
@networks[graphName] =
network: network
filters: {}
@emit 'addnetwork', network, payload.graph, @networks
@subscribeNetwork network, payload, context
@emit 'addnetwork', network, graphName, @networks
@subscribeNetwork network, graphName, context

# Run the network
network.connect callback
, opts

subscribeNetwork: (network, payload, context) ->
subscribeNetwork: (network, graphName, context) ->
network.on 'start', (event) =>
@sendAll 'started',
time: event.start
graph: payload.graph
graph: graphName
running: network.isRunning()
started: network.isStarted()
, context
network.on 'end', (event) =>
@sendAll 'stopped',
time: new Date
uptime: event.uptime
graph: payload.graph
graph: graphName
running: network.isRunning()
started: network.isStarted()
, context
network.on 'icon', (event) =>
event.graph = payload.graph
event.graph = graphName
@sendAll 'icon', event, context
network.on 'ip', (event) =>
return unless @eventFiltered(payload.graph, event)
return unless @eventFiltered(graphName, event)
protocolEvent =
id: event.id
socket: event.socket
Expand All @@ -187,7 +187,7 @@ class NetworkProtocol extends EventEmitter
when 'closeBracket'
protocolEvent.type = 'endgroup'
protocolEvent.group = event.data
@sendAll protocolEvent.type, prepareSocketEvent(protocolEvent, payload), context
@sendAll protocolEvent.type, prepareSocketEvent(protocolEvent, graphName), context
network.on 'process-error', (event) =>
error = event.error.message
# If we can get a backtrace, send 3 levels
Expand All @@ -198,23 +198,28 @@ class NetworkProtocol extends EventEmitter
@sendAll 'processerror',
id: event.id
error: error
graph: payload.graph
graph: graphName
, context

startNetwork: (graph, payload, context) ->
doStart = (net) =>
net.start (err) =>
return @send 'error', err, content if err
network = @networks[payload.graph]
_startNetwork: (graph, graphName, context, callback) ->
doStart = (net) ->
net.start (err) ->
return callback err

network = @networks[graphName]
if network and network.network
# already initialized
doStart network.network
return
return doStart network.network

@initNetwork graph, graphName, context, (err) =>
return callback err if err
network = @networks[graphName]
return doStart network.network

@initNetwork graph, payload, context, (err) =>
return @send 'error', err, context if err
network = @networks[payload.graph]
doStart network.network
startNetwork: (graph, payload, context) ->
@_startNetwork graph, payload.graph, context, (err) ->
@send 'error', err, context if err
return

stopNetwork: (graph, payload, context) ->
return unless @networks[payload.graph]
Expand Down

0 comments on commit 0f0821d

Please sign in to comment.