@Override public void run() { executeReturnCode = execute(masterUri, hostName, nodeName, remappingArguments); if (executeReturnCode != SUCCESS) { onError(connectedNode, new Throwable(nodeName + " execution error code " + executeReturnCode)); } // node execution has finished so we propagate the shutdown sequence only if we aren't already shutting down for other reasons if (!shuttingDown) { connectedNode.shutdown(); } } }.start();
/** * Register a {@link ConnectedNode} with the {@link NodeMainExecutor}. * * @param connectedNode * the {@link ConnectedNode} to register */ private void registerNode(ConnectedNode connectedNode) { GraphName nodeName = connectedNode.getName(); synchronized (connectedNodes) { for (ConnectedNode illegalConnectedNode : connectedNodes.get(nodeName)) { System.err.println(String.format( "Node name collision. Existing node %s (%s) will be shutdown.", nodeName, illegalConnectedNode.getUri())); illegalConnectedNode.shutdown(); } connectedNodes.put(nodeName, connectedNode); } }
@Override public void onStart(ConnectedNode connectedNode) { ParameterTree parameterTree = connectedNode.getParameterTree(); log = connectedNode.getLog(); // TODO: For some reason, setting the / param when using a rosjava master doesn't work // It does work fine with an external master, and also setting other params of any type for (LoadedResource r : params) { addParams(parameterTree, r.namespace, r.resource); } connectedNode.shutdown(); }