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 }