1 // 2 // Copyright (c) 2013-2017 Carsten Sonne Larsen <cs@innolan.net> 3 // 4 // Permission is hereby granted, free of charge, to any person obtaining a copy 5 // of this software and associated documentation files (the "Software"), to deal 6 // in the Software without restriction, including without limitation the rights 7 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 // copies of the Software, and to permit persons to whom the Software is 9 // furnished to do so, subject to the following conditions: 10 // 11 // The above copyright notice and this permission notice shall be included in 12 // all copies or substantial portions of the Software. 13 // 14 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 // THE SOFTWARE. 21 22 using Ntp.Analyzer.Data.Sql; 23 using Ntp.Common.Log; 24 25 namespace Ntp.Analyzer.Data 26 { 27 /// <summary> 28 /// Singleton facade class used to access memory persistent data. 29 /// </summary> 30 public sealed class DataFace 31 { 32 /// <summary> 33 /// Initializes a new instance of the <see cref="Ntp.Analyzer.Data.DataFace" /> class. 34 /// </summary> DataFace(LogBase log)35 private DataFace(LogBase log) 36 { 37 this.log = log; 38 Hosts = new HostDatabaseMapper(log); 39 Servers = new TimeServerDatabaseMapper(log); 40 Peers = new PeerDatabaseMapper(Servers, log); 41 PeerActivities = new PeerActivityDatabaseMapper(Hosts, Peers, log); 42 ReadingBulks = new ReadingBulkMapper(log); 43 } 44 45 private readonly LogBase log; 46 47 /// <summary> 48 /// Gets the Singleton instance. 49 /// </summary> 50 /// <value>The instance.</value> 51 public static DataFace Instance { get; private set; } 52 53 /// <summary> 54 /// Gets the host mapper. 55 /// </summary> 56 /// <value>The hosts.</value> 57 public HostDatabaseMapper Hosts { get; } 58 59 /// <summary> 60 /// Gets the peer mapper. 61 /// </summary> 62 /// <value>The peers.</value> 63 public PeerDatabaseMapper Peers { get; } 64 65 /// <summary> 66 /// Gets the time server mapper. 67 /// </summary> 68 /// <value>The servers.</value> 69 public TimeServerDatabaseMapper Servers { get; } 70 71 /// <summary> 72 /// Gets the host reading mapper. 73 /// </summary> 74 /// <value>The host readings.</value> 75 public HostReadingDatabaseMapper HostReadings => new HostReadingDatabaseMapper(Hosts, Peers, log); 76 77 /// <summary> 78 /// Gets the host IO reading mapper. 79 /// </summary> 80 /// <value>The host IO reading mapper.</value> 81 public HostIoReadingDatabaseMapper HostIoReadings => new HostIoReadingDatabaseMapper(Hosts, log); 82 83 /// <summary> 84 /// Gets the peer reading mapper. 85 /// </summary> 86 /// <value>The peer readings.</value> 87 public PeerReadingDatabaseMapper PeerReadings => new PeerReadingDatabaseMapper(Hosts, Peers, log); 88 89 /// <summary> 90 /// Gets the host drift reading mapper. 91 /// </summary> 92 /// <value>The host drift reading mapper.</value> 93 public DriftReadingDatabaseMapper DriftReadings => new DriftReadingDatabaseMapper(Hosts, log); 94 95 /// <summary> 96 /// Gets the peer activity mapper. 97 /// </summary> 98 /// <value>The peer activity mapper.</value> 99 public PeerActivityDatabaseMapper PeerActivities { get; } 100 101 /// <summary> 102 /// Gets the reading bulk mapper. 103 /// </summary> 104 /// <value>The reading bulk mapper.</value> 105 public ReadingBulkMapper ReadingBulks { get; } 106 107 /// <summary> 108 /// Gets the association entry mapper. 109 /// </summary> 110 /// <value>The the association entry mapper.</value> 111 public AssociationEntryMapper AssociationEntries => new AssociationEntryMapper(log); 112 Initialize(LogBase log)113 public static void Initialize(LogBase log) 114 { 115 Instance = new DataFace(log); 116 } 117 } 118 }