public DemoApplication() { LoadCertificateAndPrivateKey(); uaAppDesc = new ApplicationDescription( "url:qs:DemoApplication", "http://quantensystems.com/", new LocalizedText("en-US", "QuantenSystems demo server"), ApplicationType.Server, null, null, null); ItemsRoot = new NodeObject(new NodeId(2, 0), new QualifiedName("Items"), new LocalizedText("Items"), new LocalizedText("Items"), 0, 0, 0); // Objects organizes Items AddressSpaceTable[new NodeId(UAConst.ObjectsFolder)].References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), new NodeId(2, 0), false)); ItemsRoot.References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), new NodeId(UAConst.ObjectsFolder), true)); AddressSpaceTable.TryAdd(ItemsRoot.Id, ItemsRoot); TrendNodes = new NodeVariable[1000]; var nodeTypeFloat = new NodeId(0, 10); for (int i = 0; i < TrendNodes.Length; i++) { var id = string.Format("Trend {0}", (1 + i).ToString("D6")); TrendNodes[i] = new NodeVariable(new NodeId(2, (uint)(1 + i)), new QualifiedName(id), new LocalizedText(id), new LocalizedText(id), 0, 0, AccessLevel.CurrentRead | AccessLevel.HistoryRead, AccessLevel.CurrentRead | AccessLevel.HistoryRead, 0, true, nodeTypeFloat); ItemsRoot.References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), TrendNodes[i].Id, false)); TrendNodes[i].References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), ItemsRoot.Id, true)); AddressSpaceTable.TryAdd(TrendNodes[i].Id, TrendNodes[i]); } }
protected override void OnMonitorAdded(NodeId id) { if (id.NamespaceIndex == 2 && AddressSpaceTable.TryGetValue(id, out var node)) { Console.WriteLine("OnMonitorAdded {0}", id); var dv = new DataValue((float)(rowCount + 0.1 * rnd.NextDouble()), StatusCode.Good, DateTime.Now); MonitorNotifyDataChange(node.Id, dv); } }
protected override DataValue HandleReadRequestInternal(NodeId id) { Node node = null; if (id.NamespaceIndex == 2 && AddressSpaceTable.TryGetValue(id, out node)) { return new DataValue(3.14159265, StatusCode.Good, DateTime.Now); } return base.HandleReadRequestInternal(id); }
public void AddDatapoint(NodeId nodeId, float value) { var node = new NodeVariable(nodeId, new QualifiedName(nodeId.StringIdentifier), new LocalizedText(nodeId.StringIdentifier), new LocalizedText(nodeId.StringIdentifier), 0, 0, AccessLevel.CurrentRead, AccessLevel.CurrentRead, 0, false, new NodeId(0, 10)); _itemsRoot.References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), node.Id, false)); node.References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), _itemsRoot.Id, true)); AddressSpaceTable.TryAdd(node.Id, node); _nodes.Add(nodeId, value); }
public ServerApplication(AppSettings settings, SecurityProvider securityProvider) { _settings = settings; _securityProvider = securityProvider; _securityProvider.LoadCertificateAndPrivateKey(); _appDescription = new ApplicationDescription(_settings.ApplicationUri, _settings.ProductUri, new LocalizedText(_settings.Locale, _settings.ApplicationName), ApplicationType.Server, null, null, null); _itemsRoot = new NodeObject(new NodeId(2, 0), new QualifiedName(_settings.RootItemName), new LocalizedText(_settings.RootItemName), new LocalizedText(_settings.RootItemName), 0, 0, 0); AddressSpaceTable[new NodeId(UAConst.ObjectsFolder)].References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), new NodeId(2, 0), false)); _itemsRoot.References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), new NodeId(UAConst.ObjectsFolder), true)); AddressSpaceTable.TryAdd(_itemsRoot.Id, _itemsRoot); }
public DemoApplication() { //LoadCertificateAndPrivatekeyFromFile(); LoadCertficateAndPrivateKeyFromCertStore("1.3.6.1.5.5.7.3.1", "CN=OLPDO-CA, DC=olplastik, DC=de"); if (this.appCertificate == null) //Valid certificate could not be found... { throw (new OperationCanceledException("Unable to load valid certificate from certificates store. Aborting.")); //Raise exception which will cause the program to abort } else { this.printCertInfo(); } uaAppDesc = new ApplicationDescription( "url:qs:DemoApplication", "http://quantensystems.com/", new LocalizedText("en-US", "QuantenSystems demo server"), ApplicationType.Server, null, null, null); ItemsRoot = new NodeObject(new NodeId(2, 0), new QualifiedName("Items"), new LocalizedText("Items"), new LocalizedText("Items"), 0, 0, 0); // Objects organizes Items AddressSpaceTable[new NodeId(UAConst.ObjectsFolder)].References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), new NodeId(2, 0), false)); ItemsRoot.References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), new NodeId(UAConst.ObjectsFolder), true)); AddressSpaceTable.TryAdd(ItemsRoot.Id, ItemsRoot); TrendNodes = new NodeVariable[1000]; var nodeTypeFloat = new NodeId(0, 10); for (int i = 0; i < TrendNodes.Length; i++) { var id = string.Format("Trend {0}", (1 + i).ToString("D6")); TrendNodes[i] = new NodeVariable(new NodeId(2, (uint)(1 + i)), new QualifiedName(id), new LocalizedText(id), new LocalizedText(id), 0, 0, AccessLevel.CurrentRead | AccessLevel.HistoryRead, AccessLevel.CurrentRead | AccessLevel.HistoryRead, 0, true, nodeTypeFloat); ItemsRoot.References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), TrendNodes[i].Id, false)); TrendNodes[i].References.Add(new ReferenceNode(new NodeId(UAConst.Organizes), ItemsRoot.Id, true)); AddressSpaceTable.TryAdd(TrendNodes[i].Id, TrendNodes[i]); } }