History

Merge branch 'master' of https://github.com/GridProtectionAlliance/gsf.git

Billy Ernest committed 9 years ago

Commit 4e73d822 parents d6569e7 a1a3557112 files · +794 −351Browse files

Unified · Split

112 files
  1. Build/Scripts/GridSolutionsFramework.version +1 −1
  2. Source/Applications/DataPublisherTest/Properties/AssemblyInfo.cs +3 −3
  3. Source/Applications/DataSubscriberTest/Properties/AssemblyInfo.cs +3 −3
  4. Source/Applications/LibraryTester/Properties/AssemblyInfo.cs +4 −4
  5. Source/Applications/TsfManager/Properties/AssemblyInfo.cs +4 −4
  6. Source/Applications/Wave Demo Apps/UpdateWAVMetaData/Properties/AssemblyInfo.cs +4 −4
  7. Source/Applications/Wave Demo Apps/WavSubscriptionDemo/Properties/AssemblyInfo.cs +4 −4
  8. Source/Documentation/GrafanaFunctions.md +3 −3
  9. Source/Extensions/GPAVSExtension/My Project/AssemblyInfo.vb +3 −3
  10. Source/Libraries/Adapters/AdoAdapters/Properties/AssemblyInfo.cs +4 −4
  11. Source/Libraries/Adapters/ArchivistAdapters/Properties/AssemblyInfo.cs +4 −4
  12. Source/Libraries/Adapters/AudioAdapters/Properties/AssemblyInfo.cs +4 −4
  13. Source/Libraries/Adapters/COMTRADEAdapters/Properties/AssemblyInfo.cs +4 −4
  14. Source/Libraries/Adapters/CsvAdapters/Properties/AssemblyInfo.cs +4 −4
  15. Source/Libraries/Adapters/DataQualityMonitoring/Properties/AssemblyInfo.cs +4 −4
  16. Source/Libraries/Adapters/Dnp3Adapters/Properties/AssemblyInfo.cs +4 −4
  17. Source/Libraries/Adapters/DynamicCalculator/Properties/AssemblyInfo.cs +4 −4
  18. Source/Libraries/Adapters/EpriExport/Properties/AssemblyInfo.cs +4 −4
  19. Source/Libraries/Adapters/FileAdapters/Properties/AssemblyInfo.cs +4 −4
  20. Source/Libraries/Adapters/FtpAdapters/Properties/AssemblyInfo.cs +4 −4
  21. Source/Libraries/Adapters/GrafanaAdapters/GrafanaDataService.cs +1 −1
  22. Source/Libraries/Adapters/GrafanaAdapters/GrafanaDataSourceBase.cs +13 −12
  23. Source/Libraries/Adapters/GrafanaAdapters/Properties/AssemblyInfo.cs +2 −2
  24. Source/Libraries/Adapters/HistorianAdapters/Properties/AssemblyInfo.cs +2 −2
  25. Source/Libraries/Adapters/ICCPExport/Properties/AssemblyInfo.cs +4 −4
  26. Source/Libraries/Adapters/InfluxDBAdapters/Properties/AssemblyInfo.cs +4 −4
  27. Source/Libraries/Adapters/Kafka/Properties/AssemblyInfo.cs +4 −4
  28. Source/Libraries/Adapters/MongoAdapters/Properties/AssemblyInfo.cs +4 −4
  29. Source/Libraries/Adapters/MySqlAdapters/Properties/AssemblyInfo.cs +4 −4
  30. Source/Libraries/Adapters/OneSecondFrequencyAverager/Properties/AssemblyInfo.cs +4 −4
  31. Source/Libraries/Adapters/PIAdapters/Properties/AssemblyInfo.cs +3 −3
  32. Source/Libraries/Adapters/PhasorProtocolAdapters/Properties/AssemblyInfo.cs +4 −4
  33. Source/Libraries/Adapters/PowerCalculations.UI.WPF/Properties/AssemblyInfo.cs +4 −4
  34. Source/Libraries/Adapters/PowerCalculations.UI/Properties/AssemblyInfo.cs +4 −4
  35. Source/Libraries/Adapters/PowerCalculations/Properties/AssemblyInfo.cs +2 −2
  36. Source/Libraries/Adapters/TestingAdapters/Properties/AssemblyInfo.cs +4 −4
  37. Source/Libraries/Adapters/WavInputAdapter/Properties/AssemblyInfo.cs +4 −4
  38. Source/Libraries/GSF.ASN1/Properties/AssemblyInfo.cs +2 −2
  39. Source/Libraries/GSF.COMTRADE/Properties/AssemblyInfo.cs +4 −4
  40. Source/Libraries/GSF.Communication/Properties/AssemblyInfo.cs +2 −2
  41. Source/Libraries/GSF.Core/Properties/AssemblyInfo.cs +2 −2
  42. Source/Libraries/GSF.Core/Range.cs +32 −0
  43. Source/Libraries/GSF.EMAX/Properties/AssemblyInfo.cs +4 −4
  44. Source/Libraries/GSF.Geo/Properties/AssemblyInfo.cs +3 −3
  45. Source/Libraries/GSF.Historian/Files/StateRecordDataPoint.cs +1 −1
  46. Source/Libraries/GSF.Historian/Properties/AssemblyInfo.cs +2 −2
  47. Source/Libraries/GSF.InstallerActions/Properties/AssemblyInfo.cs +4 −4
  48. Source/Libraries/GSF.MMS/Properties/AssemblyInfo.cs +4 −4
  49. Source/Libraries/GSF.Media/Properties/AssemblyInfo.cs +4 −4
  50. Source/Libraries/GSF.Net/Ftp/FtpClient.cs +72 −0
  51. Source/Libraries/GSF.Net/Ftp/FtpControlChannel.cs +143 −1
  52. Source/Libraries/GSF.Net/Ftp/FtpDirectory.cs +1 −1
  53. Source/Libraries/GSF.Net/Ftp/FtpFile.cs +1 −1
  54. Source/Libraries/GSF.Net/Ftp/FtpFileTransferer.cs +4 −3
  55. Source/Libraries/GSF.Net/Ftp/FtpSessionConnected.cs +49 −0
  56. Source/Libraries/GSF.Net/Ftp/FtpSessionDisconnected.cs +60 −0
  57. Source/Libraries/GSF.Net/Ftp/IFtpSessionState.cs +23 −0
  58. Source/Libraries/GSF.Net/Properties/AssemblyInfo.cs +4 −4
  59. Source/Libraries/GSF.PQDIF/Properties/AssemblyInfo.cs +4 −4
  60. Source/Libraries/GSF.PhasorProtocols/Properties/AssemblyInfo.cs +3 −3
  61. Source/Libraries/GSF.PhasorProtocols/UI/Properties/AssemblyInfo.cs +4 −4
  62. Source/Libraries/GSF.PhasorProtocols/UI/WPF/Properties/AssemblyInfo.cs +4 −4
  63. Source/Libraries/GSF.SELEventParser/AnalogSection.cs +8 −4
  64. Source/Libraries/GSF.SELEventParser/CommaSeparatedEventReport.cs +6 −1
  65. Source/Libraries/GSF.SELEventParser/EventFile.cs +6 −1
  66. Source/Libraries/GSF.SELEventParser/EventReport.cs +6 −1
  67. Source/Libraries/GSF.SELEventParser/Properties/AssemblyInfo.cs +3 −3
  68. Source/Libraries/GSF.Security/Properties/AssemblyInfo.cs +2 −2
  69. Source/Libraries/GSF.ServiceBus/Properties/AssemblyInfo.cs +2 −2
  70. Source/Libraries/GSF.ServiceModel/Properties/AssemblyInfo.cs +2 −2
  71. Source/Libraries/GSF.ServiceProcess/Properties/AssemblyInfo.cs +2 −2
  72. Source/Libraries/GSF.TimeSeries/Properties/AssemblyInfo.cs +3 −3
  73. Source/Libraries/GSF.TimeSeries/Transport/DataGapRecoverer.cs +53 −9
  74. Source/Libraries/GSF.TimeSeries/Transport/UI/Properties/AssemblyInfo.cs +4 −4
  75. Source/Libraries/GSF.TimeSeries/Transport/UI/WPF/Properties/AssemblyInfo.cs +4 −4
  76. Source/Libraries/GSF.TimeSeries/UI/Properties/AssemblyInfo.cs +4 −4
  77. Source/Libraries/GSF.TimeSeries/UI/WPF/Properties/AssemblyInfo.cs +4 −4
  78. Source/Libraries/GSF.Unity/Properties/AssemblyInfo.cs +2 −2
  79. Source/Libraries/GSF.Web/Properties/AssemblyInfo.cs +2 −2
  80. Source/Libraries/GSF.Windows/Properties/AssemblyInfo.cs +2 −2
  81. Source/Libraries/Hadoop.Replication/Properties/AssemblyInfo.cs +2 −2
  82. Source/Libraries/SqlClr/GSF.Core.SqlClr/Properties/AssemblyInfo.cs +3 −3
  83. Source/Libraries/Tests/GSF.Communication.Tests/Properties/AssemblyInfo.cs +3 −3
  84. Source/Libraries/Tests/GSF.Core.Tests/Properties/AssemblyInfo.cs +3 −3
  85. Source/Libraries/Tests/GSF.Historian.Tests/Properties/AssemblyInfo.cs +2 −2
  86. Source/Libraries/Tests/GSF.Security.Tests/Properties/AssemblyInfo.cs +3 −3
  87. Source/Libraries/Tests/GSF.ServiceBus.Tests/Properties/AssemblyInfo.cs +3 −3
  88. Source/Libraries/Tests/GSF.ServiceModel.Tests/Properties/AssemblyInfo.cs +3 −3
  89. Source/Libraries/Tests/GSF.ServiceProcess.Tests/Properties/AssemblyInfo.cs +3 −3
  90. Source/Libraries/Tests/GSF.Web.Tests/Properties/AssemblyInfo.cs +3 −3
  91. Source/Libraries/Tests/GSF.Windows.Tests/Properties/AssemblyInfo.cs +3 −3
  92. Source/Tools/COMTRADEConverter/Properties/AssemblyInfo.cs +3 −3
  93. Source/Tools/ConfigCrypter/Properties/AssemblyInfo.cs +2 −2
  94. Source/Tools/ConfigEditor/Properties/AssemblyInfo.cs +2 −2
  95. Source/Tools/ConfigTest/Properties/AssemblyInfo.cs +4 −4
  96. Source/Tools/ConfigurationCacher/Properties/AssemblyInfo.cs +4 −4
  97. Source/Tools/DNP3ConfigGenerator/Properties/AssemblyInfo.cs +4 −4
  98. Source/Tools/DataMigrationUtility/Properties/AssemblyInfo.cs +4 −4
  99. Source/Tools/HistorianPlaybackUtility/Properties/AssemblyInfo.cs +2 −2
  100. Source/Tools/HistorianView/Properties/AssemblyInfo.cs +4 −4
  101. Source/Tools/LogFileViewer/Properties/AssemblyInfo.cs +3 −3
  102. Source/Tools/MonoGenCert/Properties/AssemblyInfo.cs +4 −4
  103. Source/Tools/NoInetFixUtil/Properties/AssemblyInfo.cs +4 −4
  104. Source/Tools/PQDIFDump/Properties/AssemblyInfo.cs +4 −4
  105. Source/Tools/ProtocolTester/Properties/AssemblyInfo.cs +4 −4
  106. Source/Tools/SocketArchive/Properties/AssemblyInfo.cs +4 −4
  107. Source/Tools/StatHistorianReportGenerator/Properties/AssemblyInfo.cs +4 −4
  108. Source/Tools/TCPRebroadcaster/TCPRebroadcaster/Properties/AssemblyInfo.cs +4 −4
  109. Source/Tools/TCPRebroadcaster/TCPRebroadcasterConsole/Properties/AssemblyInfo.cs +4 −4
  110. Source/Tools/UDPRebroadcaster/UDPRebroadcaster/Properties/AssemblyInfo.cs +2 −2
  111. Source/Tools/UDPRebroadcaster/UDPRebroadcasterConsole/Properties/AssemblyInfo.cs +2 −2
  112. Source/Tools/UserInfoTest/Properties/AssemblyInfo.cs +4 −4
Build/Scripts/GridSolutionsFramework.version+1−1
@@ -1 +1 @@
12.1.465.012.2.8.0
Source/Applications/DataPublisherTest/Properties/AssemblyInfo.cs+3−3
@@ -58,6 +58,6 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyInformationalVersion("2.1.465-beta")]63[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Applications/DataSubscriberTest/Properties/AssemblyInfo.cs+3−3
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyInformationalVersion("2.1.465-beta")]63[assembly: AssemblyInformationalVersion("2.2.8-beta")]
64 64
Source/Applications/LibraryTester/Properties/AssemblyInfo.cs+4−4
@@ -30,7 +30,7 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
36[assembly: AssemblyInformationalVersion("2.1.465-beta")]36[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Applications/TsfManager/Properties/AssemblyInfo.cs+4−4
@@ -76,7 +76,7 @@ using System.Windows; · 75 unmodified lines
76//76//
77// You can specify all the values or you can default the Build and Revision Numbers 77// You can specify all the values or you can default the Build and Revision Numbers
78// by using the '*' as shown below:78// by using the '*' as shown below:
79// [assembly: AssemblyVersion("2.1.465.0")]79// [assembly: AssemblyVersion("2.2.8.0")]
80[assembly: AssemblyVersion("2.1.465.0")]80[assembly: AssemblyVersion("2.2.8.0")]
81[assembly: AssemblyFileVersion("2.1.465.0")]81[assembly: AssemblyFileVersion("2.2.8.0")]
82[assembly: AssemblyInformationalVersion("2.1.465-beta")]82[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Applications/Wave Demo Apps/UpdateWAVMetaData/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Applications/Wave Demo Apps/WavSubscriptionDemo/Properties/AssemblyInfo.cs+4−4
@@ -76,7 +76,7 @@ using System.Windows; · 75 unmodified lines
76//76//
77// You can specify all the values or you can default the Build and Revision Numbers 77// You can specify all the values or you can default the Build and Revision Numbers
78// by using the '*' as shown below:78// by using the '*' as shown below:
79// [assembly: AssemblyVersion("2.1.465.0")]79// [assembly: AssemblyVersion("2.2.8.0")]
80[assembly: AssemblyVersion("2.1.465.0")]80[assembly: AssemblyVersion("2.2.8.0")]
81[assembly: AssemblyFileVersion("2.1.465.0")]81[assembly: AssemblyFileVersion("2.2.8.0")]
82[assembly: AssemblyInformationalVersion("2.1.465-beta")]82[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Documentation/GrafanaFunctions.md+3−3
@@ -208,7 +208,7 @@ Second parameter, optional, is a boolean flag representing if time in dataset sh · 207 unmodified lines
208 208
209* Signature: `Top(N|N%, [normalizeTime], expression)`209* Signature: `Top(N|N%, [normalizeTime], expression)`
210* Example: `Top(50%, FILTER ActiveMeasurements WHERE SignalType='FREQ')`210* Example: `Top(50%, FILTER ActiveMeasurements WHERE SignalType='FREQ')`
211* Variants: `Top`211* Variants: `Top`, `Largest`
212* Execution: Immediate in-memory array load212* Execution: Immediate in-memory array load
213 213
214## Bottom214## Bottom
@@ -220,7 +220,7 @@ Second parameter, optional, is a boolean flag representing if time in dataset sh · 5 unmodified lines
220 220
221* Signature: `Bottom(N|N%, [normalizeTime], expression)`221* Signature: `Bottom(N|N%, [normalizeTime], expression)`
222* Example: `Bottom(100, false, FILTER ActiveMeasurements WHERE SignalType='FREQ')`222* Example: `Bottom(100, false, FILTER ActiveMeasurements WHERE SignalType='FREQ')`
223* Variants: `Bottom`, `Bot`223* Variants: `Bottom`, `Bot`, `Smallest`
224* Execution: Immediate in-memory array load224* Execution: Immediate in-memory array load
225 225
226## Random226## Random
@@ -282,7 +282,7 @@ Returns a series of values that represent the time difference, in seconds, betwe · 55 unmodified lines
282 282
283* Signature: `TimeDifference(expression)`283* Signature: `TimeDifference(expression)`
284* Example: `TimeDifference(FILTER ActiveMeasurements WHERE SignalType='FREQ')`284* Example: `TimeDifference(FILTER ActiveMeasurements WHERE SignalType='FREQ')`
285* Variants: `TimeDifference`, `TimeDiff`285* Variants: `TimeDifference`, `TimeDiff`, `Elapsed`
286* Execution: Deferred enumeration286* Execution: Deferred enumeration
287 287
288## Derivative288## Derivative
Source/Extensions/GPAVSExtension/My Project/AssemblyInfo.vb+3−3
@@ -29,6 +29,6 @@ Imports System.Runtime.InteropServices · 28 unmodified lines
29'29'
30' You can specify all the values or you can default the Build and Revision Numbers 30' You can specify all the values or you can default the Build and Revision Numbers
31' by using the '*' as shown below:31' by using the '*' as shown below:
32' [assembly: AssemblyVersion("2.1.465.0")]32' [assembly: AssemblyVersion("2.2.8.0")]
33<Assembly: AssemblyVersion("2.1.465.0")>33<Assembly: AssemblyVersion("2.2.8.0")>
34<Assembly: AssemblyFileVersion("2.1.465.0")>34<Assembly: AssemblyFileVersion("2.2.8.0")>
Source/Libraries/Adapters/AdoAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/ArchivistAdapters/Properties/AssemblyInfo.cs+4−4
@@ -59,7 +59,7 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62// [assembly: AssemblyVersion("2.1.465.0")]62// [assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyVersion("2.1.465.0")]63[assembly: AssemblyVersion("2.2.8.0")]
64[assembly: AssemblyFileVersion("2.1.465.0")]64[assembly: AssemblyFileVersion("2.2.8.0")]
65[assembly: AssemblyInformationalVersion("2.1.465-beta")]65[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/AudioAdapters/Properties/AssemblyInfo.cs+4−4
@@ -30,7 +30,7 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
36[assembly: AssemblyInformationalVersion("2.1.465-beta")]36[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/COMTRADEAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/CsvAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/DataQualityMonitoring/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/Dnp3Adapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/DynamicCalculator/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/EpriExport/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/FileAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/FtpAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/GrafanaAdapters/GrafanaDataService.cs+1−1
@@ -54,7 +54,7 @@ namespace GrafanaAdapters · 53 unmodified lines
54 m_baseTicks = UnixTimeTag.BaseTicks.Value;54 m_baseTicks = UnixTimeTag.BaseTicks.Value;
55 }55 }
56 56
57 protected override IEnumerable<DataSourceValue> QueryDataSourceValues(DateTime startTime, DateTime stopTime, bool decimate, Dictionary<ulong, string> targetMap)57 protected override IEnumerable<DataSourceValue> QueryDataSourceValues(DateTime startTime, DateTime stopTime, string interval, bool decimate, Dictionary<ulong, string> targetMap)
58 {58 {
59 return m_parent.Archive.ReadData(targetMap.Keys.Select(pointID => (int)pointID), startTime, stopTime, false).Select(dataPoint => new DataSourceValue59 return m_parent.Archive.ReadData(targetMap.Keys.Select(pointID => (int)pointID), startTime, stopTime, false).Select(dataPoint => new DataSourceValue
60 {60 {
Source/Libraries/Adapters/GrafanaAdapters/GrafanaDataSourceBase.cs+13−12
@@ -238,7 +238,7 @@ namespace GrafanaAdapters · 237 unmodified lines
238 /// <remarks>238 /// <remarks>
239 /// Signature: <c>Top(N|N%, [normalizeTime], expression)</c><br/>239 /// Signature: <c>Top(N|N%, [normalizeTime], expression)</c><br/>
240 /// Example: <c>Top(50%, FILTER ActiveMeasurements WHERE SignalType='FREQ')</c><br/>240 /// Example: <c>Top(50%, FILTER ActiveMeasurements WHERE SignalType='FREQ')</c><br/>
241 /// Variants: Top<br/>241 /// Variants: Top, Largest<br/>
242 /// Execution: Immediate in-memory array load.242 /// Execution: Immediate in-memory array load.
243 /// </remarks>243 /// </remarks>
244 Top,244 Top,
@@ -251,7 +251,7 @@ namespace GrafanaAdapters · 6 unmodified lines
251 /// <remarks>251 /// <remarks>
252 /// Signature: <c>Bottom(N|N%, [normalizeTime], expression)</c><br/>252 /// Signature: <c>Bottom(N|N%, [normalizeTime], expression)</c><br/>
253 /// Example: <c>Bottom(100, false, FILTER ActiveMeasurements WHERE SignalType='FREQ')</c><br/>253 /// Example: <c>Bottom(100, false, FILTER ActiveMeasurements WHERE SignalType='FREQ')</c><br/>
254 /// Variants: Bottom, Bot<br/>254 /// Variants: Bottom, Bot, Smallest<br/>
255 /// Execution: Immediate in-memory array load.255 /// Execution: Immediate in-memory array load.
256 /// </remarks>256 /// </remarks>
257 Bottom,257 Bottom,
@@ -319,7 +319,7 @@ namespace GrafanaAdapters · 61 unmodified lines
319 /// <remarks>319 /// <remarks>
320 /// Signature: <c>TimeDifference(expression)</c><br/>320 /// Signature: <c>TimeDifference(expression)</c><br/>
321 /// Example: <c>TimeDifference(FILTER ActiveMeasurements WHERE SignalType='FREQ')</c><br/>321 /// Example: <c>TimeDifference(FILTER ActiveMeasurements WHERE SignalType='FREQ')</c><br/>
322 /// Variants: TimeDifference, TimeDiff<br/>322 /// Variants: TimeDifference, TimeDiff, Elapsed<br/>
323 /// Execution: Deferred enumeration.323 /// Execution: Deferred enumeration.
324 /// </remarks>324 /// </remarks>
325 TimeDifference,325 TimeDifference,
@@ -463,7 +463,7 @@ namespace GrafanaAdapters · 137 unmodified lines
463 DateTime stopTime = request.range.to.ParseJsonTimestamp();463 DateTime stopTime = request.range.to.ParseJsonTimestamp();
464 int maxDataPoints = (int)(request.maxDataPoints * 1.05D);464 int maxDataPoints = (int)(request.maxDataPoints * 1.05D);
465 465
466 DataSourceValueGroup[] valueGroups = QueryTargets(request.targets.Select(target => target.target.Trim()), startTime, stopTime, true, cancellationToken).ToArray();466 DataSourceValueGroup[] valueGroups = QueryTargets(request.targets.Select(target => target.target.Trim()), startTime, stopTime, request.interval, true, cancellationToken).ToArray();
467 467
468 // Establish result series sequentially so that order remains consistent between calls468 // Establish result series sequentially so that order remains consistent between calls
469 List<TimeSeriesValues> result = valueGroups.Select(valueGroup => new TimeSeriesValues { target = valueGroup.Target }).ToList();469 List<TimeSeriesValues> result = valueGroups.Select(valueGroup => new TimeSeriesValues { target = valueGroup.Target }).ToList();
@@ -493,12 +493,13 @@ namespace GrafanaAdapters · 23 unmodified lines
493 /// </summary>493 /// </summary>
494 /// <param name="startTime">Start-time for query.</param>494 /// <param name="startTime">Start-time for query.</param>
495 /// <param name="stopTime">Stop-time for query.</param>495 /// <param name="stopTime">Stop-time for query.</param>
496 /// <param name="interval">Interval from Grafana request.</param>
496 /// <param name="decimate">Flag that determines if data should be decimated over provided time range.</param>497 /// <param name="decimate">Flag that determines if data should be decimated over provided time range.</param>
497 /// <param name="targetMap">Set of IDs with associated targets to query.</param>498 /// <param name="targetMap">Set of IDs with associated targets to query.</param>
498 /// <returns>Queried data source data in terms of value and time.</returns>499 /// <returns>Queried data source data in terms of value and time.</returns>
499 protected abstract IEnumerable<DataSourceValue> QueryDataSourceValues(DateTime startTime, DateTime stopTime, bool decimate, Dictionary<ulong, string> targetMap);500 protected abstract IEnumerable<DataSourceValue> QueryDataSourceValues(DateTime startTime, DateTime stopTime, string interval, bool decimate, Dictionary<ulong, string> targetMap);
500 501
501 private IEnumerable<DataSourceValueGroup> QueryTargets(IEnumerable<string> targets, DateTime startTime, DateTime stopTime, bool decimate, CancellationToken cancellationToken)502 private IEnumerable<DataSourceValueGroup> QueryTargets(IEnumerable<string> targets, DateTime startTime, DateTime stopTime, string interval, bool decimate, CancellationToken cancellationToken)
502 {503 {
503 // A single target might look like the following:504 // A single target might look like the following:
504 // PPA:15; STAT:20; SETSUM(COUNT(PPA:8; PPA:9; PPA:10)); FILTER ActiveMeasurements WHERE SignalType IN ('IPHA', 'VPHA'); RANGE(PPA:99; SUM(FILTER ActiveMeasurements WHERE SignalType = 'FREQ'; STAT:12))505 // PPA:15; STAT:20; SETSUM(COUNT(PPA:8; PPA:9; PPA:10)); FILTER ActiveMeasurements WHERE SignalType IN ('IPHA', 'VPHA'); RANGE(PPA:99; SUM(FILTER ActiveMeasurements WHERE SignalType = 'FREQ'; STAT:12))
@@ -539,7 +540,7 @@ namespace GrafanaAdapters · 34 unmodified lines
539 {540 {
540 // Execute series functions541 // Execute series functions
541 foreach (Tuple<SeriesFunction, string, bool> parsedFunction in seriesFunctions.Select(ParseSeriesFunction))542 foreach (Tuple<SeriesFunction, string, bool> parsedFunction in seriesFunctions.Select(ParseSeriesFunction))
542 foreach (DataSourceValueGroup valueGroup in ExecuteSeriesFunction(parsedFunction, startTime, stopTime, decimate, cancellationToken))543 foreach (DataSourceValueGroup valueGroup in ExecuteSeriesFunction(parsedFunction, startTime, stopTime, interval, decimate, cancellationToken))
543 yield return valueGroup;544 yield return valueGroup;
544 545
545 // Use reduced target set that excludes any series functions546 // Use reduced target set that excludes any series functions
@@ -572,7 +573,7 @@ namespace GrafanaAdapters · 26 unmodified lines
572 long readCount = 0;573 long readCount = 0;
573 574
574 // Query underlying data source for each target - to prevent parallel read from data source we enumerate immediately575 // Query underlying data source for each target - to prevent parallel read from data source we enumerate immediately
575 List<DataSourceValue> dataValues = QueryDataSourceValues(startTime, stopTime, decimate, targetMap)576 List<DataSourceValue> dataValues = QueryDataSourceValues(startTime, stopTime, interval, decimate, targetMap)
576 .TakeWhile(dataValue => readCount++ % 10000 != 0 || !cancellationToken.IsCancellationRequested).ToList();577 .TakeWhile(dataValue => readCount++ % 10000 != 0 || !cancellationToken.IsCancellationRequested).ToList();
577 578
578 foreach (KeyValuePair<ulong, string> target in targetMap)579 foreach (KeyValuePair<ulong, string> target in targetMap)
@@ -584,7 +585,7 @@ namespace GrafanaAdapters · 5 unmodified lines
584 }585 }
585 }586 }
586 587
587 private IEnumerable<DataSourceValueGroup> ExecuteSeriesFunction(Tuple<SeriesFunction, string, bool> parsedFunction, DateTime startTime, DateTime stopTime, bool decimate, CancellationToken cancellationToken)588 private IEnumerable<DataSourceValueGroup> ExecuteSeriesFunction(Tuple<SeriesFunction, string, bool> parsedFunction, DateTime startTime, DateTime stopTime, string interval, bool decimate, CancellationToken cancellationToken)
588 {589 {
589 SeriesFunction seriesFunction = parsedFunction.Item1;590 SeriesFunction seriesFunction = parsedFunction.Item1;
590 string expression = parsedFunction.Item2;591 string expression = parsedFunction.Item2;
@@ -660,7 +661,7 @@ namespace GrafanaAdapters · 69 unmodified lines
660 decimate = false;661 decimate = false;
661 662
662 // Query function expression to get series data663 // Query function expression to get series data
663 IEnumerable<DataSourceValueGroup> dataset = QueryTargets(new[] { targetExpression }, startTime, stopTime, decimate, cancellationToken);664 IEnumerable<DataSourceValueGroup> dataset = QueryTargets(new[] { targetExpression }, startTime, stopTime, interval, decimate, cancellationToken);
664 665
665 if (setOperation)666 if (setOperation)
666 {667 {
@@ -756,8 +757,8 @@ namespace GrafanaAdapters · 89 unmodified lines
756 s_standardDeviationSampleExpression = new Regex(string.Format(GetExpression, "(StandardDeviationSample|StdDevSamp)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);757 s_standardDeviationSampleExpression = new Regex(string.Format(GetExpression, "(StandardDeviationSample|StdDevSamp)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);
757 s_medianExpression = new Regex(string.Format(GetExpression, "(Median|Med|Mid)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);758 s_medianExpression = new Regex(string.Format(GetExpression, "(Median|Med|Mid)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);
758 s_modeExpression = new Regex(string.Format(GetExpression, "Mode"), RegexOptions.Compiled | RegexOptions.IgnoreCase);759 s_modeExpression = new Regex(string.Format(GetExpression, "Mode"), RegexOptions.Compiled | RegexOptions.IgnoreCase);
759 s_topExpression = new Regex(string.Format(GetExpression, "Top"), RegexOptions.Compiled | RegexOptions.IgnoreCase);760 s_topExpression = new Regex(string.Format(GetExpression, "(Top|Largest)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);
760 s_bottomExpression = new Regex(string.Format(GetExpression, "(Bottom|Bot)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);761 s_bottomExpression = new Regex(string.Format(GetExpression, "(Bottom|Bot|Smallest)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);
761 s_randomExpression = new Regex(string.Format(GetExpression, "(Random|Rand|Sample)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);762 s_randomExpression = new Regex(string.Format(GetExpression, "(Random|Rand|Sample)"), RegexOptions.Compiled | RegexOptions.IgnoreCase);
762 s_firstExpression = new Regex(string.Format(GetExpression, "First"), RegexOptions.Compiled | RegexOptions.IgnoreCase);763 s_firstExpression = new Regex(string.Format(GetExpression, "First"), RegexOptions.Compiled | RegexOptions.IgnoreCase);
763 s_lastExpression = new Regex(string.Format(GetExpression, "Last"), RegexOptions.Compiled | RegexOptions.IgnoreCase);764 s_lastExpression = new Regex(string.Format(GetExpression, "Last"), RegexOptions.Compiled | RegexOptions.IgnoreCase);
Source/Libraries/Adapters/GrafanaAdapters/Properties/AssemblyInfo.cs+2−2
@@ -26,8 +26,8 @@ using System.Reflection; · 25 unmodified lines
26using System.Runtime.InteropServices;26using System.Runtime.InteropServices;
27 27
28// Assembly identity attributes.28// Assembly identity attributes.
29[assembly: AssemblyVersion("2.1.465.0")]29[assembly: AssemblyVersion("2.2.8.0")]
30[assembly: AssemblyInformationalVersion("2.1.465-beta")]30[assembly: AssemblyInformationalVersion("2.2.8-beta")]
31 31
32// Informational attributes.32// Informational attributes.
33[assembly: AssemblyCompany("Grid Protection Alliance")]33[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/Adapters/HistorianAdapters/Properties/AssemblyInfo.cs+2−2
@@ -26,8 +26,8 @@ using System.Reflection; · 25 unmodified lines
26using System.Runtime.InteropServices;26using System.Runtime.InteropServices;
27 27
28// Assembly identity attributes.28// Assembly identity attributes.
29[assembly: AssemblyVersion("2.1.465.0")]29[assembly: AssemblyVersion("2.2.8.0")]
30[assembly: AssemblyInformationalVersion("2.1.465-beta")]30[assembly: AssemblyInformationalVersion("2.2.8-beta")]
31 31
32// Informational attributes.32// Informational attributes.
33[assembly: AssemblyCompany("Grid Protection Alliance")]33[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/Adapters/ICCPExport/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/InfluxDBAdapters/Properties/AssemblyInfo.cs+4−4
@@ -30,7 +30,7 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
36[assembly: AssemblyInformationalVersion("2.1.465-beta")]36[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/Kafka/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/MongoAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/MySqlAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/OneSecondFrequencyAverager/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/PIAdapters/Properties/AssemblyInfo.cs+3−3
@@ -46,6 +46,6 @@ using System.Runtime.InteropServices; · 45 unmodified lines
46[assembly: Guid("D8064F6E-0B5D-4CBB-884E-75A2E11CA779")]46[assembly: Guid("D8064F6E-0B5D-4CBB-884E-75A2E11CA779")]
47 47
48// Assembly identity attributes.48// Assembly identity attributes.
49[assembly: AssemblyVersion("2.1.465.0")]49[assembly: AssemblyVersion("2.2.8.0")]
50[assembly: AssemblyFileVersion("2.1.465.0")]50[assembly: AssemblyFileVersion("2.2.8.0")]
51[assembly: AssemblyInformationalVersion("2.1.465-beta")]51[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/PhasorProtocolAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/PowerCalculations.UI.WPF/Properties/AssemblyInfo.cs+4−4
@@ -30,7 +30,7 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
36[assembly: AssemblyInformationalVersion("2.1.465-beta")]36[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/PowerCalculations.UI/Properties/AssemblyInfo.cs+4−4
@@ -30,7 +30,7 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
36[assembly: AssemblyInformationalVersion("2.1.465-beta")]36[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/PowerCalculations/Properties/AssemblyInfo.cs+2−2
@@ -26,8 +26,8 @@ using System.Reflection; · 25 unmodified lines
26using System.Runtime.InteropServices;26using System.Runtime.InteropServices;
27 27
28// Assembly identity attributes.28// Assembly identity attributes.
29[assembly: AssemblyVersion("2.1.465.0")]29[assembly: AssemblyVersion("2.2.8.0")]
30[assembly: AssemblyInformationalVersion("2.1.465-beta")]30[assembly: AssemblyInformationalVersion("2.2.8-beta")]
31 31
32// Informational attributes.32// Informational attributes.
33[assembly: AssemblyCompany("Grid Protection Alliance")]33[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/Adapters/TestingAdapters/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Adapters/WavInputAdapter/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.ASN1/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.COMTRADE/Properties/AssemblyInfo.cs+4−4
@@ -57,7 +57,7 @@ using System.Runtime.InteropServices; · 56 unmodified lines
57//57//
58// You can specify all the values or you can default the Build and Revision Numbers 58// You can specify all the values or you can default the Build and Revision Numbers
59// by using the '*' as shown below:59// by using the '*' as shown below:
60// [assembly: AssemblyVersion("2.1.465.0")]60// [assembly: AssemblyVersion("2.2.8.0")]
61[assembly: AssemblyVersion("2.1.465.0")]61[assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyFileVersion("2.1.465.0")]62[assembly: AssemblyFileVersion("2.2.8.0")]
63[assembly: AssemblyInformationalVersion("2.1.465-beta")]63[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.Communication/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.Core/Properties/AssemblyInfo.cs+2−2
@@ -28,10 +28,10 @@ using System.Runtime.CompilerServices; · 27 unmodified lines
28using System.Runtime.InteropServices;28using System.Runtime.InteropServices;
29 29
30// Assembly identity attributes.30// Assembly identity attributes.
31[assembly: AssemblyVersion("2.1.465.0")]31[assembly: AssemblyVersion("2.2.8.0")]
32 32
33[assembly: SuppressMessage("Microsoft.Usage", "CA2243:AttributeStringLiteralsShouldParseCorrectly")]33[assembly: SuppressMessage("Microsoft.Usage", "CA2243:AttributeStringLiteralsShouldParseCorrectly")]
34[assembly: AssemblyInformationalVersion("2.1.465-beta")]34[assembly: AssemblyInformationalVersion("2.2.8-beta")]
35 35
36// Informational attributes.36// Informational attributes.
37[assembly: AssemblyCompany("Grid Protection Alliance")]37[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.Core/Range.cs+32−0
@@ -71,6 +71,38 @@ namespace GSF · 70 unmodified lines
71 71
72 #region [ Methods ]72 #region [ Methods ]
73 73
74 /// <summary>
75 /// Determines whether the range contains the given value.
76 /// </summary>
77 /// <param name="value">The value to be compared with.</param>
78 /// <returns>True if the value exists within the range; false otherwise.</returns>
79 public bool Contains(T value)
80 {
81 return Contains(value, Comparer<T>.Default);
82 }
83
84 /// <summary>
85 /// Determines whether the range contains the given value.
86 /// </summary>
87 /// <param name="value">The value to be compared with.</param>
88 /// <param name="comparer">The comparer used to compare objects of type <typeparamref name="T"/>.</param>
89 /// <returns>True if the value exists within the range; false otherwise.</returns>
90 public bool Contains(T value, IComparer<T> comparer)
91 {
92 return Contains(value, comparer.Compare);
93 }
94
95 /// <summary>
96 /// Determines whether the range contains the given value.
97 /// </summary>
98 /// <param name="value">The value to be compared with.</param>
99 /// <param name="comparison">The comparison used to compare objects of type <typeparamref name="T"/>.</param>
100 /// <returns>True if the value exists within the range; false otherwise.</returns>
101 public bool Contains(T value, Comparison<T> comparison)
102 {
103 return comparison(m_start, value) <= 0 && comparison(value, m_end) <= 0;
104 }
105
74 /// <summary>106 /// <summary>
75 /// Determines whether the range overlaps with the given range.107 /// Determines whether the range overlaps with the given range.
76 /// </summary>108 /// </summary>
Source/Libraries/GSF.EMAX/Properties/AssemblyInfo.cs+4−4
@@ -57,7 +57,7 @@ using System.Runtime.InteropServices; · 56 unmodified lines
57//57//
58// You can specify all the values or you can default the Build and Revision Numbers 58// You can specify all the values or you can default the Build and Revision Numbers
59// by using the '*' as shown below:59// by using the '*' as shown below:
60// [assembly: AssemblyVersion("2.1.465.0")]60// [assembly: AssemblyVersion("2.2.8.0")]
61[assembly: AssemblyVersion("2.1.465.0")]61[assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyFileVersion("2.1.465.0")]62[assembly: AssemblyFileVersion("2.2.8.0")]
63[assembly: AssemblyInformationalVersion("2.1.465-beta")]63[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.Geo/Properties/AssemblyInfo.cs+3−3
@@ -30,6 +30,6 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
Source/Libraries/GSF.Historian/Files/StateRecordDataPoint.cs+1−1
@@ -230,7 +230,7 @@ namespace GSF.Historian.Files · 229 unmodified lines
230 230
231 buffer.ValidateParameters(startIndex, length);231 buffer.ValidateParameters(startIndex, length);
232 232
233 LittleEndian.CopyBytes(Time.Value, buffer, startIndex);233 LittleEndian.CopyBytes((double)Time.Value, buffer, startIndex);
234 LittleEndian.CopyBytes(Flags, buffer, startIndex + 8);234 LittleEndian.CopyBytes(Flags, buffer, startIndex + 8);
235 LittleEndian.CopyBytes(Value, buffer, startIndex + 12);235 LittleEndian.CopyBytes(Value, buffer, startIndex + 12);
236 236
Source/Libraries/GSF.Historian/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.InstallerActions/Properties/AssemblyInfo.cs+4−4
@@ -52,7 +52,7 @@ using System.Runtime.InteropServices; · 51 unmodified lines
52//52//
53// You can specify all the values or you can default the Build and Revision Numbers 53// You can specify all the values or you can default the Build and Revision Numbers
54// by using the '*' as shown below:54// by using the '*' as shown below:
55// [assembly: AssemblyVersion("2.1.465.0")]55// [assembly: AssemblyVersion("2.2.8.0")]
56[assembly: AssemblyVersion("2.1.465.0")]56[assembly: AssemblyVersion("2.2.8.0")]
57[assembly: AssemblyFileVersion("2.1.465.0")]57[assembly: AssemblyFileVersion("2.2.8.0")]
58[assembly: AssemblyInformationalVersion("2.1.465-beta")]58[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.MMS/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.Media/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.Net/Ftp/FtpClient.cs+72−0
@@ -46,6 +46,7 @@ · 45 unmodified lines
46using System;46using System;
47using System.ComponentModel;47using System.ComponentModel;
48using System.Drawing;48using System.Drawing;
49using System.Net;
49 50
50// This FTP library is based on a similar C# library found on "The Code Project" web site originally written by51// This FTP library is based on a similar C# library found on "The Code Project" web site originally written by
51// Alex Kwok (no license specified), then enhanced by Uwe Keim (licensed under The Code Project Open License).52// Alex Kwok (no license specified), then enhanced by Uwe Keim (licensed under The Code Project Open License).
@@ -244,6 +245,77 @@ namespace GSF.Net.Ftp · 192 unmodified lines
244 }245 }
245 }246 }
246 247
248 /// <summary>
249 /// Gets or sets the passive/active mode of the server.
250 /// </summary>
251 [Browsable(true), Category("Configuration"), Description("Specify passive/active mode of FTP server."), DefaultValue(true)]
252 public bool Passive
253 {
254 get
255 {
256 return m_currentState.Passive;
257 }
258 set
259 {
260 m_currentState.Passive = value;
261 }
262 }
263
264 /// <summary>
265 /// Gets or sets the IP address to send with the PORT command.
266 /// </summary>
267 [Browsable(true), Category("Configuration"), Description("Specify IP address to send with PORT command."), DefaultValue(null)]
268 public string ActiveAddress
269 {
270 get
271 {
272 return m_currentState.ActiveAddress.ToString();
273 }
274 set
275 {
276 IPAddress address;
277
278 if (IPAddress.TryParse(value, out address))
279 m_currentState.ActiveAddress = address;
280 else
281 m_currentState.ActiveAddress = null;
282 }
283 }
284
285 /// <summary>
286 /// Gets or sets the minimum value in the range of ports
287 /// used when listening for connections in active mode.
288 /// </summary>
289 [Browsable(true), Category("Configuration"), Description("Specify minimum port in range of active ports."), DefaultValue(0)]
290 public int MinActivePort
291 {
292 get
293 {
294 return m_currentState.MinActivePort;
295 }
296 set
297 {
298 m_currentState.MinActivePort = value;
299 }
300 }
301
302 /// <summary>
303 /// Gets or sets the maximum value in the range of ports
304 /// used when listening for connections in active mode.
305 /// </summary>
306 [Browsable(true), Category("Configuration"), Description("Specify maximum port in range of active ports."), DefaultValue(0)]
307 public int MaxActivePort
308 {
309 get
310 {
311 return m_currentState.MaxActivePort;
312 }
313 set
314 {
315 m_currentState.MaxActivePort = value;
316 }
317 }
318
247 /// <summary>319 /// <summary>
248 /// Gets or sets current FTP session directory.320 /// Gets or sets current FTP session directory.
249 /// </summary>321 /// </summary>
Source/Libraries/GSF.Net/Ftp/FtpControlChannel.cs+143−1
@@ -46,9 +46,12 @@ · 45 unmodified lines
46using System;46using System;
47using System.Collections;47using System.Collections;
48using System.IO;48using System.IO;
49using System.Linq;
50using System.Net;
49using System.Net.Sockets;51using System.Net.Sockets;
50using System.Text;52using System.Text;
51using System.Text.RegularExpressions;53using System.Text.RegularExpressions;
54using System.Threading;
52 55
53namespace GSF.Net.Ftp56namespace GSF.Net.Ftp
54{57{
@@ -89,6 +92,10 @@ namespace GSF.Net.Ftp · 34 unmodified lines
89 private string m_server;92 private string m_server;
90 private int m_port;93 private int m_port;
91 private int m_timeout;94 private int m_timeout;
95 private bool m_passive;
96 private IPAddress m_activeAddress;
97 private Range<int> m_activePortRange;
98 private int m_lastActivePort;
92 private TransferMode m_currentTransferMode;99 private TransferMode m_currentTransferMode;
93 private FtpResponse m_lastResponse;100 private FtpResponse m_lastResponse;
94 private bool m_disposed;101 private bool m_disposed;
@@ -103,6 +110,7 @@ namespace GSF.Net.Ftp · 8 unmodified lines
103 m_server = "localhost";110 m_server = "localhost";
104 m_port = 21;111 m_port = 21;
105 m_timeout = 30000;112 m_timeout = 30000;
113 m_passive = true;
106 m_sessionHost = host;114 m_sessionHost = host;
107 m_currentTransferMode = TransferMode.Unknown;115 m_currentTransferMode = TransferMode.Unknown;
108 }116 }
@@ -158,6 +166,51 @@ namespace GSF.Net.Ftp · 49 unmodified lines
158 }166 }
159 }167 }
160 168
169 internal bool Passive
170 {
171 get
172 {
173 return m_passive;
174 }
175 set
176 {
177 m_passive = value;
178 }
179 }
180
181 internal IPAddress ActiveAddress
182 {
183 get
184 {
185 return m_activeAddress ?? (m_activeAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(addr => addr.AddressFamily == AddressFamily.InterNetwork));
186 }
187 set
188 {
189 m_activeAddress = value;
190 }
191 }
192
193 internal Range<int> DataChannelPortRange
194 {
195 get
196 {
197 return m_activePortRange;
198 }
199 set
200 {
201 if (value.Start <= IPEndPoint.MinPort)
202 throw new ArgumentException($"Minimum port in range must be greater than {IPEndPoint.MinPort}.", nameof(value));
203
204 if (value.End > IPEndPoint.MaxPort)
205 throw new ArgumentException($"Maximum port in range must be less than or equal to {IPEndPoint.MaxPort}.", nameof(value));
206
207 if (value.Start > value.End)
208 throw new ArgumentException("Start port must be less than or equal to end port.");
209
210 m_activePortRange = value;
211 }
212 }
213
161 /// <summary>214 /// <summary>
162 /// Last response from control channel.215 /// Last response from control channel.
163 /// </summary>216 /// </summary>
@@ -400,7 +453,7 @@ namespace GSF.Net.Ftp · 236 unmodified lines
400 try453 try
401 {454 {
402 Type(TransferMode.Ascii);455 Type(TransferMode.Ascii);
403 FtpDataStream dataStream = GetPassiveDataStream();456 FtpDataStream dataStream = GetDataStream();
404 Queue lineQueue = new Queue();457 Queue lineQueue = new Queue();
405 458
406 Command("LIST");459 Command("LIST");
@@ -434,6 +487,80 @@ namespace GSF.Net.Ftp · 27 unmodified lines
434 }487 }
435 }488 }
436 489
490 internal FtpDataStream GetDataStream()
491 {
492 return GetDataStream(TransferDirection.Download);
493 }
494
495 internal FtpDataStream GetDataStream(TransferDirection direction)
496 {
497 return m_passive ? GetPassiveDataStream(direction) : GetActiveDataStream(direction);
498 }
499
500 internal FtpDataStream GetActiveDataStream()
501 {
502 return GetActiveDataStream(TransferDirection.Download);
503 }
504
505 internal FtpDataStream GetActiveDataStream(TransferDirection direction)
506 {
507 IPAddress address = ActiveAddress;
508 byte[] addressBytes = address.GetAddressBytes();
509
510 int firstPort = GetActivePort();
511 int port = firstPort;
512
513 while (true)
514 {
515 try
516 {
517 TcpListener listener = new TcpListener(address, port);
518 TcpClient client;
519
520 listener.Start();
521
522 try
523 {
524 port = (listener.LocalEndpoint as IPEndPoint)?.Port ?? 0;
525 Command($"PORT {addressBytes[0]},{addressBytes[1]},{addressBytes[2]},{addressBytes[3]},{port / 256},{port % 256}");
526
527 for (int i = 0; !listener.Pending(); i++)
528 {
529 if (i * 200 >= m_timeout)
530 throw new TimeoutException("Timeout expired while waiting for connection on active FTP data channel.");
531
532 Thread.Sleep(200);
533 }
534
535 client = listener.AcceptTcpClient();
536
537 if (direction == TransferDirection.Download)
538 return new FtpInputDataStream(this, client);
539 else
540 return new FtpOutputDataStream(this, client);
541 }
542 finally
543 {
544 listener.Stop();
545 }
546 }
547 catch (IOException ie)
548 {
549 throw new Exception("Failed to open active port (" + port + ") data connection due to IO exception: " + ie.Message + ".", ie);
550 }
551 catch (SocketException se)
552 {
553 if (se.SocketErrorCode != SocketError.AddressAlreadyInUse)
554 throw new Exception("Failed to open active port (" + port + ") data connection due to socket exception: " + se.Message + ".", se);
555 }
556
557 port = GetActivePort();
558
559 if (port == firstPort)
560 throw new Exception($"All ports in active port range ({m_activePortRange.Start}-{m_activePortRange.End}) are already in use.");
561 }
562 }
563
437 internal FtpDataStream GetPassiveDataStream()564 internal FtpDataStream GetPassiveDataStream()
438 {565 {
439 return GetPassiveDataStream(TransferDirection.Download);566 return GetPassiveDataStream(TransferDirection.Download);
@@ -464,6 +591,21 @@ namespace GSF.Net.Ftp · 24 unmodified lines
464 }591 }
465 }592 }
466 593
594 private int GetActivePort()
595 {
596 if ((object)m_activePortRange == null)
597 return 0;
598
599 if (m_lastActivePort == 0)
600 m_lastActivePort = GSF.Security.Cryptography.Random.Int32Between(m_activePortRange.Start, m_activePortRange.End);
601 else if (m_lastActivePort == m_activePortRange.End)
602 m_lastActivePort = m_activePortRange.Start;
603 else
604 m_lastActivePort++;
605
606 return m_lastActivePort;
607 }
608
467 private int GetPassivePort()609 private int GetPassivePort()
468 {610 {
469 Command("PASV");611 Command("PASV");
Source/Libraries/GSF.Net/Ftp/FtpDirectory.cs+1−1
@@ -550,7 +550,7 @@ namespace GSF.Net.Ftp · 549 unmodified lines
550 {550 {
551 InitHashtable();551 InitHashtable();
552 552
553 FtpDataStream stream = m_session.ControlChannel.GetPassiveDataStream(TransferDirection.Upload);553 FtpDataStream stream = m_session.ControlChannel.GetDataStream(TransferDirection.Upload);
554 554
555 try555 try
556 {556 {
Source/Libraries/GSF.Net/Ftp/FtpFile.cs+1−1
@@ -238,7 +238,7 @@ namespace GSF.Net.Ftp · 237 unmodified lines
238 if (offset != 0)238 if (offset != 0)
239 Session.ControlChannel.REST(offset);239 Session.ControlChannel.REST(offset);
240 240
241 FtpDataStream stream = Session.ControlChannel.GetPassiveDataStream(dir);241 FtpDataStream stream = Session.ControlChannel.GetDataStream(dir);
242 242
243 try243 try
244 {244 {
Source/Libraries/GSF.Net/Ftp/FtpFileTransferer.cs+4−3
@@ -207,13 +207,14 @@ namespace GSF.Net.Ftp · 206 unmodified lines
207 207
208 m_session.Host.OnBeginFileTransfer(m_localFile, m_remoteFile, m_transferDirection);208 m_session.Host.OnBeginFileTransfer(m_localFile, m_remoteFile, m_transferDirection);
209 209
210 remoteStream = m_session.ControlChannel.GetDataStream(m_transferDirection);
211 m_ftpFileCommandRoutine(m_remoteFile);
212
210 if (m_transferDirection == TransferDirection.Download)213 if (m_transferDirection == TransferDirection.Download)
211 localStream = new FileStream(m_localFile, FileMode.OpenOrCreate);214 localStream = new FileStream(m_localFile, FileMode.Create);
212 else215 else
213 localStream = new FileStream(m_localFile, FileMode.Open, FileAccess.Read);216 localStream = new FileStream(m_localFile, FileMode.Open, FileAccess.Read);
214 remoteStream = m_session.ControlChannel.GetPassiveDataStream(m_transferDirection);
215 217
216 m_ftpFileCommandRoutine(m_remoteFile);
217 m_streamCopyRoutine(remoteStream, localStream);218 m_streamCopyRoutine(remoteStream, localStream);
218 219
219 // Dispose remote stream before testing file transfer result to ensure220 // Dispose remote stream before testing file transfer result to ensure
Source/Libraries/GSF.Net/Ftp/FtpSessionConnected.cs+49−0
@@ -42,6 +42,7 @@ · 41 unmodified lines
42#endregion42#endregion
43 43
44using System;44using System;
45using System.Net;
45using System.Threading;46using System.Threading;
46 47
47namespace GSF.Net.Ftp48namespace GSF.Net.Ftp
@@ -119,6 +120,54 @@ namespace GSF.Net.Ftp · 71 unmodified lines
119 }120 }
120 }121 }
121 122
123 public bool Passive
124 {
125 get
126 {
127 return m_ctrlChannel.Passive;
128 }
129 set
130 {
131 throw new InvalidOperationException();
132 }
133 }
134
135 public IPAddress ActiveAddress
136 {
137 get
138 {
139 return m_ctrlChannel.ActiveAddress;
140 }
141 set
142 {
143 throw new InvalidOperationException();
144 }
145 }
146
147 public int MinActivePort
148 {
149 get
150 {
151 return m_ctrlChannel.DataChannelPortRange.Start;
152 }
153 set
154 {
155 throw new InvalidOperationException();
156 }
157 }
158
159 public int MaxActivePort
160 {
161 get
162 {
163 return m_ctrlChannel.DataChannelPortRange.End;
164 }
165 set
166 {
167 throw new InvalidOperationException();
168 }
169 }
170
122 public FtpDirectory RootDirectory171 public FtpDirectory RootDirectory
123 {172 {
124 get173 get
Source/Libraries/GSF.Net/Ftp/FtpSessionDisconnected.cs+60−0
@@ -42,6 +42,7 @@ · 41 unmodified lines
42#endregion42#endregion
43 43
44using System;44using System;
45using System.Net;
45 46
46namespace GSF.Net.Ftp47namespace GSF.Net.Ftp
47{48{
@@ -54,6 +55,10 @@ namespace GSF.Net.Ftp · 6 unmodified lines
54 private string m_server;55 private string m_server;
55 private int m_port;56 private int m_port;
56 private int m_timeout;57 private int m_timeout;
58 private bool m_passive;
59 private IPAddress m_activeAddress;
60 private int m_minActivePort;
61 private int m_maxActivePort;
57 private readonly bool m_caseInsensitive;62 private readonly bool m_caseInsensitive;
58 private bool m_disposed;63 private bool m_disposed;
59 64
@@ -63,6 +68,7 @@ namespace GSF.Net.Ftp · 3 unmodified lines
63 68
64 internal FtpSessionDisconnected(FtpClient h, bool caseInsensitive)69 internal FtpSessionDisconnected(FtpClient h, bool caseInsensitive)
65 {70 {
71 m_passive = true;
66 m_timeout = 30000;72 m_timeout = 30000;
67 m_port = 21;73 m_port = 21;
68 m_host = h;74 m_host = h;
@@ -117,6 +123,54 @@ namespace GSF.Net.Ftp · 48 unmodified lines
117 }123 }
118 }124 }
119 125
126 public bool Passive
127 {
128 get
129 {
130 return m_passive;
131 }
132 set
133 {
134 m_passive = value;
135 }
136 }
137
138 public IPAddress ActiveAddress
139 {
140 get
141 {
142 return m_activeAddress;
143 }
144 set
145 {
146 m_activeAddress = value;
147 }
148 }
149
150 public int MinActivePort
151 {
152 get
153 {
154 return m_minActivePort;
155 }
156 set
157 {
158 m_minActivePort = value;
159 }
160 }
161
162 public int MaxActivePort
163 {
164 get
165 {
166 return m_maxActivePort;
167 }
168 set
169 {
170 m_maxActivePort = value;
171 }
172 }
173
120 public FtpDirectory CurrentDirectory174 public FtpDirectory CurrentDirectory
121 {175 {
122 get176 get
@@ -193,6 +247,12 @@ namespace GSF.Net.Ftp · 70 unmodified lines
193 ctrl.Server = m_server;247 ctrl.Server = m_server;
194 ctrl.Port = m_port;248 ctrl.Port = m_port;
195 ctrl.Timeout = m_timeout;249 ctrl.Timeout = m_timeout;
250 ctrl.Passive = m_passive;
251 ctrl.ActiveAddress = m_activeAddress;
252
253 if (m_minActivePort > 0 && m_maxActivePort > 0)
254 ctrl.DataChannelPortRange = new Range<int>(m_minActivePort, m_maxActivePort);
255
196 ctrl.Connect();256 ctrl.Connect();
197 257
198 try258 try
Source/Libraries/GSF.Net/Ftp/IFtpSessionState.cs+23−0
@@ -42,6 +42,7 @@ · 41 unmodified lines
42#endregion42#endregion
43 43
44using System;44using System;
45using System.Net;
45 46
46namespace GSF.Net.Ftp47namespace GSF.Net.Ftp
47{48{
@@ -66,6 +67,28 @@ namespace GSF.Net.Ftp · 18 unmodified lines
66 /// </summary>67 /// </summary>
67 int Timeout { get; set; }68 int Timeout { get; set; }
68 69
70 /// <summary>
71 /// Gets or sets the passive/active mode of the FTP server.
72 /// </summary>
73 bool Passive { get; set; }
74
75 /// <summary>
76 /// Gets or sets the IP address to send with the PORT command.
77 /// </summary>
78 IPAddress ActiveAddress { get; set; }
79
80 /// <summary>
81 /// Gets or sets the minimum value in the range of ports
82 /// used when listening for connections in active mode.
83 /// </summary>
84 int MinActivePort { get; set; }
85
86 /// <summary>
87 /// Gets or sets the maximum value in the range of ports
88 /// used when listening for connections in active mode.
89 /// </summary>
90 int MaxActivePort { get; set; }
91
69 /// <summary>92 /// <summary>
70 /// Gets or sets current FTP session directory.93 /// Gets or sets current FTP session directory.
71 /// </summary>94 /// </summary>
Source/Libraries/GSF.Net/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.PQDIF/Properties/AssemblyInfo.cs+4−4
@@ -57,7 +57,7 @@ using System.Runtime.InteropServices; · 56 unmodified lines
57//57//
58// You can specify all the values or you can default the Build and Revision Numbers 58// You can specify all the values or you can default the Build and Revision Numbers
59// by using the '*' as shown below:59// by using the '*' as shown below:
60// [assembly: AssemblyVersion("2.1.465.0")]60// [assembly: AssemblyVersion("2.2.8.0")]
61[assembly: AssemblyVersion("2.1.465.0")]61[assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyFileVersion("2.1.465.0")]62[assembly: AssemblyFileVersion("2.2.8.0")]
63[assembly: AssemblyInformationalVersion("2.1.465-beta")]63[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.PhasorProtocols/Properties/AssemblyInfo.cs+3−3
@@ -48,8 +48,8 @@ using System.Runtime.InteropServices; · 47 unmodified lines
48[assembly: Guid("6d59b0ed-1991-4f12-a739-2cf8543dd9b2")]48[assembly: Guid("6d59b0ed-1991-4f12-a739-2cf8543dd9b2")]
49 49
50// Assembly identity attributes.50// Assembly identity attributes.
51[assembly: AssemblyVersion("2.1.465.0")]51[assembly: AssemblyVersion("2.2.8.0")]
52[assembly: AssemblyFileVersion("2.1.465.0")]52[assembly: AssemblyFileVersion("2.2.8.0")]
53 53
54[assembly: SuppressMessage("Microsoft.Usage", "CA2243:AttributeStringLiteralsShouldParseCorrectly")]54[assembly: SuppressMessage("Microsoft.Usage", "CA2243:AttributeStringLiteralsShouldParseCorrectly")]
55[assembly: AssemblyInformationalVersion("2.1.465-beta")]55[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.PhasorProtocols/UI/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.PhasorProtocols/UI/WPF/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.SELEventParser/AnalogSection.cs+8−4
@@ -35,7 +35,7 @@ namespace GSF.SELEventParser · 34 unmodified lines
35 // Fields35 // Fields
36 private Channel<DateTime> m_timeChannel;36 private Channel<DateTime> m_timeChannel;
37 private List<Channel<double>> m_analogChannels;37 private List<Channel<double>> m_analogChannels;
38 private List<Channel<bool>> m_digitalChannels; 38 private List<Channel<bool>> m_digitalChannels;
39 39
40 #endregion40 #endregion
41 41
@@ -46,7 +46,6 @@ namespace GSF.SELEventParser · 4 unmodified lines
46 m_timeChannel = new Channel<DateTime>() { Name = "Time" };46 m_timeChannel = new Channel<DateTime>() { Name = "Time" };
47 m_analogChannels = new List<Channel<double>>();47 m_analogChannels = new List<Channel<double>>();
48 m_digitalChannels = new List<Channel<bool>>();48 m_digitalChannels = new List<Channel<bool>>();
49
50 }49 }
51 50
52 #endregion51 #endregion
@@ -89,7 +88,6 @@ namespace GSF.SELEventParser · 36 unmodified lines
89 }88 }
90 }89 }
91 90
92
93 #endregion91 #endregion
94 92
95 #region [ Methods ]93 #region [ Methods ]
@@ -111,6 +109,11 @@ namespace GSF.SELEventParser · 15 unmodified lines
111 // Static Methods109 // Static Methods
112 110
113 public static AnalogSection Parse(DateTime eventTime, string[] lines, ref int index)111 public static AnalogSection Parse(DateTime eventTime, string[] lines, ref int index)
112 {
113 return Parse(eventTime, 60.0D, lines, ref index);
114 }
115
116 public static AnalogSection Parse(DateTime eventTime, double systemFrequency, string[] lines, ref int index)
114 {117 {
115 const string CycleHeader = @"^\[\d+\]$";118 const string CycleHeader = @"^\[\d+\]$";
116 119
@@ -239,6 +242,7 @@ namespace GSF.SELEventParser · 122 unmodified lines
239 currentLine = currentLine.Remove(analogEndIndex);242 currentLine = currentLine.Remove(analogEndIndex);
240 243
241 analogs = currentLine244 analogs = currentLine
245 .Replace("-", " -")
242 .Split((char[])null, StringSplitOptions.RemoveEmptyEntries)246 .Split((char[])null, StringSplitOptions.RemoveEmptyEntries)
243 .TakeWhile(field => double.TryParse(field, out analog))247 .TakeWhile(field => double.TryParse(field, out analog))
244 .Select(field => analog)248 .Select(field => analog)
@@ -276,7 +280,7 @@ namespace GSF.SELEventParser · 31 unmodified lines
276 280
277 // Determine the time per sample, in ticks281 // Determine the time per sample, in ticks
278 firstCycleCount = analogSection.AnalogChannels.First().Cycles.First().Samples.Count;282 firstCycleCount = analogSection.AnalogChannels.First().Cycles.First().Samples.Count;
279 timePerSample = TimeSpan.TicksPerSecond / (60L * firstCycleCount);283 timePerSample = TimeSpan.TicksPerSecond / (long)(systemFrequency * firstCycleCount);
280 284
281 for (int i = 0; i < sampleCount; i++)285 for (int i = 0; i < sampleCount; i++)
282 {286 {
Source/Libraries/GSF.SELEventParser/CommaSeparatedEventReport.cs+6−1
@@ -287,6 +287,11 @@ namespace GSF.SELEventParser · 286 unmodified lines
287 // Static Methods287 // Static Methods
288 288
289 public static CommaSeparatedEventReport Parse(string[] lines, ref int index)289 public static CommaSeparatedEventReport Parse(string[] lines, ref int index)
290 {
291 return Parse(60.0D, lines, ref index);
292 }
293
294 public static CommaSeparatedEventReport Parse(double systemFrequency, string[] lines, ref int index)
290 {295 {
291 CommaSeparatedEventReport commaSeparatedEventReport = new CommaSeparatedEventReport();296 CommaSeparatedEventReport commaSeparatedEventReport = new CommaSeparatedEventReport();
292 commaSeparatedEventReport.Firmware = new Firmware();297 commaSeparatedEventReport.Firmware = new Firmware();
@@ -370,7 +375,7 @@ namespace GSF.SELEventParser · 77 unmodified lines
370 }375 }
371 376
372 commaSeparatedEventReport.InitialReadingIndex = ++index;377 commaSeparatedEventReport.InitialReadingIndex = ++index;
373 int timeStepTicks = Convert.ToInt32(Math.Round(10000000.0 / commaSeparatedEventReport.AverageFrequency / commaSeparatedEventReport.SamplesPerCycleAnalog));378 int timeStepTicks = Convert.ToInt32(Math.Round(10000000.0 / systemFrequency / commaSeparatedEventReport.SamplesPerCycleAnalog));
374 379
375 while (!lines[index].ToUpper().Contains("SETTINGS"))380 while (!lines[index].ToUpper().Contains("SETTINGS"))
376 {381 {
Source/Libraries/GSF.SELEventParser/EventFile.cs+6−1
@@ -115,6 +115,11 @@ namespace GSF.SELEventParser · 114 unmodified lines
115 // Static Methods115 // Static Methods
116 116
117 public static EventFile Parse(string filename)117 public static EventFile Parse(string filename)
118 {
119 return Parse(filename, 60.0D);
120 }
121
122 public static EventFile Parse(string filename, double systemFrequency)
118 {123 {
119 string[] lineSeparators = { "\r\n", "\n\r", "\r", "\n" };124 string[] lineSeparators = { "\r\n", "\n\r", "\r", "\n" };
120 125
@@ -146,7 +151,7 @@ namespace GSF.SELEventParser · 25 unmodified lines
146 151
147 if (command.ToUpper().Contains("EVE"))152 if (command.ToUpper().Contains("EVE"))
148 {153 {
149 parsedEventReport = EventReport.Parse(lines, ref lineIndex);154 parsedEventReport = EventReport.Parse(systemFrequency, lines, ref lineIndex);
150 parsedEventReport.Command = command;155 parsedEventReport.Command = command;
151 parsedFile.Add(parsedEventReport);156 parsedFile.Add(parsedEventReport);
152 }157 }
Source/Libraries/GSF.SELEventParser/EventReport.cs+6−1
@@ -210,6 +210,11 @@ namespace GSF.SELEventParser · 209 unmodified lines
210 // Static Methods210 // Static Methods
211 211
212 public static EventReport Parse(string[] lines, ref int index)212 public static EventReport Parse(string[] lines, ref int index)
213 {
214 return Parse(60.0D, lines, ref index);
215 }
216
217 public static EventReport Parse(double systemFrequency, string[] lines, ref int index)
213 {218 {
214 EventReport eventReport = new EventReport();219 EventReport eventReport = new EventReport();
215 int firmwareIndex;220 int firmwareIndex;
@@ -233,7 +238,7 @@ namespace GSF.SELEventParser · 17 unmodified lines
233 EventFile.SkipBlanks(lines, ref index);238 EventFile.SkipBlanks(lines, ref index);
234 239
235 // Parse the analog section of the report240 // Parse the analog section of the report
236 eventReport.AnalogSection = AnalogSection.Parse(eventReport.Header.EventTime, lines, ref index);241 eventReport.AnalogSection = AnalogSection.Parse(eventReport.Header.EventTime, systemFrequency, lines, ref index);
237 242
238 if (lines.Length < index)243 if (lines.Length < index)
239 {244 {
Source/Libraries/GSF.SELEventParser/Properties/AssemblyInfo.cs+3−3
@@ -44,6 +44,6 @@ using System.Runtime.InteropServices; · 43 unmodified lines
44[assembly: Guid("ee39b8ec-2b03-46f8-9ea8-25bba8e33032")]44[assembly: Guid("ee39b8ec-2b03-46f8-9ea8-25bba8e33032")]
45 45
46// Assembly identity attributes.46// Assembly identity attributes.
47[assembly: AssemblyVersion("2.1.465.0")]47[assembly: AssemblyVersion("2.2.8.0")]
48[assembly: AssemblyFileVersion("2.1.465.0")]48[assembly: AssemblyFileVersion("2.2.8.0")]
49[assembly: AssemblyInformationalVersion("2.1.465-beta")]49[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.Security/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.ServiceBus/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.ServiceModel/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.ServiceProcess/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.TimeSeries/Properties/AssemblyInfo.cs+3−3
@@ -62,7 +62,7 @@ using System.Runtime.InteropServices; · 61 unmodified lines
62//62//
63// You can specify all the values or you can default the Build and Revision Numbers 63// You can specify all the values or you can default the Build and Revision Numbers
64// by using the '*' as shown below:64// by using the '*' as shown below:
65// [assembly: AssemblyVersion("2.1.465.0")]65// [assembly: AssemblyVersion("2.2.8.0")]
66[assembly: AssemblyVersion("2.1.465.0")]66[assembly: AssemblyVersion("2.2.8.0")]
67[assembly: AssemblyInformationalVersion("2.1.465-beta")]67[assembly: AssemblyInformationalVersion("2.2.8-beta")]
68 68
Source/Libraries/GSF.TimeSeries/Transport/DataGapRecoverer.cs+53−9
@@ -90,6 +90,16 @@ namespace GSF.TimeSeries.Transport · 89 unmodified lines
90 /// </summary>90 /// </summary>
91 public const bool DefaultUseMillisecondResolution = true;91 public const bool DefaultUseMillisecondResolution = true;
92 92
93 /// <summary>
94 /// Default value for <see cref="StartRecoveryBuffer"/>.
95 /// </summary>
96 public const double DefaultStartRecoveryBuffer = -20.0D;
97
98 /// <summary>
99 /// Default value for <see cref="EndRecoveryBuffer"/>.
100 /// </summary>
101 public const double DefaultEndRecoveryBuffer = 10.0D;
102
93 // Events103 // Events
94 104
95 /// <summary>105 /// <summary>
@@ -160,6 +170,8 @@ namespace GSF.TimeSeries.Transport · 64 unmodified lines
160 m_recoveryStartDelay = DefaultRecoveryStartDelay;170 m_recoveryStartDelay = DefaultRecoveryStartDelay;
161 m_minimumRecoverySpan = DefaultMinimumRecoverySpan;171 m_minimumRecoverySpan = DefaultMinimumRecoverySpan;
162 m_maximumRecoverySpan = DefaultMaximumRecoverySpan;172 m_maximumRecoverySpan = DefaultMaximumRecoverySpan;
173 StartRecoveryBuffer = DefaultStartRecoveryBuffer;
174 EndRecoveryBuffer = DefaultEndRecoveryBuffer;
163 175
164 string loggingPath = FilePath.GetDirectoryName(FilePath.GetAbsolutePath(DataSubscriber.DefaultLoggingPath));176 string loggingPath = FilePath.GetDirectoryName(FilePath.GetAbsolutePath(DataSubscriber.DefaultLoggingPath));
165 177
@@ -451,6 +463,24 @@ namespace GSF.TimeSeries.Transport · 285 unmodified lines
451 }463 }
452 }464 }
453 465
466 /// <summary>
467 /// Gets or sets start buffer time, in seconds, to add to start of outage window to ensure all missing data is recovered.
468 /// </summary>
469 public double StartRecoveryBuffer
470 {
471 get;
472 set;
473 }
474
475 /// <summary>
476 /// Gets or sets end buffer time, in seconds, to add to end of outage window to ensure all missing data is recovered.
477 /// </summary>
478 public double EndRecoveryBuffer
479 {
480 get;
481 set;
482 }
483
454 /// <summary>484 /// <summary>
455 /// Gets or sets any additional constraint parameters that will be supplied to adapters in temporal485 /// Gets or sets any additional constraint parameters that will be supplied to adapters in temporal
456 /// subscription used when recovering data for an <see cref="Outage"/>.486 /// subscription used when recovering data for an <see cref="Outage"/>.
@@ -546,6 +576,10 @@ namespace GSF.TimeSeries.Transport · 89 unmodified lines
546 status.AppendLine();576 status.AppendLine();
547 status.AppendFormat("Use millisecond resolution: {0}", UseMillisecondResolution);577 status.AppendFormat("Use millisecond resolution: {0}", UseMillisecondResolution);
548 status.AppendLine();578 status.AppendLine();
579 status.AppendFormat(" Start recovery buffer: {0:N2} seconds", StartRecoveryBuffer);
580 status.AppendLine();
581 status.AppendFormat(" End recovery buffer: {0:N2} seconds", EndRecoveryBuffer);
582 status.AppendLine();
549 status.AppendFormat(" Logging path: {0}", FilePath.TrimFileName(m_loggingPath.ToNonNullNorWhiteSpace(FilePath.GetAbsolutePath("")), 51));583 status.AppendFormat(" Logging path: {0}", FilePath.TrimFileName(m_loggingPath.ToNonNullNorWhiteSpace(FilePath.GetAbsolutePath("")), 51));
550 status.AppendLine();584 status.AppendLine();
551 585
@@ -682,6 +716,12 @@ namespace GSF.TimeSeries.Transport · 130 unmodified lines
682 if (settings.TryGetValue("useMillisecondResolution", out setting))716 if (settings.TryGetValue("useMillisecondResolution", out setting))
683 UseMillisecondResolution = setting.ParseBoolean();717 UseMillisecondResolution = setting.ParseBoolean();
684 718
719 if (settings.TryGetValue("startRecoveryBuffer", out setting) && double.TryParse(setting, out timeInterval))
720 StartRecoveryBuffer = timeInterval;
721
722 if (settings.TryGetValue("endRecoveryBuffer", out setting) && double.TryParse(setting, out timeInterval))
723 EndRecoveryBuffer = timeInterval;
724
685 // Get logging path, if any has been defined725 // Get logging path, if any has been defined
686 if (settings.TryGetValue("loggingPath", out setting))726 if (settings.TryGetValue("loggingPath", out setting))
687 {727 {
@@ -716,7 +756,7 @@ namespace GSF.TimeSeries.Transport · 28 unmodified lines
716 m_dataGapLog.Initialize();756 m_dataGapLog.Initialize();
717 757
718 // Setup data gap processor to process items one at a time, a 5-second minimum period is established between each gap processing758 // Setup data gap processor to process items one at a time, a 5-second minimum period is established between each gap processing
719 m_dataGapLogProcessor = new OutageLogProcessor(m_dataGapLog, ProcessDataGap, CanProcessDataGap, ex => OnProcessException(MessageLevel.Warning, ex), GSF.Common.Max(5000, (int)(m_recoveryStartDelay * SI.Milli)));759 m_dataGapLogProcessor = new OutageLogProcessor(m_dataGapLog, ProcessDataGap, CanProcessDataGap, ex => OnProcessException(MessageLevel.Warning, ex), GSF.Common.Max(5000, (int)(m_recoveryStartDelay * 1000.0D)));
720 }760 }
721 761
722 /// <summary>762 /// <summary>
@@ -745,7 +785,7 @@ namespace GSF.TimeSeries.Transport · 22 unmodified lines
745 if (dataGapSpan >= m_minimumRecoverySpan && dataGapSpan <= m_maximumRecoverySpan)785 if (dataGapSpan >= m_minimumRecoverySpan && dataGapSpan <= m_maximumRecoverySpan)
746 {786 {
747 // Since local clock may float we add some buffer around recovery window787 // Since local clock may float we add some buffer around recovery window
748 m_dataGapLog.Add(new Outage(startTime.AddSeconds(-10.0D), endTime.AddSeconds(10.0D)));788 m_dataGapLog.Add(new Outage(startTime.AddSeconds(StartRecoveryBuffer), endTime.AddSeconds(EndRecoveryBuffer)));
749 return true;789 return true;
750 }790 }
751 791
@@ -794,14 +834,18 @@ namespace GSF.TimeSeries.Transport · 42 unmodified lines
794 /// <returns><c>true</c> if log was flushed successfully; otherwise, <c>false</c> if flush timed out.</returns>834 /// <returns><c>true</c> if log was flushed successfully; otherwise, <c>false</c> if flush timed out.</returns>
795 public bool FlushLog(int timeout = Timeout.Infinite)835 public bool FlushLog(int timeout = Timeout.Infinite)
796 {836 {
797 if (m_disposed)837 try
798 throw new InvalidOperationException("Data gap recoverer has been disposed. Cannot flush log.");838 {
799 839 // Wait for process completion if in progress
800 // Wait for process completion if in progress840 if (!m_disposed && m_dataGapRecoveryCompleted.Wait(timeout))
801 if (m_dataGapRecoveryCompleted.Wait(timeout))841 return m_dataGapLog?.Flush().Wait(timeout) ?? false;
802 return m_dataGapLog?.Flush().Wait(timeout) ?? false;
803 842
804 return false;843 return false;
844 }
845 catch
846 {
847 return false;
848 }
805 }849 }
806 850
807 // Can only start data gap processing when end time of recovery range is beyond recovery start delay851 // Can only start data gap processing when end time of recovery range is beyond recovery start delay
Source/Libraries/GSF.TimeSeries/Transport/UI/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.TimeSeries/Transport/UI/WPF/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.TimeSeries/UI/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.TimeSeries/UI/WPF/Properties/AssemblyInfo.cs+4−4
@@ -76,7 +76,7 @@ using System.Windows; · 75 unmodified lines
76//76//
77// You can specify all the values or you can default the Build and Revision Numbers 77// You can specify all the values or you can default the Build and Revision Numbers
78// by using the '*' as shown below:78// by using the '*' as shown below:
79// [assembly: AssemblyVersion("2.1.465.0")]79// [assembly: AssemblyVersion("2.2.8.0")]
80[assembly: AssemblyVersion("2.1.465.0")]80[assembly: AssemblyVersion("2.2.8.0")]
81[assembly: AssemblyFileVersion("2.1.465.0")]81[assembly: AssemblyFileVersion("2.2.8.0")]
82[assembly: AssemblyInformationalVersion("2.1.465-beta")]82[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/GSF.Unity/Properties/AssemblyInfo.cs+2−2
@@ -4,8 +4,8 @@ using System.Resources; · 3 unmodified lines
4using System.Runtime.InteropServices;4using System.Runtime.InteropServices;
5 5
6// Assembly identity attributes.6// Assembly identity attributes.
7[assembly: AssemblyVersion("2.1.465.0")]7[assembly: AssemblyVersion("2.2.8.0")]
8[assembly: AssemblyInformationalVersion("2.1.465-beta")]8[assembly: AssemblyInformationalVersion("2.2.8-beta")]
9 9
10// Informational attributes.10// Informational attributes.
11[assembly: AssemblyCompany("Grid Protection Alliance")]11[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.Web/Properties/AssemblyInfo.cs+2−2
@@ -27,8 +27,8 @@ using System.Web.UI; · 26 unmodified lines
27using GSF.Web.Hosting;27using GSF.Web.Hosting;
28 28
29// Assembly identity attributes.29// Assembly identity attributes.
30[assembly: AssemblyVersion("2.1.465.0")]30[assembly: AssemblyVersion("2.2.8.0")]
31[assembly: AssemblyInformationalVersion("2.1.465-beta")]31[assembly: AssemblyInformationalVersion("2.2.8-beta")]
32 32
33// Informational attributes.33// Informational attributes.
34[assembly: AssemblyCompany("Grid Protection Alliance")]34[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/GSF.Windows/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/Hadoop.Replication/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/SqlClr/GSF.Core.SqlClr/Properties/AssemblyInfo.cs+3−3
@@ -30,6 +30,6 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
Source/Libraries/Tests/GSF.Communication.Tests/Properties/AssemblyInfo.cs+3−3
@@ -59,6 +59,6 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Tests/GSF.Core.Tests/Properties/AssemblyInfo.cs+3−3
@@ -59,6 +59,6 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Tests/GSF.Historian.Tests/Properties/AssemblyInfo.cs+2−2
@@ -26,8 +26,8 @@ using System.Reflection; · 25 unmodified lines
26using System.Runtime.InteropServices;26using System.Runtime.InteropServices;
27 27
28// Assembly identity attributes.28// Assembly identity attributes.
29[assembly: AssemblyVersion("2.1.465.0")]29[assembly: AssemblyVersion("2.2.8.0")]
30[assembly: AssemblyInformationalVersion("2.1.465-beta")]30[assembly: AssemblyInformationalVersion("2.2.8-beta")]
31 31
32// Informational attributes.32// Informational attributes.
33[assembly: AssemblyCompany("Grid Protection Alliance")]33[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Libraries/Tests/GSF.Security.Tests/Properties/AssemblyInfo.cs+3−3
@@ -59,6 +59,6 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Tests/GSF.ServiceBus.Tests/Properties/AssemblyInfo.cs+3−3
@@ -59,6 +59,6 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Tests/GSF.ServiceModel.Tests/Properties/AssemblyInfo.cs+3−3
@@ -59,6 +59,6 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Tests/GSF.ServiceProcess.Tests/Properties/AssemblyInfo.cs+3−3
@@ -59,6 +59,6 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Tests/GSF.Web.Tests/Properties/AssemblyInfo.cs+3−3
@@ -59,6 +59,6 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Libraries/Tests/GSF.Windows.Tests/Properties/AssemblyInfo.cs+3−3
@@ -59,6 +59,6 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/COMTRADEConverter/Properties/AssemblyInfo.cs+3−3
@@ -50,6 +50,6 @@ using System.Windows; · 49 unmodified lines
50//50//
51// You can specify all the values or you can default the Build and Revision Numbers 51// You can specify all the values or you can default the Build and Revision Numbers
52// by using the '*' as shown below:52// by using the '*' as shown below:
53// [assembly: AssemblyVersion("2.1.465.0")]53// [assembly: AssemblyVersion("2.2.8.0")]
54[assembly: AssemblyVersion("2.1.465.0")]54[assembly: AssemblyVersion("2.2.8.0")]
55[assembly: AssemblyFileVersion("2.1.465.0")]55[assembly: AssemblyFileVersion("2.2.8.0")]
Source/Tools/ConfigCrypter/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Tools/ConfigEditor/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Tools/ConfigTest/Properties/AssemblyInfo.cs+4−4
@@ -30,7 +30,7 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
36[assembly: AssemblyInformationalVersion("2.1.465-beta")]36[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/ConfigurationCacher/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/DNP3ConfigGenerator/Properties/AssemblyInfo.cs+4−4
@@ -30,7 +30,7 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
36[assembly: AssemblyInformationalVersion("2.1.465-beta")]36[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/DataMigrationUtility/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/HistorianPlaybackUtility/Properties/AssemblyInfo.cs+2−2
@@ -26,8 +26,8 @@ using System.Reflection; · 25 unmodified lines
26using System.Runtime.InteropServices;26using System.Runtime.InteropServices;
27 27
28// Assembly identity attributes.28// Assembly identity attributes.
29[assembly: AssemblyVersion("2.1.465.0")]29[assembly: AssemblyVersion("2.2.8.0")]
30[assembly: AssemblyInformationalVersion("2.1.465-beta")]30[assembly: AssemblyInformationalVersion("2.2.8-beta")]
31 31
32// Informational attributes.32// Informational attributes.
33[assembly: AssemblyTitle("HistorianPlaybackUtility")]33[assembly: AssemblyTitle("HistorianPlaybackUtility")]
Source/Tools/HistorianView/Properties/AssemblyInfo.cs+4−4
@@ -75,7 +75,7 @@ using System.Windows; · 74 unmodified lines
75//75//
76// You can specify all the values or you can default the Build and Revision Numbers 76// You can specify all the values or you can default the Build and Revision Numbers
77// by using the '*' as shown below:77// by using the '*' as shown below:
78// [assembly: AssemblyVersion("2.1.465.0")]78// [assembly: AssemblyVersion("2.2.8.0")]
79[assembly: AssemblyVersion("2.1.465.0")]79[assembly: AssemblyVersion("2.2.8.0")]
80[assembly: AssemblyFileVersion("2.1.465.0")]80[assembly: AssemblyFileVersion("2.2.8.0")]
81[assembly: AssemblyInformationalVersion("2.1.465-beta")]81[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/LogFileViewer/Properties/AssemblyInfo.cs+3−3
@@ -30,6 +30,6 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
Source/Tools/MonoGenCert/Properties/AssemblyInfo.cs+4−4
@@ -28,7 +28,7 @@ using System.Runtime.InteropServices; · 27 unmodified lines
28//28//
29// You can specify all the values or you can default the Build and Revision Numbers 29// You can specify all the values or you can default the Build and Revision Numbers
30// by using the '*' as shown below:30// by using the '*' as shown below:
31// [assembly: AssemblyVersion("2.1.465.0")]31// [assembly: AssemblyVersion("2.2.8.0")]
32[assembly: AssemblyVersion("2.1.465.0")]32[assembly: AssemblyVersion("2.2.8.0")]
33[assembly: AssemblyFileVersion("2.1.465.0")]33[assembly: AssemblyFileVersion("2.2.8.0")]
34[assembly: AssemblyInformationalVersion("2.1.465-beta")]34[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/NoInetFixUtil/Properties/AssemblyInfo.cs+4−4
@@ -50,7 +50,7 @@ using System.Runtime.InteropServices; · 49 unmodified lines
50//50//
51// You can specify all the values or you can default the Build and Revision Numbers 51// You can specify all the values or you can default the Build and Revision Numbers
52// by using the '*' as shown below:52// by using the '*' as shown below:
53// [assembly: AssemblyVersion("2.1.465.0")]53// [assembly: AssemblyVersion("2.2.8.0")]
54[assembly: AssemblyVersion("2.1.465.0")]54[assembly: AssemblyVersion("2.2.8.0")]
55[assembly: AssemblyFileVersion("2.1.465.0")]55[assembly: AssemblyFileVersion("2.2.8.0")]
56[assembly: AssemblyInformationalVersion("2.1.465-beta")]56[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/PQDIFDump/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/ProtocolTester/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/SocketArchive/Properties/AssemblyInfo.cs+4−4
@@ -58,7 +58,7 @@ using System.Runtime.InteropServices; · 57 unmodified lines
58//58//
59// You can specify all the values or you can default the Build and Revision Numbers 59// You can specify all the values or you can default the Build and Revision Numbers
60// by using the '*' as shown below:60// by using the '*' as shown below:
61// [assembly: AssemblyVersion("2.1.465.0")]61// [assembly: AssemblyVersion("2.2.8.0")]
62[assembly: AssemblyVersion("2.1.465.0")]62[assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyFileVersion("2.1.465.0")]63[assembly: AssemblyFileVersion("2.2.8.0")]
64[assembly: AssemblyInformationalVersion("2.1.465-beta")]64[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/StatHistorianReportGenerator/Properties/AssemblyInfo.cs+4−4
@@ -31,8 +31,8 @@ using System.Runtime.InteropServices; · 30 unmodified lines
31//31//
32// You can specify all the values or you can default the Build and Revision Numbers 32// You can specify all the values or you can default the Build and Revision Numbers
33// by using the '*' as shown below:33// by using the '*' as shown below:
34// [assembly: AssemblyVersion("2.1.465.0")]34// [assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyVersion("2.1.465.0")]35[assembly: AssemblyVersion("2.2.8.0")]
36[assembly: AssemblyFileVersion("2.1.465.0")]36[assembly: AssemblyFileVersion("2.2.8.0")]
37[assembly: AssemblyInformationalVersion("2.1.465-beta")]37[assembly: AssemblyInformationalVersion("2.2.8-beta")]
38[assembly: NeutralResourcesLanguage("en-US")]38[assembly: NeutralResourcesLanguage("en-US")]
Source/Tools/TCPRebroadcaster/TCPRebroadcaster/Properties/AssemblyInfo.cs+4−4
@@ -59,7 +59,7 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62// [assembly: AssemblyVersion("2.1.465.0")]62// [assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyVersion("2.1.465.0")]63[assembly: AssemblyVersion("2.2.8.0")]
64[assembly: AssemblyFileVersion("2.1.465.0")]64[assembly: AssemblyFileVersion("2.2.8.0")]
65[assembly: AssemblyInformationalVersion("2.1.465-beta")]65[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/TCPRebroadcaster/TCPRebroadcasterConsole/Properties/AssemblyInfo.cs+4−4
@@ -59,7 +59,7 @@ using System.Runtime.InteropServices; · 58 unmodified lines
59//59//
60// You can specify all the values or you can default the Build and Revision Numbers 60// You can specify all the values or you can default the Build and Revision Numbers
61// by using the '*' as shown below:61// by using the '*' as shown below:
62// [assembly: AssemblyVersion("2.1.465.0")]62// [assembly: AssemblyVersion("2.2.8.0")]
63[assembly: AssemblyVersion("2.1.465.0")]63[assembly: AssemblyVersion("2.2.8.0")]
64[assembly: AssemblyFileVersion("2.1.465.0")]64[assembly: AssemblyFileVersion("2.2.8.0")]
65[assembly: AssemblyInformationalVersion("2.1.465-beta")]65[assembly: AssemblyInformationalVersion("2.2.8-beta")]
Source/Tools/UDPRebroadcaster/UDPRebroadcaster/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Tools/UDPRebroadcaster/UDPRebroadcasterConsole/Properties/AssemblyInfo.cs+2−2
@@ -25,8 +25,8 @@ using System.Reflection; · 24 unmodified lines
25using System.Runtime.InteropServices;25using System.Runtime.InteropServices;
26 26
27// Assembly identity attributes.27// Assembly identity attributes.
28[assembly: AssemblyVersion("2.1.465.0")]28[assembly: AssemblyVersion("2.2.8.0")]
29[assembly: AssemblyInformationalVersion("2.1.465-beta")]29[assembly: AssemblyInformationalVersion("2.2.8-beta")]
30 30
31// Informational attributes.31// Informational attributes.
32[assembly: AssemblyCompany("Grid Protection Alliance")]32[assembly: AssemblyCompany("Grid Protection Alliance")]
Source/Tools/UserInfoTest/Properties/AssemblyInfo.cs+4−4
@@ -30,7 +30,7 @@ using System.Runtime.InteropServices; · 29 unmodified lines
30//30//
31// You can specify all the values or you can default the Build and Revision Numbers 31// You can specify all the values or you can default the Build and Revision Numbers
32// by using the '*' as shown below:32// by using the '*' as shown below:
33// [assembly: AssemblyVersion("2.1.465.0")]33// [assembly: AssemblyVersion("2.2.8.0")]
34[assembly: AssemblyVersion("2.1.465.0")]34[assembly: AssemblyVersion("2.2.8.0")]
35[assembly: AssemblyFileVersion("2.1.465.0")]35[assembly: AssemblyFileVersion("2.2.8.0")]
36[assembly: AssemblyInformationalVersion("2.1.465-beta")]36[assembly: AssemblyInformationalVersion("2.2.8-beta")]

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t