public override void UnregisterApplication( NodeId applicationId, out byte[] certificate, out byte[] httpsCertificate) { certificate = null; httpsCertificate = null; Guid id = GetNodeIdGuid(applicationId); List <byte[]> certificates = new List <byte[]>(); lock (Lock) { var application = (from ii in Applications where ii.ApplicationId == id select ii).SingleOrDefault(); if (application == null) { throw new ArgumentException("A record with the specified application id does not exist.", nameof(applicationId)); } certificate = application.Certificate; httpsCertificate = application.HttpsCertificate; var certificateRequests = from ii in CertificateRequests where ii.ApplicationId == id select ii; foreach (var entry in new List <CertificateRequest>(certificateRequests)) { CertificateRequests.Remove(entry); } var applicationNames = from ii in ApplicationNames where ii.ApplicationId == id select ii; foreach (var entry in new List <ApplicationName>(applicationNames)) { ApplicationNames.Remove(entry); } var serverEndpoints = from ii in ServerEndpoints where ii.ApplicationId == id select ii; foreach (var entry in new List <ServerEndpoint>(serverEndpoints)) { ServerEndpoints.Remove(entry); } Applications.Remove(application); SaveChanges(); } }
public override NodeId RegisterApplication( ApplicationRecordDataType application ) { NodeId appNodeId = base.RegisterApplication(application); if (NodeId.IsNull(appNodeId)) { appNodeId = new NodeId(Guid.NewGuid(), NamespaceIndex); } Guid applicationId = GetNodeIdGuid(appNodeId); string capabilities = base.ServerCapabilities(application); lock (Lock) { Application record = null; if (applicationId != Guid.Empty) { var results = from ii in Applications where ii.ApplicationId == applicationId select ii; record = results.SingleOrDefault(); if (record != null) { var endpoints = (from ii in ServerEndpoints where ii.ApplicationId == record.ApplicationId select ii).ToList <ServerEndpoint>(); foreach (var endpoint in endpoints) { ServerEndpoints.Remove(endpoint); } var names = (from ii in ApplicationNames where ii.ApplicationId == record.ApplicationId select ii).ToList <ApplicationName>(); foreach (var name in names) { ApplicationNames.Remove(name); } SaveChanges(); } } bool isNew = false; if (record == null) { applicationId = Guid.NewGuid(); record = new Application() { ApplicationId = applicationId, ID = 0 }; isNew = true; } record.ApplicationUri = application.ApplicationUri; record.ApplicationName = application.ApplicationNames[0].Text; record.ApplicationType = (int)application.ApplicationType; record.ProductUri = application.ProductUri; record.ServerCapabilities = capabilities; if (isNew) { Applications.Add(record); } SaveChanges(); if (application.DiscoveryUrls != null) { foreach (var discoveryUrl in application.DiscoveryUrls) { ServerEndpoints.Add( new ServerEndpoint() { ApplicationId = record.ApplicationId, DiscoveryUrl = discoveryUrl }); } } if (application.ApplicationNames != null && application.ApplicationNames.Count > 0) { foreach (var applicationName in application.ApplicationNames) { ApplicationNames.Add(new ApplicationName() { ApplicationId = record.ApplicationId, Locale = applicationName.Locale, Text = applicationName.Text }); } } SaveChanges(); return(new NodeId(applicationId, NamespaceIndex)); } }