STM32F769IDiscovery  1.00
uDANTE Audio Networking with STM32F7 DISCO board
MibResolver.cs
Go to the documentation of this file.
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.IO;
6 using System.Reflection;
7 
8 namespace Lextm.SharpSnmpLib.Mib
9 {
10  public interface IMibResolver
11  {
12  IModule Resolve(string moduleName);
13  }
14 
16  {
17  private string _path;
18  private bool _recursive;
19 
20  public FileSystemMibResolver(string path, bool recursive)
21  {
22  _path = path;
23  _recursive = recursive;
24  }
25 
26  #region IMibResolver Member
27 
28  public IModule Resolve(string moduleName)
29  {
30  if (Directory.Exists(_path))
31  {
32  string[] matchedFiles = Directory.GetFiles(
33  _path,
34  "*",
35  (_recursive) ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly);
36 
37  if ((matchedFiles != null) && (matchedFiles.Length >= 1))
38  {
39  foreach (string matchedFile in matchedFiles)
40  {
41  if (Path.GetFileNameWithoutExtension(matchedFile.ToLowerInvariant()) == moduleName.ToLowerInvariant())
42  {
43  try
44  {
45  MibDocument md = new MibDocument (matchedFile);
46  if (md.Modules.Count > 0)
47  {
48  return md.Modules [0];
49  }
50  } catch
51  {
52  }
53  }
54  }
55  }
56  }
57 
58  return null;
59  }
60 
61  #endregion
62 
63  }
64 
65  // earlier code for search of versioned MIBs:
66  //
67  //private const string Pattern = "-V[0-9]+$";
68  //public static bool AllDependentsAvailable(MibModule module, IDictionary<string, MibModule> modules)
69  //{
70  // foreach (string dependent in module.Dependents)
71  // {
72  // if (!DependentFound(dependent, modules))
73  // {
74  // return false;
75  // }
76  // }
77 
78  // return true;
79  //}
80 
81  //private static bool DependentFound(string dependent, IDictionary<string, MibModule> modules)
82  //{
83  // if (!Regex.IsMatch(dependent, Pattern))
84  // {
85  // return modules.ContainsKey(dependent);
86  // }
87 
88  // if (modules.ContainsKey(dependent))
89  // {
90  // return true;
91  // }
92 
93  // string dependentNonVersion = Regex.Replace(dependent, Pattern, string.Empty);
94  // return modules.ContainsKey(dependentNonVersion);
95  //}
96 
97 }
MIB Module interface.
Definition: IModule.cs:36
IList< IModule > Modules
MibModule containing in this document.
Definition: MibDocument.cs:50
FileSystemMibResolver(string path, bool recursive)
Definition: MibResolver.cs:20
IModule Resolve(string moduleName)
Definition: MibResolver.cs:28