Skip to content

Instantly share code, notes, and snippets.

@erossignon
Last active March 29, 2017 23:26
Show Gist options
  • Save erossignon/df6ffd19ca0ff228395fc95a688310ac to your computer and use it in GitHub Desktop.
Save erossignon/df6ffd19ca0ff228395fc95a688310ac to your computer and use it in GitHub Desktop.
// copyright Etienne Rossignon - 2017
var makeNodeId = opcua.makeNodeId;
var ObjectTypeIds = opcua.ObjectTypeIds;
function getAllEventTypes(session,callback)
{
var baseNodeId = makeNodeId(ObjectTypeIds.BaseEventType);
var q = new async.queue(function(task,callback) {
_getAllEventTypes(task.nodeId,task.tree,function(err){
if(err){return callback(err);}
callback(null,result);
});
});
function _getAllEventTypes(baseNodeId,tree,callback) {
//xx console.log(" exploring elements,",element.nodeId.toString());
var browseDesc1 = {
nodeId: baseNodeId,
referenceTypeId: opcua.resolveNodeId("HasSubtype"),
browseDirection: opcua.browse_service.BrowseDirection.Forward,
includeSubtypes: true,
nodeClassMask: opcua.browse_service.NodeClassMask.ObjectType, // Objects
resultMask: 63
};
var nodesToBrowse = [browseDesc1];
session.browse(nodesToBrowse,function(err,results){
// to do continuation points
results[0].references.forEach(function(reference) {
var subtree = { nodeId: reference.nodeId.toString() };
tree[reference.browseName.toString()] = subtree;
q.push({nodeId: reference.nodeId, tree: subtree});
});
callback();
});
}
var result ={};
q.push({nodeId: baseNodeId,tree: result});
q.drain = function( ) {
callback(null,result);
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment