Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
Asn1Import.cs
1using System;
2using System.Collections.Generic;
3using System.IO;
4using System.Text;
5using System.Threading.Tasks;
7
9{
13 public class Asn1Import : Asn1Node
14 {
15 private readonly string[] identifiers;
16 private readonly string module;
17 private readonly Asn1Document document;
18 private Asn1Document importedDocument;
19
26 public Asn1Import(string[] Identifiers, string Module, Asn1Document Document)
27 {
28 this.identifiers = Identifiers;
29 this.module = Module;
30 this.document = Document;
31 this.importedDocument = null;
32 }
33
37 public string[] Identifiers => this.identifiers;
38
42 public string Module => this.module;
43
48 public async Task<Asn1Document> LoadDocument()
49 {
50 if (!(this.importedDocument is null))
51 return this.importedDocument;
52
53 string Folder = Path.GetDirectoryName(this.document.Location);
54 string Extension = Path.GetExtension(this.document.Location);
55 string FileName = Path.Combine(Folder, this.module) + Extension;
56
57 if (!File.Exists(FileName))
58 {
59 FileName = null;
60
61 foreach (string ImportFolder in this.document.ImportFolders)
62 {
63 FileName = Path.Combine(ImportFolder, this.module) + Extension;
64 if (File.Exists(FileName))
65 break;
66 else
67 FileName = null;
68 }
69
70 if (FileName is null)
71 throw new FileNotFoundException("Unable to find import file for module " + this.module);
72 }
73
74 this.importedDocument = await Asn1Document.FromFile(FileName, this.document.ImportFolders);
75
76 return this.importedDocument;
77 }
78
79 }
80}
Represents an ASN.1 document.
Definition: Asn1Document.cs:21
static async Task< Asn1Document > FromFile(string FileName, string[] ImportFolders)
Read from file.
Definition: Asn1Document.cs:85
Represents one import instruction.
Definition: Asn1Import.cs:14
string[] Identifiers
Identifiers to import.
Definition: Asn1Import.cs:37
Asn1Import(string[] Identifiers, string Module, Asn1Document Document)
Represents one import instruction.
Definition: Asn1Import.cs:26
async Task< Asn1Document > LoadDocument()
Loads the ASN.1 document to import.
Definition: Asn1Import.cs:48
string Module
Module reference.
Definition: Asn1Import.cs:42
Base class for all ASN.1 nodes.
Definition: Asn1Node.cs:38