History

1) Removed warnings occuring from new code additions. 2) More reorganization and code clean-up. 3) Globally applied static Endian order classes where possible.

ritchiecarroll committed 12 years ago

Commit 51177ba1 parent 0465735147 files · +968 −906Browse files

Unified · Split

147 files
  1. Source/Applications/Wave Demo Apps/WavSubscriptionDemo/AudioPlayback.cs +2 −2
  2. Source/GridSolutionsFramework.sln +64 −61
  3. Source/Libraries/Adapters/AdoAdapters/AdoInputAdapter.cs +6 −6
  4. Source/Libraries/Adapters/AdoAdapters/AdoOutputAdapter.cs +2 −2
  5. Source/Libraries/Adapters/DataQualityMonitoring/Services/AlarmService.cs +1 −1
  6. Source/Libraries/Adapters/FileAdapters/FileBlockReader.cs +2 −2
  7. Source/Libraries/Adapters/FileAdapters/FileBlockWriter.cs +2 −2
  8. Source/Libraries/Adapters/PIAdapters/PIPBInputAdapter.cs +1 −1
  9. Source/Libraries/Adapters/PIAdapters/PIRTInputAdapter.cs +1 −1
  10. Source/Libraries/GSF.COMTRADE/Parser.cs +4 −4
  11. Source/Libraries/GSF.COMTRADE/Writer.cs +5 −5
  12. Source/Libraries/GSF.Communication/Payload.cs +1 −1
  13. Source/Libraries/GSF.Communication/Radius/RadiusPacket.cs +16 −24
  14. Source/Libraries/GSF.Communication/Radius/RadiusPacketAttribute.cs +2 −2
  15. Source/Libraries/GSF.Communication/TcpClient.cs +1 −1
  16. Source/Libraries/GSF.Communication/TcpServer.cs +1 −1
  17. Source/Libraries/GSF.Communication/TlsClient.cs +4 −4
  18. Source/Libraries/GSF.Communication/TlsServer.cs +4 −4
  19. Source/Libraries/GSF.Core/Collections/ListCollection.cs +84 −55
  20. Source/Libraries/GSF.Core/Configuration/ConnectionStringParser.cs +3 −3
  21. Source/Libraries/GSF.Core/EndianOrder.cs +14 −10
  22. Source/Libraries/GSF.Core/GuidExtensions.cs +52 −58
  23. Source/Libraries/GSF.Core/IO/Compression/PatternCompressor.cs +4 −4
  24. Source/Libraries/GSF.Core/IO/Compression/PatternDecompressor.cs +2 −2
  25. Source/Libraries/GSF.Core/IO/StreamExtensions.cs +1 −1
  26. Source/Libraries/GSF.Core/Identity/UserAccountControl.cs +1 −1
  27. Source/Libraries/GSF.Core/Parsing/BinaryImageParserBase.cs +5 −1
  28. Source/Libraries/GSF.Core/Parsing/CommonHeaderBase.cs +1 −1
  29. Source/Libraries/GSF.Core/Parsing/IBinaryImageParser.cs +10 −3
  30. Source/Libraries/GSF.Core/Parsing/ISupportBinaryImage.cs +2 −2
  31. Source/Libraries/GSF.Core/Parsing/ISupportSourceIdentifiableFrameImage.cs +3 −2
  32. Source/Libraries/GSF.Core/Parsing/MultiSourceFrameImageParserBase.cs +18 −25
  33. Source/Libraries/GSF.Core/Threading/ThreadContainerBase.cs +2 −0
  34. Source/Libraries/GSF.Historian/DataServices/MetadataService.cs +3 −3
  35. Source/Libraries/GSF.Historian/DataServices/TimeSeriesDataService.cs +2 −2
  36. Source/Libraries/GSF.Historian/Files/ArchiveDataBlockPointer.cs +4 −4
  37. Source/Libraries/GSF.Historian/Files/ArchiveDataPoint.cs +6 −6
  38. Source/Libraries/GSF.Historian/Files/ArchiveFileAllocationTable.cs +18 −18
  39. Source/Libraries/GSF.Historian/Files/IntercomRecord.cs +10 −10
  40. Source/Libraries/GSF.Historian/Files/MetadataRecord.cs +36 −36
  41. Source/Libraries/GSF.Historian/Files/MetadataRecordAnalogFields.cs +21 −21
  42. Source/Libraries/GSF.Historian/Files/MetadataRecordComposedFields.cs +20 −20
  43. Source/Libraries/GSF.Historian/Files/MetadataRecordConstantFields.cs +4 −4
  44. Source/Libraries/GSF.Historian/Files/MetadataRecordDigitalFields.cs +4 −4
  45. Source/Libraries/GSF.Historian/Files/MetadataRecordSummary.cs +18 −18
  46. Source/Libraries/GSF.Historian/Files/StateRecord.cs +7 −7
  47. Source/Libraries/GSF.Historian/Files/StateRecordDataPoint.cs +3 −3
  48. Source/Libraries/GSF.Historian/Files/StateRecordSummary.cs +3 −3
  49. Source/Libraries/GSF.Historian/Packets/PacketCommonHeader.cs +1 −1
  50. Source/Libraries/GSF.Historian/Packets/PacketType1.cs +10 −10
  51. Source/Libraries/GSF.Historian/Packets/PacketType101.cs +4 −4
  52. Source/Libraries/GSF.Historian/Packets/PacketType101DataPoint.cs +8 −8
  53. Source/Libraries/GSF.Historian/Packets/PacketType2.cs +18 −18
  54. Source/Libraries/GSF.Historian/Packets/PacketType5.cs +2 −2
  55. Source/Libraries/GSF.Historian/Packets/QueryPacketBase.cs +6 −6
  56. Source/Libraries/GSF.Media/RiffChunk.cs +3 −3
  57. Source/Libraries/GSF.Media/RiffHeaderChunk.cs +1 −1
  58. Source/Libraries/GSF.Media/WaveDataChunk.cs +1 −1
  59. Source/Libraries/GSF.Media/WaveFormatChunk.cs +15 −15
  60. Source/Libraries/GSF.Media/WaveFormatExtensible.cs +6 −6
  61. Source/Libraries/GSF.PQDIF/Physical/ScalarElement.cs +26 −26
  62. Source/Libraries/GSF.PQDIF/Physical/VectorElement.cs +14 −14
  63. Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/CommonFrameHeader.cs +17 −17
  64. Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/ConfigurationCell.cs +4 −4
  65. Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/ConfigurationFrame.cs +10 −10
  66. Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/DataCell.cs +3 −3
  67. Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/DataFrame.cs +10 −10
  68. Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/FrequencyValue.cs +2 −2
  69. Source/Libraries/GSF.PhasorProtocols/ConfigurationCellBase.cs +1 −1
  70. Source/Libraries/GSF.PhasorProtocols/FrameParserBase.cs +8 −5
  71. Source/Libraries/GSF.PhasorProtocols/IFrameParser.cs +1 −1
  72. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/AnalogDefinition.cs +2 −2
  73. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/CommandFrame.cs +1 −1
  74. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/Common.cs +5 −5
  75. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/CommonFrameHeader.cs +23 −23
  76. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/ConfigurationCell.cs +12 −12
  77. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/ConfigurationFrame.cs +6 −6
  78. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/DataFrame.cs +2 −2
  79. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/DigitalDefinition.cs +4 −4
  80. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/FrequencyDefinition.cs +2 −2
  81. Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/PhasorDefinition.cs +2 −2
  82. Source/Libraries/GSF.PhasorProtocols/Ieee1344/CommandFrame.cs +5 −5
  83. Source/Libraries/GSF.PhasorProtocols/Ieee1344/CommonFrameHeader.cs +6 −6
  84. Source/Libraries/GSF.PhasorProtocols/Ieee1344/ConfigurationCell.cs +8 −8
  85. Source/Libraries/GSF.PhasorProtocols/Ieee1344/ConfigurationFrame.cs +2 −2
  86. Source/Libraries/GSF.PhasorProtocols/Ieee1344/DigitalDefinition.cs +2 −2
  87. Source/Libraries/GSF.PhasorProtocols/Ieee1344/FrequencyDefinition.cs +2 −2
  88. Source/Libraries/GSF.PhasorProtocols/Ieee1344/FrequencyValue.cs +4 −4
  89. Source/Libraries/GSF.PhasorProtocols/Ieee1344/PhasorDefinition.cs +2 −2
  90. Source/Libraries/GSF.PhasorProtocols/IeeeC37_118/ConfigurationCell3.cs +25 −25
  91. Source/Libraries/GSF.PhasorProtocols/IeeeC37_118/ConfigurationFrame3.cs +3 −3
  92. Source/Libraries/GSF.PhasorProtocols/IeeeC37_118/FrameParser.cs +1 −1
  93. Source/Libraries/GSF.PhasorProtocols/Macrodyne/CommandFrame.cs +1 −1
  94. Source/Libraries/GSF.PhasorProtocols/Macrodyne/CommonFrameHeader.cs +3 −3
  95. Source/Libraries/GSF.PhasorProtocols/Macrodyne/ConfigurationFrame.cs +2 −2
  96. Source/Libraries/GSF.PhasorProtocols/Macrodyne/DataCell.cs +5 −5
  97. Source/Libraries/GSF.PhasorProtocols/Macrodyne/FrequencyValue.cs +1 −1
  98. Source/Libraries/GSF.PhasorProtocols/SelFastMessage/CommandFrame.cs +3 −3
  99. Source/Libraries/GSF.PhasorProtocols/SelFastMessage/CommonFrameHeader.cs +7 −7
  100. Source/Libraries/GSF.PhasorProtocols/SelFastMessage/DataCell.cs +1 −1
  101. Source/Libraries/GSF.PhasorProtocols/SelFastMessage/FrequencyValue.cs +2 −2
  102. Source/Libraries/GSF.PhasorProtocols/SelFastMessage/PhasorValue.cs +4 −4
  103. Source/Libraries/GSF.PhasorProtocols/UI/DataModels/CalculatedMeasurement.cs +1 −1
  104. Source/Libraries/GSF.PhasorProtocols/UI/DataModels/Device.cs +1 −1
  105. Source/Libraries/GSF.PhasorProtocols/UI/DataModels/InputWizardDevice.cs +2 −2
  106. Source/Libraries/GSF.PhasorProtocols/UI/DataModels/Phasor.cs +1 −1
  107. Source/Libraries/GSF.ServiceModel/Service.cs +3 −2
  108. Source/Libraries/GSF.ServiceProcess/ClientInfo.cs +1 −1
  109. Source/Libraries/GSF.ServiceProcess/ClientRequest.cs +1 −1
  110. Source/Libraries/GSF.ServiceProcess/ServiceHelper.cs +1 −1
  111. Source/Libraries/GSF.TimeSeries/Adapters/AdapterBase.cs +2 −2
  112. Source/Libraries/GSF.TimeSeries/Adapters/AdapterCollectionBase.cs +3 −3
  113. Source/Libraries/GSF.TimeSeries/Adapters/FacileActionAdapterBase.cs +3 −3
  114. Source/Libraries/GSF.TimeSeries/Adapters/InputAdapterBase.cs +2 −2
  115. Source/Libraries/GSF.TimeSeries/Adapters/OutputAdapterBase.cs +3 −3
  116. Source/Libraries/GSF.TimeSeries/ConcentratorBase.cs +7 −7
  117. Source/Libraries/GSF.TimeSeries/Configuration/BinaryFileConfigurationLoader.cs +2 −0
  118. Source/Libraries/GSF.TimeSeries/Configuration/WebServiceConfigurationLoader.cs +2 −0
  119. Source/Libraries/GSF.TimeSeries/Configuration/XMLConfigurationLoader.cs +2 −0
  120. Source/Libraries/GSF.TimeSeries/FrameQueue.cs +5 −1
  121. Source/Libraries/GSF.TimeSeries/IMeasurement.cs +1 −1
  122. Source/Libraries/GSF.TimeSeries/Measurement.cs +1 −1
  123. Source/Libraries/GSF.TimeSeries/MeasurementKey.cs +1 −1
  124. Source/Libraries/GSF.TimeSeries/ServiceHostBase.cs +17 −6
  125. Source/Libraries/GSF.TimeSeries/TrackingFrame.cs +1 −1
  126. Source/Libraries/GSF.TimeSeries/Transport/ClientConnection.cs +4 −4
  127. Source/Libraries/GSF.TimeSeries/Transport/CompactMeasurement.cs +12 −12
  128. Source/Libraries/GSF.TimeSeries/Transport/DataPublisher.cs +11 −11
  129. Source/Libraries/GSF.TimeSeries/Transport/DataSubscriber.cs +17 −17
  130. Source/Libraries/GSF.TimeSeries/Transport/SerializableMeasurement.cs +18 −16
  131. Source/Libraries/GSF.TimeSeries/Transport/SignalIndexCache.cs +14 −12
  132. Source/Libraries/GSF.TimeSeries/Transport/SynchronizedClientSubscription.cs +3 −3
  133. Source/Libraries/GSF.TimeSeries/Transport/UnsynchronizedClientSubscription.cs +6 −6
  134. Source/Libraries/GSF.TimeSeries/UI/CommonFunctions.cs +1 −1
  135. Source/Libraries/GSF.TimeSeries/UI/Converters/DictionaryToKeyValuePairConverter.cs +2 −2
  136. Source/Libraries/GSF.TimeSeries/UI/Converters/IndexToBooleanConverter.cs +3 −3
  137. Source/Libraries/GSF.TimeSeries/UI/Converters/ObjectToVisibilityConverter.cs +1 −1
  138. Source/Libraries/GSF.TimeSeries/UI/Converters/RoleBasedVisibilityConverter.cs +2 −2
  139. Source/Libraries/GSF.TimeSeries/UI/Converters/StringToBooleanConverter.cs +1 −1
  140. Source/Libraries/GSF.TimeSeries/UI/Converters/StringToStatusColorConverter.cs +1 −1
  141. Source/Libraries/GSF.TimeSeries/UI/DataModels/Measurement.cs +1 −1
  142. Source/Libraries/GSF.Web/Embedded/SecurityPortal.aspx.cs +1 −1
  143. Source/Libraries/GSF.Windows/Forms/AboutDialog.cs +1 −1
  144. Source/Libraries/GSF.Windows/Forms/SecureForm.cs +1 −1
  145. Source/Libraries/Hadoop.Replication/HadoopReplicationProvider.cs +1 −1
  146. Source/Libraries/Tests/GSF.Core.Tests/EndianOrderTest.cs +3 −0
  147. Source/Libraries/Tests/GSF.Core.Tests/GuidExtensionsTest.cs +2 −1
Source/Applications/Wave Demo Apps/WavSubscriptionDemo/AudioPlayback.cs+2−2
@@ -696,7 +696,7 @@ namespace NAudioWpfDemo · 695 unmodified lines
696 696
697 // Assuming 16-bit integer samples for WAV files697 // Assuming 16-bit integer samples for WAV files
698 if (sample[i] != null)698 if (sample[i] != null)
699 channelValue = EndianOrder.LittleEndian.GetBytes((short)sample[i].Value);699 channelValue = LittleEndian.GetBytes((short)sample[i].Value);
700 else700 else
701 channelValue = new byte[2];701 channelValue = new byte[2];
702 702
@@ -737,7 +737,7 @@ namespace NAudioWpfDemo · 34 unmodified lines
737 }737 }
738 finally738 finally
739 {739 {
740 if (buffer != null)740 if ((object)buffer != null)
741 BufferPool.ReturnBuffer(buffer);741 BufferPool.ReturnBuffer(buffer);
742 }742 }
743 }743 }
Source/GridSolutionsFramework.sln+64−61
@@ -259,6 +259,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Database", "Database", "{06 · 258 unmodified lines
259EndProject259EndProject
260Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "File", "File", "{198CE128-2E28-4591-91C1-C83176C3BE51}"260Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "File", "File", "{198CE128-2E28-4591-91C1-C83176C3BE51}"
261EndProject261EndProject
262Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Structured Data Encoding", "Structured Data Encoding", "{E4120DD8-64F7-4D60-8B41-F2FDC27CC708}"
263EndProject
262Global264Global
263 GlobalSection(TeamFoundationVersionControl) = preSolution265 GlobalSection(TeamFoundationVersionControl) = preSolution
264 SccNumberOfProjects = 81266 SccNumberOfProjects = 81
@@ -1451,6 +1453,7 @@ Global · 1186 unmodified lines
1451 {00B924AB-0DC8-4826-8A63-3263E39C2EBF} = {13006BBE-434A-4027-940B-EAD752844137}1453 {00B924AB-0DC8-4826-8A63-3263E39C2EBF} = {13006BBE-434A-4027-940B-EAD752844137}
1452 {6DCB8ABF-D899-41A9-BBCD-556590754175} = {13006BBE-434A-4027-940B-EAD752844137}1454 {6DCB8ABF-D899-41A9-BBCD-556590754175} = {13006BBE-434A-4027-940B-EAD752844137}
1453 {D429E017-FC8B-4077-8CEB-CCA277008091} = {13006BBE-434A-4027-940B-EAD752844137}1455 {D429E017-FC8B-4077-8CEB-CCA277008091} = {13006BBE-434A-4027-940B-EAD752844137}
1456 {B3986636-8741-4D97-AE46-2A5BA1338B41} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1454 {FF3FCBA6-F01A-4EC2-BC3F-6BA832AFCF88} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1457 {FF3FCBA6-F01A-4EC2-BC3F-6BA832AFCF88} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1455 {2B2EB9BE-E6A9-406F-BFE6-FF46DD6BD264} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1458 {2B2EB9BE-E6A9-406F-BFE6-FF46DD6BD264} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1456 {4060E729-EFFD-4E50-A0D5-99C0990EF7DA} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1459 {4060E729-EFFD-4E50-A0D5-99C0990EF7DA} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
@@ -1459,15 +1462,30 @@ Global · 2 unmodified lines
1459 {2E23E926-CF64-4607-BDE1-1B2FC76F4919} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1462 {2E23E926-CF64-4607-BDE1-1B2FC76F4919} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1460 {0501C2DC-3428-4413-AE92-F0D82FF3DBBC} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1463 {0501C2DC-3428-4413-AE92-F0D82FF3DBBC} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1461 {EA70C8AA-60DE-4FFD-B1D9-B5406395B1AF} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1464 {EA70C8AA-60DE-4FFD-B1D9-B5406395B1AF} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1465 {99F344EA-D35D-42C8-882B-B495527B5F40} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1462 {0F8E8EFC-E7C7-4843-8EE6-8C7C7353892A} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1466 {0F8E8EFC-E7C7-4843-8EE6-8C7C7353892A} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1463 {72713097-3BE3-4FA7-97B5-7EC3A2BA8316} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1467 {72713097-3BE3-4FA7-97B5-7EC3A2BA8316} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1464 {DE23EEF6-EE66-42DE-81B0-890B3A77B83C} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1465 {78C67B09-D6EB-4A79-A591-47146025A277} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1468 {78C67B09-D6EB-4A79-A591-47146025A277} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1466 {99F344EA-D35D-42C8-882B-B495527B5F40} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1469 {DE23EEF6-EE66-42DE-81B0-890B3A77B83C} = {D7805B20-D771-4546-90DD-CD98C4BA4436}
1467 {B3986636-8741-4D97-AE46-2A5BA1338B41} = {D7805B20-D771-4546-90DD-CD98C4BA4436}1470 {1B63485E-46C7-4185-B968-216A02396B88} = {0C19430B-01AC-4184-ACDA-6DE690649CD8}
1468 {6BFB4BFD-6906-4E92-8078-3AB5641AAFAB} = {1C4124EF-0F9C-47B9-B1CB-B2CA39AB0E57}1471 {7C825A52-3ADB-40BD-8D49-1519A4D534A1} = {0C19430B-01AC-4184-ACDA-6DE690649CD8}
1472 {B48642A1-1163-4E1D-948A-50EE19DCD38D} = {0C19430B-01AC-4184-ACDA-6DE690649CD8}
1473 {B15B1BEF-7631-43C0-B048-AD51692FD0C7} = {1B63485E-46C7-4185-B968-216A02396B88}
1474 {129F9272-157F-4A37-B0A4-0F9E5E4A0FE6} = {1B63485E-46C7-4185-B968-216A02396B88}
1475 {933BE44C-B124-4ACC-8BE8-A6A22AAC4413} = {1B63485E-46C7-4185-B968-216A02396B88}
1476 {07016E6A-01B1-4B3D-B1D6-F9131A1BEB6E} = {1B63485E-46C7-4185-B968-216A02396B88}
1477 {2E9DA7CC-960A-40A6-BC90-1FBD7B7994F0} = {1B63485E-46C7-4185-B968-216A02396B88}
1478 {E349DD08-3707-4542-8ED3-BB9E106FE6FB} = {1B63485E-46C7-4185-B968-216A02396B88}
1479 {7D81CF8E-6F49-4AF8-B039-9C3210140194} = {1B63485E-46C7-4185-B968-216A02396B88}
1480 {1B3CA936-9D8A-4B40-8B08-E98AA2375E69} = {1B63485E-46C7-4185-B968-216A02396B88}
1481 {252A5667-C00C-4427-A5E8-2EB4886877C4} = {1B63485E-46C7-4185-B968-216A02396B88}
1482 {3029C3DC-E302-46E5-8126-8082B6EC1C1A} = {1B63485E-46C7-4185-B968-216A02396B88}
1483 {35027A69-1A76-4312-B57B-F5826F0B87AF} = {1B63485E-46C7-4185-B968-216A02396B88}
1484 {1C4124EF-0F9C-47B9-B1CB-B2CA39AB0E57} = {B15B1BEF-7631-43C0-B048-AD51692FD0C7}
1485 {C00E78E4-081D-409A-ABB2-EA9FC50EE51E} = {B15B1BEF-7631-43C0-B048-AD51692FD0C7}
1469 {216C7D13-CB2B-4E98-87D5-D8CA53FE97F7} = {1C4124EF-0F9C-47B9-B1CB-B2CA39AB0E57}1486 {216C7D13-CB2B-4E98-87D5-D8CA53FE97F7} = {1C4124EF-0F9C-47B9-B1CB-B2CA39AB0E57}
1470 {D04BF4AB-96CB-4671-B1D3-41700F554C78} = {1C4124EF-0F9C-47B9-B1CB-B2CA39AB0E57}1487 {D04BF4AB-96CB-4671-B1D3-41700F554C78} = {1C4124EF-0F9C-47B9-B1CB-B2CA39AB0E57}
1488 {6BFB4BFD-6906-4E92-8078-3AB5641AAFAB} = {1C4124EF-0F9C-47B9-B1CB-B2CA39AB0E57}
1471 {10184FDE-42E4-4BC5-ADDC-F211D25FD94C} = {F06A2E20-D5DD-4B88-9ABC-CEE7245829E3}1489 {10184FDE-42E4-4BC5-ADDC-F211D25FD94C} = {F06A2E20-D5DD-4B88-9ABC-CEE7245829E3}
1472 {044C17D3-DEC9-4A57-9B4F-3664393C888E} = {F06A2E20-D5DD-4B88-9ABC-CEE7245829E3}1490 {044C17D3-DEC9-4A57-9B4F-3664393C888E} = {F06A2E20-D5DD-4B88-9ABC-CEE7245829E3}
1473 {CC2B0A07-3D70-4261-A96E-D5A747A7B74F} = {F06A2E20-D5DD-4B88-9ABC-CEE7245829E3}1491 {CC2B0A07-3D70-4261-A96E-D5A747A7B74F} = {F06A2E20-D5DD-4B88-9ABC-CEE7245829E3}
@@ -1479,77 +1497,62 @@ Global · 5 unmodified lines
1479 {D405B0BE-88EE-4224-AA8C-4A6817481C17} = {F06A2E20-D5DD-4B88-9ABC-CEE7245829E3}1497 {D405B0BE-88EE-4224-AA8C-4A6817481C17} = {F06A2E20-D5DD-4B88-9ABC-CEE7245829E3}
1480 {4093E2B8-2948-468F-94B2-B2EF815E1A1B} = {C00E78E4-081D-409A-ABB2-EA9FC50EE51E}1498 {4093E2B8-2948-468F-94B2-B2EF815E1A1B} = {C00E78E4-081D-409A-ABB2-EA9FC50EE51E}
1481 {9512CFD3-76D7-4C42-8DB6-B848600303C3} = {C00E78E4-081D-409A-ABB2-EA9FC50EE51E}1499 {9512CFD3-76D7-4C42-8DB6-B848600303C3} = {C00E78E4-081D-409A-ABB2-EA9FC50EE51E}
1500 {2E8D7CE0-8816-4893-848B-05E2A38FE898} = {B3986636-8741-4D97-AE46-2A5BA1338B41}
1501 {412F9F59-D9B9-4C8E-96D2-20492644198C} = {B3986636-8741-4D97-AE46-2A5BA1338B41}
1502 {F3B5720A-27E0-46C7-A9E1-A91B9D18F59A} = {B3986636-8741-4D97-AE46-2A5BA1338B41}
1503 {2A542BE8-8D17-44C3-BCD2-768DF480FF82} = {B3986636-8741-4D97-AE46-2A5BA1338B41}
1482 {BB0CAA29-229E-4648-80A0-1474B3A0FACF} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}1504 {BB0CAA29-229E-4648-80A0-1474B3A0FACF} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1505 {198CE128-2E28-4591-91C1-C83176C3BE51} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1506 {51797AFD-D313-4E14-A3E9-531F28C698C2} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1483 {A04A48C2-112D-4EE3-A6B0-3784A1315BCF} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}1507 {A04A48C2-112D-4EE3-A6B0-3784A1315BCF} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1484 {374F5805-28DB-4BCA-8062-BF802793BD4F} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}1508 {374F5805-28DB-4BCA-8062-BF802793BD4F} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1509 {06BCB1F6-1992-4B1B-A98F-4F4EA04441B5} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1485 {69846364-E3F5-4086-B9FE-D447BB7E56C3} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}1510 {69846364-E3F5-4086-B9FE-D447BB7E56C3} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1486 {51797AFD-D313-4E14-A3E9-531F28C698C2} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1487 {CD3C7F74-B7F2-422F-8417-1E9045155352} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1488 {917EA50B-D09B-4B96-B8DD-5D91C7DFBF38} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}1511 {917EA50B-D09B-4B96-B8DD-5D91C7DFBF38} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1489 {06BCB1F6-1992-4B1B-A98F-4F4EA04441B5} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}1512 {CD3C7F74-B7F2-422F-8417-1E9045155352} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}
1490 {198CE128-2E28-4591-91C1-C83176C3BE51} = {2E8D7CE0-8816-4893-848B-05E2A38FE898}1513 {40FACE0F-06DF-474C-A87C-59C8EAC0B3F8} = {198CE128-2E28-4591-91C1-C83176C3BE51}
1491 {7C825A52-3ADB-40BD-8D49-1519A4D534A1} = {0C19430B-01AC-4184-ACDA-6DE690649CD8}1514 {08F5CCE4-10C4-477C-B5C9-37F7D49748BC} = {198CE128-2E28-4591-91C1-C83176C3BE51}
1492 {1B63485E-46C7-4185-B968-216A02396B88} = {0C19430B-01AC-4184-ACDA-6DE690649CD8}1515 {43A322EE-37D2-4B13-BA16-023E88772F8D} = {198CE128-2E28-4591-91C1-C83176C3BE51}
1493 {B48642A1-1163-4E1D-948A-50EE19DCD38D} = {0C19430B-01AC-4184-ACDA-6DE690649CD8}1516 {7B0EEB2B-6F25-4D59-A15D-F39EA9DC94D3} = {198CE128-2E28-4591-91C1-C83176C3BE51}
1517 {A8861372-0FE2-45E5-9DED-73B55AC4196C} = {198CE128-2E28-4591-91C1-C83176C3BE51}
1518 {AF33B063-D523-493E-951A-29C930A49002} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1519 {5E1CD41C-6CB0-45D1-AA73-191A36028CE7} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1520 {B74CF4DA-2972-489B-AF08-419560EE57EF} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1521 {C4F3C41D-D76A-4283-8732-681B67B7AD74} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1522 {AD054F7A-C944-4BA3-8CD8-CA275184BD33} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1523 {1FEC4033-C80F-4CF1-835C-BBEE0E7F6803} = {06BCB1F6-1992-4B1B-A98F-4F4EA04441B5}
1524 {C4145EB5-FEF9-4419-AC5E-31D4F23AD311} = {06BCB1F6-1992-4B1B-A98F-4F4EA04441B5}
1525 {383F4F83-8228-4B9A-9757-250043B6E30B} = {06BCB1F6-1992-4B1B-A98F-4F4EA04441B5}
1526 {26F261F8-8660-46D3-8090-BCDA9EFF5427} = {917EA50B-D09B-4B96-B8DD-5D91C7DFBF38}
1527 {3F0B62F6-99B8-4F57-8C58-0B4B862358EA} = {917EA50B-D09B-4B96-B8DD-5D91C7DFBF38}
1494 {5E75D20E-228E-4ACC-B73D-E9471D9E0852} = {7C825A52-3ADB-40BD-8D49-1519A4D534A1}1528 {5E75D20E-228E-4ACC-B73D-E9471D9E0852} = {7C825A52-3ADB-40BD-8D49-1519A4D534A1}
1495 {D78C3B1B-F673-45EB-86CB-93DCB4572905} = {7C825A52-3ADB-40BD-8D49-1519A4D534A1}1529 {D78C3B1B-F673-45EB-86CB-93DCB4572905} = {7C825A52-3ADB-40BD-8D49-1519A4D534A1}
1496 {7E1ABF87-8936-44E5-85C0-37044E0D3877} = {F3B5720A-27E0-46C7-A9E1-A91B9D18F59A}1530 {DEAE7327-1628-4D6D-B682-257335B86B22} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1497 {B561487F-79CC-4982-848E-C12F44B4669C} = {F3B5720A-27E0-46C7-A9E1-A91B9D18F59A}1531 {FC5B2769-89FD-420B-9722-D6E0B029ABDD} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1498 {F68BED5B-410C-4D02-87C0-8AC74E374821} = {78C67B09-D6EB-4A79-A591-47146025A277}1532 {DCFB7880-2C6B-41D0-B603-661BCE089DD7} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1499 {7FB89A9F-D6FD-46CD-960A-7A9E90D82C2C} = {78C67B09-D6EB-4A79-A591-47146025A277}1533 {C6631FD6-24F9-402D-BFE3-FEB3F780BA6A} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1500 {9B93C212-786C-45C9-9B90-8CEFD24EF19D} = {F68BED5B-410C-4D02-87C0-8AC74E374821}1534 {4508009C-7011-4981-B35F-594F42CC0D1F} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1501 {B4B5A12E-412E-4382-B991-3B67653F533C} = {F68BED5B-410C-4D02-87C0-8AC74E374821}
1502 {2C42B95F-A58A-413D-97E2-1968C087C472} = {F68BED5B-410C-4D02-87C0-8AC74E374821}
1503 {B3FBA8D6-7C89-4FE9-8E90-F617604A7C3C} = {7FB89A9F-D6FD-46CD-960A-7A9E90D82C2C}
1504 {74B3264B-4740-4C2F-9DCB-373FDCD3A848} = {7FB89A9F-D6FD-46CD-960A-7A9E90D82C2C}
1505 {54CA98CC-2F0A-41F2-879D-0E42B17E8544} = {7FB89A9F-D6FD-46CD-960A-7A9E90D82C2C}
1506 {4F46CF24-163D-4541-9EBF-C291053C0948} = {99F344EA-D35D-42C8-882B-B495527B5F40}
1507 {AEB62271-270D-4F3E-B596-2297B382A95F} = {99F344EA-D35D-42C8-882B-B495527B5F40}1535 {AEB62271-270D-4F3E-B596-2297B382A95F} = {99F344EA-D35D-42C8-882B-B495527B5F40}
1508 {A818C4B5-52B5-4E12-917E-4854C9AB4EF3} = {4F46CF24-163D-4541-9EBF-C291053C0948}1536 {4F46CF24-163D-4541-9EBF-C291053C0948} = {99F344EA-D35D-42C8-882B-B495527B5F40}
1509 {57261E91-7636-4F92-8D93-744A4AAD7EB0} = {4F46CF24-163D-4541-9EBF-C291053C0948}
1510 {94F36768-E9A0-4783-BB0F-8C2C1771352E} = {AEB62271-270D-4F3E-B596-2297B382A95F}1537 {94F36768-E9A0-4783-BB0F-8C2C1771352E} = {AEB62271-270D-4F3E-B596-2297B382A95F}
1511 {134819C5-C1BB-4ED1-BE23-49AB5FB33744} = {AEB62271-270D-4F3E-B596-2297B382A95F}1538 {134819C5-C1BB-4ED1-BE23-49AB5FB33744} = {AEB62271-270D-4F3E-B596-2297B382A95F}
1512 {7ED01B57-DD71-4A38-BB29-65D629224A12} = {AEB62271-270D-4F3E-B596-2297B382A95F}1539 {7ED01B57-DD71-4A38-BB29-65D629224A12} = {AEB62271-270D-4F3E-B596-2297B382A95F}
1513 {5AF0D55A-30BF-46A5-8A47-FA885F56BFEF} = {AEB62271-270D-4F3E-B596-2297B382A95F}1540 {5AF0D55A-30BF-46A5-8A47-FA885F56BFEF} = {AEB62271-270D-4F3E-B596-2297B382A95F}
1514 {35027A69-1A76-4312-B57B-F5826F0B87AF} = {1B63485E-46C7-4185-B968-216A02396B88}1541 {B561487F-79CC-4982-848E-C12F44B4669C} = {F3B5720A-27E0-46C7-A9E1-A91B9D18F59A}
1515 {129F9272-157F-4A37-B0A4-0F9E5E4A0FE6} = {1B63485E-46C7-4185-B968-216A02396B88}1542 {7E1ABF87-8936-44E5-85C0-37044E0D3877} = {F3B5720A-27E0-46C7-A9E1-A91B9D18F59A}
1516 {E349DD08-3707-4542-8ED3-BB9E106FE6FB} = {1B63485E-46C7-4185-B968-216A02396B88}
1517 {933BE44C-B124-4ACC-8BE8-A6A22AAC4413} = {1B63485E-46C7-4185-B968-216A02396B88}
1518 {3029C3DC-E302-46E5-8126-8082B6EC1C1A} = {1B63485E-46C7-4185-B968-216A02396B88}
1519 {07016E6A-01B1-4B3D-B1D6-F9131A1BEB6E} = {1B63485E-46C7-4185-B968-216A02396B88}
1520 {2E9DA7CC-960A-40A6-BC90-1FBD7B7994F0} = {1B63485E-46C7-4185-B968-216A02396B88}
1521 {1B3CA936-9D8A-4B40-8B08-E98AA2375E69} = {1B63485E-46C7-4185-B968-216A02396B88}
1522 {252A5667-C00C-4427-A5E8-2EB4886877C4} = {1B63485E-46C7-4185-B968-216A02396B88}
1523 {7D81CF8E-6F49-4AF8-B039-9C3210140194} = {1B63485E-46C7-4185-B968-216A02396B88}
1524 {B15B1BEF-7631-43C0-B048-AD51692FD0C7} = {1B63485E-46C7-4185-B968-216A02396B88}
1525 {DCFB7880-2C6B-41D0-B603-661BCE089DD7} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1526 {4508009C-7011-4981-B35F-594F42CC0D1F} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1527 {DEAE7327-1628-4D6D-B682-257335B86B22} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1528 {C6631FD6-24F9-402D-BFE3-FEB3F780BA6A} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1529 {FC5B2769-89FD-420B-9722-D6E0B029ABDD} = {B48642A1-1163-4E1D-948A-50EE19DCD38D}
1530 {C00E78E4-081D-409A-ABB2-EA9FC50EE51E} = {B15B1BEF-7631-43C0-B048-AD51692FD0C7}
1531 {1C4124EF-0F9C-47B9-B1CB-B2CA39AB0E57} = {B15B1BEF-7631-43C0-B048-AD51692FD0C7}
1532 {412F9F59-D9B9-4C8E-96D2-20492644198C} = {B3986636-8741-4D97-AE46-2A5BA1338B41}
1533 {F3B5720A-27E0-46C7-A9E1-A91B9D18F59A} = {B3986636-8741-4D97-AE46-2A5BA1338B41}
1534 {2E8D7CE0-8816-4893-848B-05E2A38FE898} = {B3986636-8741-4D97-AE46-2A5BA1338B41}
1535 {2A542BE8-8D17-44C3-BCD2-768DF480FF82} = {B3986636-8741-4D97-AE46-2A5BA1338B41}
1536 {C4F3C41D-D76A-4283-8732-681B67B7AD74} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1537 {B74CF4DA-2972-489B-AF08-419560EE57EF} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1538 {AF33B063-D523-493E-951A-29C930A49002} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1539 {5E1CD41C-6CB0-45D1-AA73-191A36028CE7} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1540 {AD054F7A-C944-4BA3-8CD8-CA275184BD33} = {51797AFD-D313-4E14-A3E9-531F28C698C2}
1541 {8A1BCFAA-19E8-408A-8C72-170B1211DC27} = {CD3C7F74-B7F2-422F-8417-1E9045155352}1543 {8A1BCFAA-19E8-408A-8C72-170B1211DC27} = {CD3C7F74-B7F2-422F-8417-1E9045155352}
1542 {8BDA86DB-B944-4880-9D97-E4FF04577C03} = {CD3C7F74-B7F2-422F-8417-1E9045155352}1544 {8BDA86DB-B944-4880-9D97-E4FF04577C03} = {CD3C7F74-B7F2-422F-8417-1E9045155352}
1543 {3FD4D092-3E0F-41C1-BE8A-E0A924E76039} = {CD3C7F74-B7F2-422F-8417-1E9045155352}1545 {3FD4D092-3E0F-41C1-BE8A-E0A924E76039} = {CD3C7F74-B7F2-422F-8417-1E9045155352}
1544 {26F261F8-8660-46D3-8090-BCDA9EFF5427} = {917EA50B-D09B-4B96-B8DD-5D91C7DFBF38}1546 {7FB89A9F-D6FD-46CD-960A-7A9E90D82C2C} = {78C67B09-D6EB-4A79-A591-47146025A277}
1545 {3F0B62F6-99B8-4F57-8C58-0B4B862358EA} = {917EA50B-D09B-4B96-B8DD-5D91C7DFBF38}1547 {F68BED5B-410C-4D02-87C0-8AC74E374821} = {78C67B09-D6EB-4A79-A591-47146025A277}
1546 {1FEC4033-C80F-4CF1-835C-BBEE0E7F6803} = {06BCB1F6-1992-4B1B-A98F-4F4EA04441B5}1548 {E4120DD8-64F7-4D60-8B41-F2FDC27CC708} = {78C67B09-D6EB-4A79-A591-47146025A277}
1547 {383F4F83-8228-4B9A-9757-250043B6E30B} = {06BCB1F6-1992-4B1B-A98F-4F4EA04441B5}1549 {74B3264B-4740-4C2F-9DCB-373FDCD3A848} = {7FB89A9F-D6FD-46CD-960A-7A9E90D82C2C}
1548 {C4145EB5-FEF9-4419-AC5E-31D4F23AD311} = {06BCB1F6-1992-4B1B-A98F-4F4EA04441B5}1550 {54CA98CC-2F0A-41F2-879D-0E42B17E8544} = {7FB89A9F-D6FD-46CD-960A-7A9E90D82C2C}
1549 {7B0EEB2B-6F25-4D59-A15D-F39EA9DC94D3} = {198CE128-2E28-4591-91C1-C83176C3BE51}1551 {57261E91-7636-4F92-8D93-744A4AAD7EB0} = {4F46CF24-163D-4541-9EBF-C291053C0948}
1550 {A8861372-0FE2-45E5-9DED-73B55AC4196C} = {198CE128-2E28-4591-91C1-C83176C3BE51}1552 {A818C4B5-52B5-4E12-917E-4854C9AB4EF3} = {4F46CF24-163D-4541-9EBF-C291053C0948}
1551 {08F5CCE4-10C4-477C-B5C9-37F7D49748BC} = {198CE128-2E28-4591-91C1-C83176C3BE51}1553 {2C42B95F-A58A-413D-97E2-1968C087C472} = {F68BED5B-410C-4D02-87C0-8AC74E374821}
1552 {43A322EE-37D2-4B13-BA16-023E88772F8D} = {198CE128-2E28-4591-91C1-C83176C3BE51}1554 {B4B5A12E-412E-4382-B991-3B67653F533C} = {F68BED5B-410C-4D02-87C0-8AC74E374821}
1553 {40FACE0F-06DF-474C-A87C-59C8EAC0B3F8} = {198CE128-2E28-4591-91C1-C83176C3BE51}1555 {9B93C212-786C-45C9-9B90-8CEFD24EF19D} = {F68BED5B-410C-4D02-87C0-8AC74E374821}
1556 {B3FBA8D6-7C89-4FE9-8E90-F617604A7C3C} = {E4120DD8-64F7-4D60-8B41-F2FDC27CC708}
1554 EndGlobalSection1557 EndGlobalSection
1555EndGlobal1558EndGlobal
Source/Libraries/Adapters/AdoAdapters/AdoInputAdapter.cs+6−6
@@ -403,7 +403,7 @@ namespace AdoAdapters · 402 unmodified lines
403 if (data.Read(buffer, 0, 4) != 4)403 if (data.Read(buffer, 0, 4) != 4)
404 throw new EndOfStreamException();404 throw new EndOfStreamException();
405 405
406 signalIndexCacheImageSize = EndianOrder.LittleEndian.ToInt32(buffer, 0);406 signalIndexCacheImageSize = LittleEndian.ToInt32(buffer, 0);
407 407
408 // Resize buffer to accomodate exact signal index cache408 // Resize buffer to accomodate exact signal index cache
409 buffer = new byte[signalIndexCacheImageSize];409 buffer = new byte[signalIndexCacheImageSize];
@@ -419,13 +419,13 @@ namespace AdoAdapters · 9 unmodified lines
419 if (data.Read(buffer, 0, 4) != 4)419 if (data.Read(buffer, 0, 4) != 4)
420 throw new EndOfStreamException();420 throw new EndOfStreamException();
421 421
422 compactMeasurementSize = EndianOrder.LittleEndian.ToInt32(buffer, 0);422 compactMeasurementSize = LittleEndian.ToInt32(buffer, 0);
423 423
424 // Read the total number of compact measurements from the file424 // Read the total number of compact measurements from the file
425 if (data.Read(buffer, 0, 4) != 4)425 if (data.Read(buffer, 0, 4) != 4)
426 throw new EndOfStreamException();426 throw new EndOfStreamException();
427 427
428 totalMeasurements = EndianOrder.LittleEndian.ToInt32(buffer, 0);428 totalMeasurements = LittleEndian.ToInt32(buffer, 0);
429 429
430 // Resize buffer to accomodate compact measurement if needed (not likely)430 // Resize buffer to accomodate compact measurement if needed (not likely)
431 if (buffer.Length < compactMeasurementSize)431 if (buffer.Length < compactMeasurementSize)
@@ -608,16 +608,16 @@ namespace AdoAdapters · 176 unmodified lines
608 int compactMeasurementSize = (new CompactMeasurement(signalIndexCache)).BinaryLength;608 int compactMeasurementSize = (new CompactMeasurement(signalIndexCache)).BinaryLength;
609 609
610 // Write the signal index cache image size to the file610 // Write the signal index cache image size to the file
611 data.Write(EndianOrder.LittleEndian.GetBytes(signalIndexCacheImage.Length), 0, 4);611 data.Write(LittleEndian.GetBytes(signalIndexCacheImage.Length), 0, 4);
612 612
613 // Write the signal index cache image to the file613 // Write the signal index cache image to the file
614 data.Write(signalIndexCacheImage, 0, signalIndexCacheImage.Length);614 data.Write(signalIndexCacheImage, 0, signalIndexCacheImage.Length);
615 615
616 // Write the size of each compact measurement to the file616 // Write the size of each compact measurement to the file
617 data.Write(EndianOrder.LittleEndian.GetBytes(compactMeasurementSize), 0, 4);617 data.Write(LittleEndian.GetBytes(compactMeasurementSize), 0, 4);
618 618
619 // Write the total number of compact measurements to the file619 // Write the total number of compact measurements to the file
620 data.Write(EndianOrder.LittleEndian.GetBytes(m_dbMeasurements.Count), 0, 4);620 data.Write(LittleEndian.GetBytes(m_dbMeasurements.Count), 0, 4);
621 621
622 // Write each compact measurement image to the file622 // Write each compact measurement image to the file
623 for (int i = 0; i < m_dbMeasurements.Count; i++)623 for (int i = 0; i < m_dbMeasurements.Count; i++)
Source/Libraries/Adapters/AdoAdapters/AdoOutputAdapter.cs+2−2
@@ -266,7 +266,7 @@ namespace AdoAdapters · 265 unmodified lines
266 }266 }
267 267
268 // Get bulk insert limit268 // Get bulk insert limit
269 if(settings.TryGetValue("bulkInsertLimit", out setting))269 if (settings.TryGetValue("bulkInsertLimit", out setting))
270 m_bulkInsertLimit = int.Parse(setting);270 m_bulkInsertLimit = int.Parse(setting);
271 else271 else
272 m_bulkInsertLimit = 1024;272 m_bulkInsertLimit = 1024;
@@ -407,7 +407,7 @@ namespace AdoAdapters · 134 unmodified lines
407 if (valuesBuilder.Length > 0)407 if (valuesBuilder.Length > 0)
408 valuesBuilder.Append(',');408 valuesBuilder.Append(',');
409 409
410 if (value == null)410 if ((object)value == null)
411 {411 {
412 valuesBuilder.Append("NULL");412 valuesBuilder.Append("NULL");
413 continue;413 continue;
Source/Libraries/Adapters/DataQualityMonitoring/Services/AlarmService.cs+1−1
@@ -72,7 +72,7 @@ namespace DataQualityMonitoring.Services · 71 unmodified lines
72 }72 }
73 set73 set
74 {74 {
75 if (value == null)75 if ((object)value == null)
76 throw new ArgumentNullException("value");76 throw new ArgumentNullException("value");
77 77
78 m_alarmAdapter = value;78 m_alarmAdapter = value;
Source/Libraries/Adapters/FileAdapters/FileBlockReader.cs+2−2
@@ -635,9 +635,9 @@ namespace FileAdapters · 634 unmodified lines
635 635
636 // Copy file info into the buffer636 // Copy file info into the buffer
637 fileNameByteLength = Encoding.Unicode.GetByteCount(fileInfo.Name);637 fileNameByteLength = Encoding.Unicode.GetByteCount(fileInfo.Name);
638 EndianOrder.BigEndian.CopyBytes(fileNameByteLength, buffer, 1);638 BigEndian.CopyBytes(fileNameByteLength, buffer, 1);
639 Encoding.Unicode.GetBytes(fileInfo.Name, 0, fileInfo.Name.Length, buffer, 5);639 Encoding.Unicode.GetBytes(fileInfo.Name, 0, fileInfo.Name.Length, buffer, 5);
640 EndianOrder.BigEndian.CopyBytes(fileInfo.Length, buffer, 5 + fileNameByteLength);640 BigEndian.CopyBytes(fileInfo.Length, buffer, 5 + fileNameByteLength);
641 bytesRead = 1 + 4 + fileNameByteLength + 8;641 bytesRead = 1 + 4 + fileNameByteLength + 8;
642 642
643 // Wait for lock to open the file643 // Wait for lock to open the file
Source/Libraries/Adapters/FileAdapters/FileBlockWriter.cs+2−2
@@ -180,9 +180,9 @@ namespace FileAdapters · 179 unmodified lines
180 if (bufferBlock[0] != 0)180 if (bufferBlock[0] != 0)
181 {181 {
182 // Start of a new file - read file info182 // Start of a new file - read file info
183 int fileNameByteLength = EndianOrder.BigEndian.ToInt32(bufferBlock, 1);183 int fileNameByteLength = BigEndian.ToInt32(bufferBlock, 1);
184 string fileName = Encoding.Unicode.GetString(bufferBlock, 5, fileNameByteLength);184 string fileName = Encoding.Unicode.GetString(bufferBlock, 5, fileNameByteLength);
185 long fileSize = EndianOrder.BigEndian.ToInt64(bufferBlock, 5 + fileNameByteLength);185 long fileSize = BigEndian.ToInt64(bufferBlock, 5 + fileNameByteLength);
186 186
187 // Notify of new file creation187 // Notify of new file creation
188 OnStatusMessage("Now writing to file {0}...", fileName);188 OnStatusMessage("Now writing to file {0}...", fileName);
Source/Libraries/Adapters/PIAdapters/PIPBInputAdapter.cs+1−1
@@ -122,7 +122,7 @@ namespace PIAdapters · 121 unmodified lines
122 {122 {
123 base.RequestedOutputMeasurementKeys = value;123 base.RequestedOutputMeasurementKeys = value;
124 124
125 if (value != null)125 if ((object)value != null)
126 HandleNewMeasurementsRequest(value);126 HandleNewMeasurementsRequest(value);
127 }127 }
128 }128 }
Source/Libraries/Adapters/PIAdapters/PIRTInputAdapter.cs+1−1
@@ -160,7 +160,7 @@ namespace PIAdapters · 159 unmodified lines
160 set160 set
161 {161 {
162 base.RequestedOutputMeasurementKeys = value;162 base.RequestedOutputMeasurementKeys = value;
163 if (value != null && value.Any())163 if ((object)value != null && value.Any())
164 HandleNewMeasurementsRequest(value);164 HandleNewMeasurementsRequest(value);
165 }165 }
166 }166 }
Source/Libraries/GSF.COMTRADE/Parser.cs+4−4
@@ -355,7 +355,7 @@ namespace GSF.COMTRADE · 354 unmodified lines
355 int index = 0;355 int index = 0;
356 356
357 // Read sample index357 // Read sample index
358 uint sample = EndianOrder.LittleEndian.ToUInt32(buffer, index);358 uint sample = LittleEndian.ToUInt32(buffer, index);
359 index += 4;359 index += 4;
360 360
361 // Get timestamp of this record361 // Get timestamp of this record
@@ -372,7 +372,7 @@ namespace GSF.COMTRADE · 10 unmodified lines
372 }372 }
373 373
374 // Read microsecond timestamp374 // Read microsecond timestamp
375 uint microseconds = EndianOrder.LittleEndian.ToUInt32(buffer, index);375 uint microseconds = LittleEndian.ToUInt32(buffer, index);
376 index += 4;376 index += 4;
377 377
378 // Fall back on specified microsecond time378 // Fall back on specified microsecond time
@@ -383,7 +383,7 @@ namespace GSF.COMTRADE · 4 unmodified lines
383 for (int i = 0; i < m_schema.AnalogChannels.Length; i++)383 for (int i = 0; i < m_schema.AnalogChannels.Length; i++)
384 {384 {
385 // Read next value385 // Read next value
386 m_values[i] = EndianOrder.LittleEndian.ToInt16(buffer, index) * m_schema.AnalogChannels[i].Multiplier + m_schema.AnalogChannels[i].Adder;386 m_values[i] = LittleEndian.ToInt16(buffer, index) * m_schema.AnalogChannels[i].Multiplier + m_schema.AnalogChannels[i].Adder;
387 index += 2;387 index += 2;
388 }388 }
389 389
@@ -394,7 +394,7 @@ namespace GSF.COMTRADE · 4 unmodified lines
394 for (int i = 0; i < digitalWords; i++)394 for (int i = 0; i < digitalWords; i++)
395 {395 {
396 // Read next digital word396 // Read next digital word
397 digitalWord = EndianOrder.LittleEndian.ToUInt16(buffer, index);397 digitalWord = LittleEndian.ToUInt16(buffer, index);
398 index += 2;398 index += 2;
399 399
400 // Distribute each bit of digital word through next 16 digital values400 // Distribute each bit of digital word through next 16 digital values
Source/Libraries/GSF.COMTRADE/Writer.cs+5−5
@@ -412,8 +412,8 @@ namespace GSF.COMTRADE · 411 unmodified lines
412 double value;412 double value;
413 bool isFirstDigital = true;413 bool isFirstDigital = true;
414 414
415 output.Write(EndianOrder.LittleEndian.GetBytes(sample), 0, 4);415 output.Write(LittleEndian.GetBytes(sample), 0, 4);
416 output.Write(EndianOrder.LittleEndian.GetBytes(microseconds), 0, 4);416 output.Write(LittleEndian.GetBytes(microseconds), 0, 4);
417 417
418 for (int i = 0; i < values.Length; i++)418 for (int i = 0; i < values.Length; i++)
419 {419 {
@@ -430,15 +430,15 @@ namespace GSF.COMTRADE · 10 unmodified lines
430 isFirstDigital = false;430 isFirstDigital = false;
431 431
432 if (injectFracSecValue)432 if (injectFracSecValue)
433 output.Write(EndianOrder.LittleEndian.GetBytes(fracSecValue), 0, 2);433 output.Write(LittleEndian.GetBytes(fracSecValue), 0, 2);
434 }434 }
435 435
436 output.Write(EndianOrder.LittleEndian.GetBytes((ushort)value), 0, 2);436 output.Write(LittleEndian.GetBytes((ushort)value), 0, 2);
437 }437 }
438 438
439 // Make sure FRACSEC values are injected439 // Make sure FRACSEC values are injected
440 if (isFirstDigital && injectFracSecValue)440 if (isFirstDigital && injectFracSecValue)
441 output.Write(EndianOrder.LittleEndian.GetBytes(fracSecValue), 0, 2);441 output.Write(LittleEndian.GetBytes(fracSecValue), 0, 2);
442 }442 }
443 }443 }
444}444}
Source/Libraries/GSF.Communication/Payload.cs+1−1
@@ -73,7 +73,7 @@ namespace GSF.Communication · 72 unmodified lines
73 Buffer.BlockCopy(marker, 0, result, 0, marker.Length);73 Buffer.BlockCopy(marker, 0, result, 0, marker.Length);
74 74
75 // Then, copy the payload's size to the buffer after the payload marker75 // Then, copy the payload's size to the buffer after the payload marker
76 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(length), 0, result, marker.Length, LengthSegment);76 Buffer.BlockCopy(LittleEndian.GetBytes(length), 0, result, marker.Length, LengthSegment);
77 77
78 // At last, copy the payload after the payload marker and payload size78 // At last, copy the payload after the payload marker and payload size
79 Buffer.BlockCopy(buffer, offset, result, marker.Length + LengthSegment, length);79 Buffer.BlockCopy(buffer, offset, result, marker.Length + LengthSegment, length);
Source/Libraries/GSF.Communication/Radius/RadiusPacket.cs+16−24
@@ -208,10 +208,10 @@ namespace GSF.Communication.Radius · 207 unmodified lines
208 }208 }
209 set209 set
210 {210 {
211 if (value == null)211 if ((object)value == null)
212 throw new ArgumentNullException("value");212 throw new ArgumentNullException("value");
213 213
214 if (value == null || value.Length != 16)214 if ((object)value == null || value.Length != 16)
215 throw new ArgumentException("Value must 16-byte long.");215 throw new ArgumentException("Value must 16-byte long.");
216 216
217 m_authenticator = value;217 m_authenticator = value;
@@ -263,7 +263,7 @@ namespace GSF.Communication.Radius · 45 unmodified lines
263 /// <exception cref="ArgumentNullException"><paramref name="buffer"/> is null.</exception>263 /// <exception cref="ArgumentNullException"><paramref name="buffer"/> is null.</exception>
264 public int ParseBinaryImage(byte[] buffer, int startIndex, int length)264 public int ParseBinaryImage(byte[] buffer, int startIndex, int length)
265 {265 {
266 if (buffer == null)266 if ((object)buffer == null)
267 throw new ArgumentNullException("buffer");267 throw new ArgumentNullException("buffer");
268 268
269 int imageLength = BinaryLength;269 int imageLength = BinaryLength;
@@ -289,11 +289,9 @@ namespace GSF.Communication.Radius · 19 unmodified lines
289 289
290 return imageLength;290 return imageLength;
291 }291 }
292 else292
293 {293 // Binary image does not have sufficient data.
294 // Binary image does not have sufficient data.294 return 0;
295 return 0;
296 }
297 }295 }
298 296
299 /// <summary>297 /// <summary>
@@ -393,7 +391,7 @@ namespace GSF.Communication.Radius · 93 unmodified lines
393 // where:391 // where:
394 // Code, Identifier, Length & Attributes are from the response RADIUS packet392 // Code, Identifier, Length & Attributes are from the response RADIUS packet
395 // Request Authenticator is from the request RADIUS packet393 // Request Authenticator is from the request RADIUS packet
396 // Shared Secret is the shared secret ket394 // Shared Secret is the shared secret key
397 int length = responsePacket.BinaryLength;395 int length = responsePacket.BinaryLength;
398 byte[] sharedSecretBytes = Encoding.GetBytes(sharedSecret);396 byte[] sharedSecretBytes = Encoding.GetBytes(sharedSecret);
399 byte[] buffer = BufferPool.TakeBuffer(length + sharedSecretBytes.Length);397 byte[] buffer = BufferPool.TakeBuffer(length + sharedSecretBytes.Length);
@@ -408,7 +406,7 @@ namespace GSF.Communication.Radius · 8 unmodified lines
408 }406 }
409 finally407 finally
410 {408 {
411 if (buffer != null)409 if ((object)buffer != null)
412 BufferPool.ReturnBuffer(buffer);410 BufferPool.ReturnBuffer(buffer);
413 }411 }
414 }412 }
@@ -423,21 +421,15 @@ namespace GSF.Communication.Radius · 8 unmodified lines
423 public static byte[] EncryptPassword(string password, string sharedSecret, byte[] requestAuthenticator)421 public static byte[] EncryptPassword(string password, string sharedSecret, byte[] requestAuthenticator)
424 {422 {
425 // Avoiding Null Dereferences423 // Avoiding Null Dereferences
426 if ((string.IsNullOrEmpty(sharedSecret)))424 if (string.IsNullOrEmpty(sharedSecret))
427 {425 throw new ArgumentException("Shared secret cannot be null or empty.");
428 throw new ArgumentException("Shared secret cannot be null or empty.");
429 }
430 426
431 if ((string.IsNullOrEmpty(password)))427 if (string.IsNullOrEmpty(password))
432 {
433 throw new ArgumentException("Password cannot be null or empty.");428 throw new ArgumentException("Password cannot be null or empty.");
434 }
435 429
436 if ((object)requestAuthenticator == null)430 if ((object)requestAuthenticator == null)
437 {
438 throw new ArgumentException("Request authenticator cannot be null.");431 throw new ArgumentException("Request authenticator cannot be null.");
439 }432
440
441 // Max length of the password can be 130 according to RFC 2865. Since 128 is the closest multiple433 // Max length of the password can be 130 according to RFC 2865. Since 128 is the closest multiple
442 // of 16 (password segment length), we allow the password to be no longer than 128 characters.434 // of 16 (password segment length), we allow the password to be no longer than 128 characters.
443 if (password.Length <= 128)435 if (password.Length <= 128)
@@ -479,8 +471,10 @@ namespace GSF.Communication.Radius · 35 unmodified lines
479 // For passwords that are more than 16 characters in length, each consecutive 16-byte471 // For passwords that are more than 16 characters in length, each consecutive 16-byte
480 // segment of the password is XORed with MD5 hash value that's computed as follows:472 // segment of the password is XORed with MD5 hash value that's computed as follows:
481 // MD5(Shared secret key + XOR bytes used in the previous segment)473 // MD5(Shared secret key + XOR bytes used in the previous segment)
474 // ReSharper disable once PossibleNullReferenceException
482 Buffer.BlockCopy(xorBytes, 0, md5HashInputBytes, sharedSecretBytes.Length, xorBytes.Length);475 Buffer.BlockCopy(xorBytes, 0, md5HashInputBytes, sharedSecretBytes.Length, xorBytes.Length);
483 }476 }
477
484 xorBytes = md5Provider.ComputeHash(md5HashInputBytes);478 xorBytes = md5Provider.ComputeHash(md5HashInputBytes);
485 479
486 // XOR the password bytes in the current segment with the XOR bytes.480 // XOR the password bytes in the current segment with the XOR bytes.
@@ -492,10 +486,8 @@ namespace GSF.Communication.Radius · 5 unmodified lines
492 486
493 return result;487 return result;
494 }488 }
495 else489
496 {490 throw new ArgumentException("Password can be a maximum of 128 characters in length.");
497 throw new ArgumentException("Password can be a maximum of 128 characters in length.");
498 }
499 }491 }
500 492
501 #endregion493 #endregion
Source/Libraries/GSF.Communication/Radius/RadiusPacketAttribute.cs+2−2
@@ -323,7 +323,7 @@ namespace GSF.Communication.Radius · 322 unmodified lines
323 set323 set
324 {324 {
325 // By definition, attribute value cannot be null or zero-length.325 // By definition, attribute value cannot be null or zero-length.
326 if (value == null || value.Length == 0)326 if ((object)value == null || value.Length == 0)
327 throw new ArgumentNullException("value");327 throw new ArgumentNullException("value");
328 328
329 m_value = value;329 m_value = value;
@@ -359,7 +359,7 @@ namespace GSF.Communication.Radius · 29 unmodified lines
359 /// <exception cref="ArgumentNullException"><paramref name="buffer"/> is null.</exception>359 /// <exception cref="ArgumentNullException"><paramref name="buffer"/> is null.</exception>
360 public int ParseBinaryImage(byte[] buffer, int startIndex, int length)360 public int ParseBinaryImage(byte[] buffer, int startIndex, int length)
361 {361 {
362 if (buffer == null)362 if ((object)buffer == null)
363 throw new ArgumentNullException("buffer");363 throw new ArgumentNullException("buffer");
364 364
365 int imageLength = BinaryLength;365 int imageLength = BinaryLength;
Source/Libraries/GSF.Communication/TcpClient.cs+1−1
@@ -301,7 +301,7 @@ namespace GSF.Communication · 300 unmodified lines
301 }301 }
302 set302 set
303 {303 {
304 if (value == null || value.Length == 0)304 if ((object)value == null || value.Length == 0)
305 throw new ArgumentNullException("value");305 throw new ArgumentNullException("value");
306 306
307 m_payloadMarker = value;307 m_payloadMarker = value;
Source/Libraries/GSF.Communication/TcpServer.cs+1−1
@@ -301,7 +301,7 @@ namespace GSF.Communication · 300 unmodified lines
301 }301 }
302 set302 set
303 {303 {
304 if (value == null || value.Length == 0)304 if ((object)value == null || value.Length == 0)
305 throw new ArgumentNullException("value");305 throw new ArgumentNullException("value");
306 306
307 m_payloadMarker = value;307 m_payloadMarker = value;
Source/Libraries/GSF.Communication/TlsClient.cs+4−4
@@ -23,9 +23,6 @@ · 22 unmodified lines
23//23//
24//******************************************************************************************************24//******************************************************************************************************
25 25
26using GSF.Configuration;
27using GSF.IO;
28using GSF.Net.Security;
29using System;26using System;
30using System.Collections.Concurrent;27using System.Collections.Concurrent;
31using System.Collections.Generic;28using System.Collections.Generic;
@@ -39,6 +36,9 @@ using System.Security.Authentication; · 7 unmodified lines
39using System.Security.Cryptography.X509Certificates;36using System.Security.Cryptography.X509Certificates;
40using System.Text.RegularExpressions;37using System.Text.RegularExpressions;
41using System.Threading;38using System.Threading;
39using GSF.Configuration;
40using GSF.IO;
41using GSF.Net.Security;
42 42
43namespace GSF.Communication43namespace GSF.Communication
44{44{
@@ -215,7 +215,7 @@ namespace GSF.Communication · 170 unmodified lines
215 }215 }
216 set216 set
217 {217 {
218 if (value == null || value.Length == 0)218 if ((object)value == null || value.Length == 0)
219 throw new ArgumentNullException("value");219 throw new ArgumentNullException("value");
220 220
221 m_payloadMarker = value;221 m_payloadMarker = value;
Source/Libraries/GSF.Communication/TlsServer.cs+4−4
@@ -23,9 +23,6 @@ · 22 unmodified lines
23//23//
24//******************************************************************************************************24//******************************************************************************************************
25 25
26using GSF.Configuration;
27using GSF.IO;
28using GSF.Net.Security;
29using System;26using System;
30using System.Collections.Concurrent;27using System.Collections.Concurrent;
31using System.Collections.Generic;28using System.Collections.Generic;
@@ -39,6 +36,9 @@ using System.Security.Authentication; · 7 unmodified lines
39using System.Security.Cryptography.X509Certificates;36using System.Security.Cryptography.X509Certificates;
40using System.Security.Principal;37using System.Security.Principal;
41using System.Threading;38using System.Threading;
39using GSF.Configuration;
40using GSF.IO;
41using GSF.Net.Security;
42 42
43#if MONO43#if MONO
44#pragma warning disable 64944#pragma warning disable 649
@@ -251,7 +251,7 @@ namespace GSF.Communication · 206 unmodified lines
251 }251 }
252 set252 set
253 {253 {
254 if (value == null || value.Length == 0)254 if ((object)value == null || value.Length == 0)
255 throw new ArgumentNullException("value");255 throw new ArgumentNullException("value");
256 256
257 m_payloadMarker = value;257 m_payloadMarker = value;
Source/Libraries/GSF.Core/Collections/ListCollection.cs+84−55
@@ -22,40 +22,48 @@ · 21 unmodified lines
22//******************************************************************************************************22//******************************************************************************************************
23 23
24using System;24using System;
25using System.Collections;
26using System.Collections.Generic;25using System.Collections.Generic;
27using System.Collections.ObjectModel;26using System.Collections.ObjectModel;
28 27
29namespace GSF.Collections28namespace GSF.Collections
30{29{
31 /// <summary>30 /// <summary>
32 /// An faster and functionally equivalent implementation of <see cref="Collection{T}"/> 31 /// A faster and functionally equivalent implementation of <see cref="Collection{T}"/>
33 /// </summary>32 /// </summary>
34 /// <typeparam name="T">The type of the element in the collection</typeparam>33 /// <typeparam name="T">The type of the element in the collection</typeparam>
35 /// <remarks>34 /// <remarks>
35 /// <para>
36 /// <see cref="Collection{T}"/> is based upon an <see cref="IList{T}"/>. This means any simple call36 /// <see cref="Collection{T}"/> is based upon an <see cref="IList{T}"/>. This means any simple call
37 /// to the class is a function call that cannot be inlined. This implementation forces the underlying37 /// to the class is a function call that cannot be in-lined. This implementation forces the underlying
38 /// item to be <see cref="List{T}"/> and shadows many of the methods to call <see cref="List{T}"/> 38 /// item to be <see cref="List{T}"/> and shadows many of the methods to call <see cref="List{T}"/>
39 /// instead of <see cref="IList{T}"/>. 39 /// instead of <see cref="IList{T}"/>.
40 /// 40 /// </para>
41 /// <para>
41 /// Since this class references the same underlying <see cref="List{T}"/> object, it can be 42 /// Since this class references the same underlying <see cref="List{T}"/> object, it can be
42 /// successfully implemented as a <see cref="ListCollection{T}"/> or casted it its underlying type43 /// successfully implemented as a <see cref="ListCollection{T}"/> or casted it its underlying type
43 /// <see cref="Collection{T}"/>.44 /// <see cref="Collection{T}"/>.
44 /// 45 /// </para>
46 /// <para>
45 /// Profiling this class yield a ForEach loop and For loop that executes between 47 /// Profiling this class yield a ForEach loop and For loop that executes between
46 /// 2-4 times faster than <see cref="Collection{T}"/>. This depends on the number of items in the48 /// 2-4 times faster than <see cref="Collection{T}"/>. This depends on the number of items in the
47 /// list. The fewer the faster. Other operations such as Add/Insert/Remove are closer to 50% faster.49 /// list. The fewer the faster. Other operations such as Add/Insert/Remove are closer to 50% faster.
48 /// Count is now inlined (~20 times faster).50 /// Count is now in-lined (~20 times faster).
49 /// 51 /// </para>
52 /// <para>
50 /// This performance is negated if accessing this class via the IList interface. When possible, use53 /// This performance is negated if accessing this class via the IList interface. When possible, use
51 /// only strongly typed names.54 /// only strongly typed names.
55 /// </para>
52 /// </remarks>56 /// </remarks>
53 public class ListCollection<T> : Collection<T>, IList<T>, ICollection<T>, IList, ICollection, IReadOnlyList<T>, IReadOnlyCollection<T>, IEnumerable<T>, IEnumerable57 public class ListCollection<T> : Collection<T>
54 {58 {
55 /// <summary>59 #region [ Members ]
56 /// A strongly typed reference of <see cref="Item"/>60
57 /// </summary>61 // Fields
58 private readonly List<T> m_list;62 private readonly List<T> m_list; // Strongly typed reference to Items collection
63
64 #endregion
65
66 #region [ Constructors ]
59 67
60 /// <summary>68 /// <summary>
61 /// Creates a <see cref="ListCollection{T}"/>69 /// Creates a <see cref="ListCollection{T}"/>
@@ -75,12 +83,15 @@ namespace GSF.Collections · 13 unmodified lines
75 {83 {
76 }84 }
77 85
86 #endregion
87
88 #region [ Properties ]
78 89
79 /// <summary>90 /// <summary>
80 /// Gets the number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1"/>.91 /// Gets the number of elements contained in the <see cref="ICollection{T}"/>.
81 /// </summary>92 /// </summary>
82 /// <returns>93 /// <returns>
83 /// The number of elements contained in the <see cref="T:System.Collections.Generic.ICollection`1"/>.94 /// The number of elements contained in the <see cref="ICollection{T}"/>.
84 /// </returns>95 /// </returns>
85 public new int Count96 public new int Count
86 {97 {
@@ -97,10 +108,8 @@ namespace GSF.Collections · 10 unmodified lines
97 /// The element at the specified index.108 /// The element at the specified index.
98 /// </returns>109 /// </returns>
99 /// <param name="index">The zero-based index of the element to get or set.</param>110 /// <param name="index">The zero-based index of the element to get or set.</param>
100 /// <exception cref="T:System.ArgumentOutOfRangeException">111 /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is not a valid index in the <see cref="IList{T}"/>.</exception>
101 /// <paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>. </exception>112 /// <exception cref="NotSupportedException">The property is set and the <see cref="IList{T}"/> is read-only.</exception>
102 /// <exception cref="T:System.NotSupportedException">
103 /// The property is set and the <see cref="T:System.Collections.Generic.IList`1"/> is read-only. </exception>
104 public new T this[int index]113 public new T this[int index]
105 {114 {
106 get115 get
@@ -111,16 +120,16 @@ namespace GSF.Collections · 4 unmodified lines
111 {120 {
112 if (index < 0 || index >= m_list.Count)121 if (index < 0 || index >= m_list.Count)
113 ThrowOutOfRangeException();122 ThrowOutOfRangeException();
123
114 SetItem(index, value);124 SetItem(index, value);
115 }125 }
116 }126 }
117 127
118 /// <summary>128 /// <summary>
119 /// Gets a <see cref="T:System.Collections.Generic.IList`1"/> wrapper around the <see cref="T:System.Collections.ObjectModel.Collection`1"/>.129 /// Gets a <see cref="IList{T}"/> wrapper around the <see cref="Collection{T}"/>.
120 /// </summary>130 /// </summary>
121 ///
122 /// <returns>131 /// <returns>
123 /// A <see cref="T:System.Collections.Generic.IList`1"/> wrapper around the <see cref="T:System.Collections.ObjectModel.Collection`1"/>.132 /// A <see cref="IList{T}"/> wrapper around the <see cref="Collection{T}"/>.
124 /// </returns>133 /// </returns>
125 protected new List<T> Items134 protected new List<T> Items
126 {135 {
@@ -130,28 +139,31 @@ namespace GSF.Collections · 3 unmodified lines
130 }139 }
131 }140 }
132 141
142 #endregion
143
144 #region [ Methods ]
133 145
134 /// <summary>146 /// <summary>
135 /// Adds an item to the <see cref="T:System.Collections.Generic.ICollection`1"/>.147 /// Adds an item to the <see cref="ICollection{T}"/>.
136 /// </summary>148 /// </summary>
137 /// <param name="item">The object to add to the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>149 /// <param name="item">The object to add to the <see cref="ICollection{T}"/>.</param>
138 /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception>150 /// <exception cref="NotSupportedException">The <see cref="ICollection{T}"/> is read-only.</exception>
139 public new void Add(T item)151 public new void Add(T item)
140 {152 {
141 InsertItem(m_list.Count, item);153 InsertItem(m_list.Count, item);
142 }154 }
143 155
144 /// <summary>156 /// <summary>
145 /// Removes all items from the <see cref="T:System.Collections.Generic.ICollection`1"/>.157 /// Removes all items from the <see cref="ICollection{T}"/>.
146 /// </summary>158 /// </summary>
147 /// <exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only. </exception>159 /// <exception cref="NotSupportedException">The <see cref="ICollection{T}"/> is read-only. </exception>
148 public new void Clear()160 public new void Clear()
149 {161 {
150 ClearItems();162 ClearItems();
151 }163 }
152 164
153 /// <summary>165 /// <summary>
154 /// Removes all elements from the <see cref="T:System.Collections.ObjectModel.Collection`1"/>.166 /// Removes all elements from the <see cref="Collection{T}"/>.
155 /// </summary>167 /// </summary>
156 protected override void ClearItems()168 protected override void ClearItems()
157 {169 {
@@ -159,33 +171,37 @@ namespace GSF.Collections · 1 unmodified line
159 }171 }
160 172
161 /// <summary>173 /// <summary>
162 /// Determines whether the <see cref="T:System.Collections.Generic.ICollection`1"/> contains a specific value.174 /// Determines whether the <see cref="ICollection{T}"/> contains a specific value.
163 /// </summary>175 /// </summary>
164 /// <returns>176 /// <returns>
165 /// true if <paramref name="item"/> is found in the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false.177 /// true if <paramref name="item"/> is found in the <see cref="ICollection{T}"/>; otherwise, false.
166 /// </returns>178 /// </returns>
167 /// <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param>179 /// <param name="item">The object to locate in the <see cref="ICollection{T}"/>.</param>
168 public new bool Contains(T item)180 public new bool Contains(T item)
169 {181 {
170 return m_list.Contains(item);182 return m_list.Contains(item);
171 }183 }
172 184
173 /// <summary>185 /// <summary>
174 /// Copies the elements of the <see cref="T:System.Collections.Generic.ICollection`1"/> to an <see cref="T:System.Array"/>, starting at a particular <see cref="T:System.Array"/> index.186 /// Copies the elements of the <see cref="ICollection{T}"/> to an <see cref="Array"/>, starting at a particular <see cref="Array"/> index.
175 /// </summary>187 /// </summary>
176 /// <param name="array">The one-dimensional <see cref="T:System.Array"/> that is the destination of the elements copied from <see cref="T:System.Collections.Generic.ICollection`1"/>. 188 /// <param name="array">
177 /// The <see cref="T:System.Array"/> must have zero-based indexing.</param><param name="index">The zero-based index in 189 /// The one-dimensional <see cref="Array"/> that is the destination of the elements copied from <see cref="ICollection{T}"/>.
178 /// <paramref name="array"/> at which copying begins.</param><exception cref="T:System.ArgumentNullException"><paramref name="array"/> is null.</exception><exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is less than 0.</exception><exception cref="T:System.ArgumentException">The number of elements in the source <see cref="T:System.Collections.Generic.ICollection`1"/> is greater than the available space from <paramref name="index"/> to the end of the destination <paramref name="array"/>.</exception>190 /// The <see cref="Array"/> must have zero-based indexing.</param><param name="index">The zero-based index in <paramref name="array"/> at which copying begins.
191 /// </param>
192 /// <exception cref="ArgumentNullException"><paramref name="array"/> is null.</exception>
193 /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than 0.</exception>
194 /// <exception cref="ArgumentException">The number of elements in the source <see cref="ICollection{T}"/> is greater than the available space from <paramref name="index"/> to the end of the destination <paramref name="array"/>.</exception>
179 public new void CopyTo(T[] array, int index)195 public new void CopyTo(T[] array, int index)
180 {196 {
181 m_list.CopyTo(array, index);197 m_list.CopyTo(array, index);
182 }198 }
183 199
184 /// <summary>200 /// <summary>
185 /// Returns an enumerator that iterates through the <see cref="T:System.Collections.ObjectModel.Collection`1"/>.201 /// Returns an enumerator that iterates through the <see cref="Collection{T}"/>.
186 /// </summary>202 /// </summary>
187 /// <returns>203 /// <returns>
188 /// An <see cref="T:System.Collections.Generic.IEnumerator`1"/> for the <see cref="T:System.Collections.ObjectModel.Collection`1"/>.204 /// An <see cref="IEnumerator{T}"/> for the <see cref="Collection{T}"/>.
189 /// </returns>205 /// </returns>
190 public new List<T>.Enumerator GetEnumerator()206 public new List<T>.Enumerator GetEnumerator()
191 {207 {
@@ -193,70 +209,81 @@ namespace GSF.Collections · 1 unmodified line
193 }209 }
194 210
195 /// <summary>211 /// <summary>
196 /// Determines the index of a specific item in the <see cref="T:System.Collections.Generic.IList`1"/>.212 /// Determines the index of a specific item in the <see cref="IList{T}"/>.
197 /// </summary>213 /// </summary>
198 /// <returns>214 /// <returns>
199 /// The index of <paramref name="item"/> if found in the list; otherwise, -1.215 /// The index of <paramref name="item"/> if found in the list; otherwise, -1.
200 /// </returns>216 /// </returns>
201 /// <param name="item">The object to locate in the <see cref="T:System.Collections.Generic.IList`1"/>.</param>217 /// <param name="item">The object to locate in the <see cref="IList{T}"/>.</param>
202 public new int IndexOf(T item)218 public new int IndexOf(T item)
203 {219 {
204 return m_list.IndexOf(item);220 return m_list.IndexOf(item);
205 }221 }
206 222
207 /// <summary>223 /// <summary>
208 /// Inserts an item to the <see cref="T:System.Collections.Generic.IList`1"/> at the specified index.224 /// Inserts an item to the <see cref="IList{T}"/> at the specified index.
209 /// </summary>225 /// </summary>
210 /// <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param><param name="item">The object to insert into the <see cref="T:System.Collections.Generic.IList`1"/>.</param><exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is not a valid index in the <see cref="T:System.Collections.Generic.IList`1"/>.</exception><exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.IList`1"/> is read-only.</exception>226 /// <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
227 /// <param name="item">The object to insert into the <see cref="IList{T}"/>.</param>
228 /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is not a valid index in the <see cref="IList{T}"/>.</exception>
229 /// <exception cref="NotSupportedException">The <see cref="IList{T}"/> is read-only.</exception>
211 public new void Insert(int index, T item)230 public new void Insert(int index, T item)
212 {231 {
213 if (index < 0 || index > m_list.Count)232 if (index < 0 || index > m_list.Count)
214 ThrowOutOfRangeException();233 ThrowOutOfRangeException();
234
215 InsertItem(index, item);235 InsertItem(index, item);
216 }236 }
217 237
218 /// <summary>238 /// <summary>
219 /// Inserts an element into the <see cref="T:System.Collections.ObjectModel.Collection`1"/> at the specified index.239 /// Inserts an element into the <see cref="Collection{T}"/> at the specified index.
220 /// </summary>240 /// </summary>
221 /// <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param><param name="item">The object to insert. The value can be null for reference types.</param><exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.-or-<paramref name="index"/> is greater than <see cref="P:System.Collections.ObjectModel.Collection`1.Count"/>.</exception>241 /// <param name="index">The zero-based index at which <paramref name="item"/> should be inserted.</param>
242 /// <param name="item">The object to insert. The value can be null for reference types.</param>
243 /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.-or-<paramref name="index"/> is greater than <see cref="Collection{T}.Count"/>.</exception>
222 protected override void InsertItem(int index, T item)244 protected override void InsertItem(int index, T item)
223 {245 {
224 m_list.Insert(index, item);246 m_list.Insert(index, item);
225 }247 }
226 248
227 /// <summary>249 /// <summary>
228 /// Removes the first occurrence of a specific object from the <see cref="T:System.Collections.Generic.ICollection`1"/>.250 /// Removes the first occurrence of a specific object from the <see cref="ICollection{T}"/>.
229 /// </summary>251 /// </summary>
230 /// <returns>252 /// <returns>
231 /// true if <paramref name="item"/> was successfully removed from the <see cref="T:System.Collections.Generic.ICollection`1"/>; otherwise, false. This method also returns false if <paramref name="item"/> is not found in the original <see cref="T:System.Collections.Generic.ICollection`1"/>.253 /// true if <paramref name="item"/> was successfully removed from the <see cref="ICollection{T}"/>; otherwise, false. This method also returns false if <paramref name="item"/> is not found in the original <see cref="ICollection{T}"/>.
232 /// </returns>254 /// </returns>
233 /// <param name="item">The object to remove from the <see cref="T:System.Collections.Generic.ICollection`1"/>.</param><exception cref="T:System.NotSupportedException">The <see cref="T:System.Collections.Generic.ICollection`1"/> is read-only.</exception>255 /// <param name="item">The object to remove from the <see cref="ICollection{T}"/>.</param>
256 /// <exception cref="NotSupportedException">The <see cref="ICollection{T}"/> is read-only.</exception>
234 public new bool Remove(T item)257 public new bool Remove(T item)
235 {258 {
236 int index = m_list.IndexOf(item);259 int index = m_list.IndexOf(item);
260
237 if (index < 0)261 if (index < 0)
238 {
239 return false;262 return false;
240 }263
241 RemoveItem(index);264 RemoveItem(index);
265
242 return true;266 return true;
243 }267 }
244 268
245 /// <summary>269 /// <summary>
246 /// Removes the element at the specified index of the <see cref="T:System.Collections.ObjectModel.Collection`1"/>.270 /// Removes the element at the specified index of the <see cref="Collection{T}"/>.
247 /// </summary>271 /// </summary>
248 /// <param name="index">The zero-based index of the element to remove.</param><exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.-or-<paramref name="index"/> is equal to or greater than <see cref="P:System.Collections.ObjectModel.Collection`1.Count"/>.</exception>272 /// <param name="index">The zero-based index of the element to remove.</param>
273 /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.-or-<paramref name="index"/> is equal to or greater than <see cref="Collection{T}.Count"/>.</exception>
249 public new void RemoveAt(int index)274 public new void RemoveAt(int index)
250 {275 {
251 if (index < 0 || index >= m_list.Count)276 if (index < 0 || index >= m_list.Count)
252 ThrowOutOfRangeException();277 ThrowOutOfRangeException();
278
253 RemoveItem(index);279 RemoveItem(index);
254 }280 }
255 281
256 /// <summary>282 /// <summary>
257 /// Removes the element at the specified index of the <see cref="T:System.Collections.ObjectModel.Collection`1"/>.283 /// Removes the element at the specified index of the <see cref="Collection{T}"/>.
258 /// </summary>284 /// </summary>
259 /// <param name="index">The zero-based index of the element to remove.</param><exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.-or-<paramref name="index"/> is equal to or greater than <see cref="P:System.Collections.ObjectModel.Collection`1.Count"/>.</exception>285 /// <param name="index">The zero-based index of the element to remove.</param>
286 /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.-or-<paramref name="index"/> is equal to or greater than <see cref="Collection{T}.Count"/>.</exception>
260 protected override void RemoveItem(int index)287 protected override void RemoveItem(int index)
261 {288 {
262 m_list.RemoveAt(index);289 m_list.RemoveAt(index);
@@ -265,18 +292,20 @@ namespace GSF.Collections · 2 unmodified lines
265 /// <summary>292 /// <summary>
266 /// Replaces the element at the specified index.293 /// Replaces the element at the specified index.
267 /// </summary>294 /// </summary>
268 /// <param name="index">The zero-based index of the element to replace.</param><param name="item">The new value for the element at the specified index. The value can be null for reference types.</param><exception cref="T:System.ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.-or-<paramref name="index"/> is greater than <see cref="P:System.Collections.ObjectModel.Collection`1.Count"/>.</exception>295 /// <param name="index">The zero-based index of the element to replace.</param>
296 /// <param name="item">The new value for the element at the specified index. The value can be null for reference types.</param>
297 /// <exception cref="ArgumentOutOfRangeException"><paramref name="index"/> is less than zero.-or-<paramref name="index"/> is greater than <see cref="Collection{T}.Count"/>.</exception>
269 protected override void SetItem(int index, T item)298 protected override void SetItem(int index, T item)
270 {299 {
271 m_list[index] = item;300 m_list[index] = item;
272 }301 }
273 302
274 303 private static void ThrowOutOfRangeException()
275 void ThrowOutOfRangeException()
276 {304 {
305 // ReSharper disable once NotResolvedInText
277 throw new ArgumentOutOfRangeException("index");306 throw new ArgumentOutOfRangeException("index");
278 }307 }
279 308
309 #endregion
280 }310 }
281
282}311}
Source/Libraries/GSF.Core/Configuration/ConnectionStringParser.cs+3−3
@@ -62,7 +62,7 @@ namespace GSF.Configuration · 61 unmodified lines
62 /// The name of the property as it appears in the connection string.62 /// The name of the property as it appears in the connection string.
63 /// </summary>63 /// </summary>
64 public string[] Names;64 public string[] Names;
65 65
66 /// <summary>66 /// <summary>
67 /// The default value of the property if its value67 /// The default value of the property if its value
68 /// is not explicitly specified in the connection string.68 /// is not explicitly specified in the connection string.
@@ -275,7 +275,7 @@ namespace GSF.Configuration · 206 unmodified lines
275 Dictionary<string, string> settings;275 Dictionary<string, string> settings;
276 276
277 // Null objects don't have properties277 // Null objects don't have properties
278 if (settingsObject == null)278 if ((object)settingsObject == null)
279 return string.Empty;279 return string.Empty;
280 280
281 // Get the set of properties which are part of the connection string281 // Get the set of properties which are part of the connection string
@@ -307,7 +307,7 @@ namespace GSF.Configuration · 25 unmodified lines
307 string value;307 string value;
308 308
309 // Null objects don't have properties309 // Null objects don't have properties
310 if (settingsObject == null)310 if ((object)settingsObject == null)
311 throw new ArgumentNullException("settingsObject", "Unable to parse connection string because settings object is invalid.");311 throw new ArgumentNullException("settingsObject", "Unable to parse connection string because settings object is invalid.");
312 312
313 // Get the set of properties which are part of the connection string313 // Get the set of properties which are part of the connection string
Source/Libraries/GSF.Core/EndianOrder.cs+14−10
@@ -71,6 +71,7 @@ · 70 unmodified lines
71//#define ForceBigEndianTesting71//#define ForceBigEndianTesting
72 72
73using System;73using System;
74using System.ComponentModel;
74using System.Diagnostics.CodeAnalysis;75using System.Diagnostics.CodeAnalysis;
75 76
76namespace GSF77namespace GSF
@@ -388,7 +389,7 @@ namespace GSF · 311 unmodified lines
388 [SuppressMessage("Microsoft.Performance", "CA1822")]389 [SuppressMessage("Microsoft.Performance", "CA1822")]
389 public bool ToBoolean(byte[] value, int startIndex)390 public bool ToBoolean(byte[] value, int startIndex)
390 {391 {
391 if (value == null)392 if ((object)value == null)
392 throw new ArgumentNullException("value");393 throw new ArgumentNullException("value");
393 394
394 return value[startIndex] != 0;395 return value[startIndex] != 0;
@@ -431,7 +432,7 @@ namespace GSF · 36 unmodified lines
431 /// <exception cref="ArgumentOutOfRangeException">startIndex is less than zero or greater than the length of value minus 1.</exception>432 /// <exception cref="ArgumentOutOfRangeException">startIndex is less than zero or greater than the length of value minus 1.</exception>
432 public short ToInt16(byte[] value, int startIndex)433 public short ToInt16(byte[] value, int startIndex)
433 {434 {
434 if (value == null)435 if ((object)value == null)
435 throw new ArgumentNullException("value");436 throw new ArgumentNullException("value");
436 437
437 if (m_targetIsLittleEndian)438 if (m_targetIsLittleEndian)
@@ -467,7 +468,7 @@ namespace GSF · 29 unmodified lines
467 /// <exception cref="ArgumentOutOfRangeException">startIndex is less than zero or greater than the length of value minus 1.</exception>468 /// <exception cref="ArgumentOutOfRangeException">startIndex is less than zero or greater than the length of value minus 1.</exception>
468 public unsafe int ToInt32(byte[] value, int startIndex)469 public unsafe int ToInt32(byte[] value, int startIndex)
469 {470 {
470 if (value == null)471 if ((object)value == null)
471 throw new ArgumentNullException("value");472 throw new ArgumentNullException("value");
472 473
473 if (startIndex < 0)474 if (startIndex < 0)
@@ -504,7 +505,7 @@ namespace GSF · 30 unmodified lines
504 /// <exception cref="ArgumentOutOfRangeException">startIndex is less than zero or greater than the length of value minus 1.</exception>505 /// <exception cref="ArgumentOutOfRangeException">startIndex is less than zero or greater than the length of value minus 1.</exception>
505 public unsafe long ToInt64(byte[] value, int startIndex)506 public unsafe long ToInt64(byte[] value, int startIndex)
506 {507 {
507 if (value == null)508 if ((object)value == null)
508 throw new ArgumentNullException("value");509 throw new ArgumentNullException("value");
509 510
510 if (startIndex < 0)511 if (startIndex < 0)
@@ -618,6 +619,7 @@ namespace GSF · 107 unmodified lines
618 /// <exception cref="ArgumentNullException">value is null.</exception>619 /// <exception cref="ArgumentNullException">value is null.</exception>
619 /// <exception cref="ArgumentOutOfRangeException">startIndex is less than zero or greater than the length of value minus 1.</exception>620 /// <exception cref="ArgumentOutOfRangeException">startIndex is less than zero or greater than the length of value minus 1.</exception>
620 [Obsolete("This method may be removed from future builds", false)]621 [Obsolete("This method may be removed from future builds", false)]
622 [EditorBrowsable(EditorBrowsableState.Never)]
621 public Guid ToGuid(byte[] value, int startIndex)623 public Guid ToGuid(byte[] value, int startIndex)
622 {624 {
623 if (TargetEndianness == Endianness.BigEndian)625 if (TargetEndianness == Endianness.BigEndian)
@@ -849,12 +851,13 @@ namespace GSF · 225 unmodified lines
849 /// <param name="value">The number to convert.</param>851 /// <param name="value">The number to convert.</param>
850 /// <returns>An array of bytes with length 16.</returns>852 /// <returns>An array of bytes with length 16.</returns>
851 [Obsolete("This method may be removed from future builds", false)]853 [Obsolete("This method may be removed from future builds", false)]
854 [EditorBrowsable(EditorBrowsableState.Never)]
852 public byte[] GetBytes(Guid value)855 public byte[] GetBytes(Guid value)
853 {856 {
854 if (TargetEndianness == Endianness.BigEndian)857 if (TargetEndianness == Endianness.BigEndian)
855 return GuidExtensions.__ToBigEndianOrderBytes(value);858 return GuidExtensions.__ToBigEndianOrderBytes(value);
856 else859
857 return GuidExtensions.__ToLittleEndianOrderBytes(value);860 return GuidExtensions.__ToLittleEndianOrderBytes(value);
858 }861 }
859 862
860 /// <summary>863 /// <summary>
@@ -910,7 +913,7 @@ namespace GSF · 49 unmodified lines
910 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>913 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>
911 public int CopyBytes(bool value, byte[] destinationArray, int destinationIndex)914 public int CopyBytes(bool value, byte[] destinationArray, int destinationIndex)
912 {915 {
913 if (destinationArray == null)916 if ((object)destinationArray == null)
914 throw new ArgumentNullException("destinationArray");917 throw new ArgumentNullException("destinationArray");
915 918
916 if (value)919 if (value)
@@ -954,7 +957,7 @@ namespace GSF · 37 unmodified lines
954 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>957 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>
955 public int CopyBytes(short value, byte[] destinationArray, int destinationIndex)958 public int CopyBytes(short value, byte[] destinationArray, int destinationIndex)
956 {959 {
957 if (destinationArray == null)960 if ((object)destinationArray == null)
958 throw new ArgumentNullException("destinationArray");961 throw new ArgumentNullException("destinationArray");
959 962
960 if (m_targetIsLittleEndian)963 if (m_targetIsLittleEndian)
@@ -993,7 +996,7 @@ namespace GSF · 32 unmodified lines
993 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>996 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>
994 public unsafe int CopyBytes(int value, byte[] destinationArray, int destinationIndex)997 public unsafe int CopyBytes(int value, byte[] destinationArray, int destinationIndex)
995 {998 {
996 if (destinationArray == null)999 if ((object)destinationArray == null)
997 throw new ArgumentNullException("destinationArray");1000 throw new ArgumentNullException("destinationArray");
998 1001
999 if (destinationIndex < 0)1002 if (destinationIndex < 0)
@@ -1036,7 +1039,7 @@ namespace GSF · 36 unmodified lines
1036 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>1039 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>
1037 public unsafe int CopyBytes(long value, byte[] destinationArray, int destinationIndex)1040 public unsafe int CopyBytes(long value, byte[] destinationArray, int destinationIndex)
1038 {1041 {
1039 if (destinationArray == null)1042 if ((object)destinationArray == null)
1040 throw new ArgumentNullException("destinationArray");1043 throw new ArgumentNullException("destinationArray");
1041 1044
1042 if (destinationIndex < 0)1045 if (destinationIndex < 0)
@@ -1147,6 +1150,7 @@ namespace GSF · 104 unmodified lines
1147 /// <param name="destinationIndex">The byte offset into <paramref name="destinationArray"/>.</param>1150 /// <param name="destinationIndex">The byte offset into <paramref name="destinationArray"/>.</param>
1148 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>1151 /// <returns>Length of bytes copied into array based on size of <paramref name="value"/>.</returns>
1149 [Obsolete("This method may be removed from future builds", false)]1152 [Obsolete("This method may be removed from future builds", false)]
1153 [EditorBrowsable(EditorBrowsableState.Never)]
1150 public int CopyBytes(Guid value, byte[] destinationArray, int destinationIndex)1154 public int CopyBytes(Guid value, byte[] destinationArray, int destinationIndex)
1151 {1155 {
1152 if (TargetEndianness == Endianness.BigEndian)1156 if (TargetEndianness == Endianness.BigEndian)
Source/Libraries/GSF.Core/GuidExtensions.cs+52−58
@@ -22,6 +22,7 @@ · 21 unmodified lines
22//******************************************************************************************************22//******************************************************************************************************
23 23
24using System;24using System;
25using System.ComponentModel;
25 26
26namespace GSF27namespace GSF
27{28{
@@ -30,44 +31,46 @@ namespace GSF · 2 unmodified lines
30 /// </summary>31 /// </summary>
31 public unsafe static class GuidExtensions32 public unsafe static class GuidExtensions
32 {33 {
33
34 /// <summary>34 /// <summary>
35 /// Encodes a <see cref="Guid"/> following RFC 4122.35 /// Encodes a <see cref="Guid"/> following RFC 4122.
36 /// </summary>36 /// </summary>
37 /// <param name="guid">the <see cref="Guid"/> to serialize</param>37 /// <param name="guid">The <see cref="Guid"/> to serialize.</param>
38 /// <param name="buffer">where to store the <see cref="guid"/></param>38 /// <param name="buffer">Destination buffer to hold serialized <paramref name="guid"/>.</param>
39 /// <param name="startingIndex">the starting index in <see cref="buffer"/></param>39 /// <param name="startingIndex">Starting index in <paramref name="buffer"/>.</param>
40 public static int ToRfcBytes(this Guid guid, byte[] buffer, int startingIndex)40 public static int ToRfcBytes(this Guid guid, byte[] buffer, int startingIndex)
41 {41 {
42 //Since Microsoft is not very clear how Guid.ToByteArray() performs on big endian processors42 // Since Microsoft is not very clear how Guid.ToByteArray() performs on big endian processors
43 //we are assuming that the internal structure of a Guid will always be the same. Reviewing mono source code43 // we are assuming that the internal structure of a Guid will always be the same. Reviewing
44 //the internal stucture is also the same.44 // mono source code the internal structure is also the same.
45
46 buffer.ValidateParameters(startingIndex, 16);45 buffer.ValidateParameters(startingIndex, 16);
47 46
48 byte* src = (byte*)&guid;47 byte* src = (byte*)&guid;
48
49 fixed (byte* dst = &buffer[startingIndex])49 fixed (byte* dst = &buffer[startingIndex])
50 {50 {
51 if (BitConverter.IsLittleEndian)51 if (BitConverter.IsLittleEndian)
52 {52 {
53 //Guid._a (int)53 // Guid._a (int)
54 dst[0] = src[3];54 dst[0] = src[3];
55 dst[1] = src[2];55 dst[1] = src[2];
56 dst[2] = src[1];56 dst[2] = src[1];
57 dst[3] = src[0];57 dst[3] = src[0];
58 //Guid._b (short)58
59 // Guid._b (short)
59 dst[4] = src[5];60 dst[4] = src[5];
60 dst[5] = src[4];61 dst[5] = src[4];
61 //Guid._c (short)62
63 // Guid._c (short)
62 dst[6] = src[7];64 dst[6] = src[7];
63 dst[7] = src[6];65 dst[7] = src[6];
64 //Guid._d - Guid._k (8 bytes)66
65 //Since already encoded as big endian, just copy the data.67 // Guid._d - Guid._k (8 bytes)
68 // Since already encoded as big endian, just copy the data
66 *(long*)(dst + 8) = *(long*)(src + 8);69 *(long*)(dst + 8) = *(long*)(src + 8);
67 }70 }
68 else71 else
69 {72 {
70 //all fields are encoded big-endian. Just copy.73 // All fields are encoded big-endian, just copy
71 *(long*)(dst + 0) = *(long*)(src + 0);74 *(long*)(dst + 0) = *(long*)(src + 0);
72 *(long*)(dst + 8) = *(long*)(src + 8);75 *(long*)(dst + 8) = *(long*)(src + 8);
73 }76 }
@@ -78,8 +81,8 @@ namespace GSF · 4 unmodified lines
78 /// <summary>81 /// <summary>
79 /// Encodes a <see cref="Guid"/> following RFC 4122.82 /// Encodes a <see cref="Guid"/> following RFC 4122.
80 /// </summary>83 /// </summary>
81 /// <param name="guid">the <see cref="Guid"/> to serialize</param>84 /// <param name="guid"><see cref="Guid"/> to serialize.</param>
82 /// <returns>A <see cref="byte"/>[] that represents a big endian encoded Guid.</returns>85 /// <returns>A <see cref="byte"/> array that represents a big-endian encoded <see cref="Guid"/>.</returns>
83 public static byte[] ToRfcBytes(this Guid guid)86 public static byte[] ToRfcBytes(this Guid guid)
84 {87 {
85 byte[] rv = new byte[16];88 byte[] rv = new byte[16];
@@ -90,8 +93,8 @@ namespace GSF · 4 unmodified lines
90 /// <summary>93 /// <summary>
91 /// Decodes a <see cref="Guid"/> following RFC 412294 /// Decodes a <see cref="Guid"/> following RFC 4122
92 /// </summary>95 /// </summary>
93 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>96 /// <param name="buffer">Buffer containing a serialized big-endian encoded <see cref="Guid"/>.</param>
94 /// <returns></returns>97 /// <returns><see cref="Guid"/> deserialized from <paramref name="buffer"/>.</returns>
95 public static Guid ToRfcGuid(this byte[] buffer)98 public static Guid ToRfcGuid(this byte[] buffer)
96 {99 {
97 return buffer.ToRfcGuid(0);100 return buffer.ToRfcGuid(0);
@@ -100,40 +103,44 @@ namespace GSF · 2 unmodified lines
100 /// <summary>103 /// <summary>
101 /// Decodes a <see cref="Guid"/> following RFC 4122104 /// Decodes a <see cref="Guid"/> following RFC 4122
102 /// </summary>105 /// </summary>
103 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>106 /// <param name="buffer">Buffer containing a serialized big-endian encoded <see cref="Guid"/>.</param>
104 /// <param name="startingIndex">the starting index in <see cref="buffer"/>.</param>107 /// <param name="startingIndex">Starting index in <paramref name="buffer"/>.</param>
105 /// <returns></returns>108 /// <returns><see cref="Guid"/> deserialized from <paramref name="buffer"/>.</returns>
106 public static Guid ToRfcGuid(this byte[] buffer, int startingIndex)109 public static Guid ToRfcGuid(this byte[] buffer, int startingIndex)
107 {110 {
108 buffer.ValidateParameters(startingIndex, 16);111 buffer.ValidateParameters(startingIndex, 16);
109 112
110 //Since Microsoft is not very clear how Guid.ToByteArray() performs on big endian processors113 // Since Microsoft is not very clear how Guid.ToByteArray() performs on big endian processors
111 //we are assuming that the internal structure of a Guid will always be the same. Reviewing mono source code114 // we are assuming that the internal structure of a Guid will always be the same. Reviewing
112 //the internal stucture is also the same.115 // mono source code the internal structure is also the same.
113 Guid rv;116 Guid rv;
114 byte* dst = (byte*)&rv;117 byte* dst = (byte*)&rv;
118
115 fixed (byte* src = &buffer[startingIndex])119 fixed (byte* src = &buffer[startingIndex])
116 {120 {
117 if (BitConverter.IsLittleEndian)121 if (BitConverter.IsLittleEndian)
118 {122 {
119 //Guid._a (int)123 // Guid._a (int)
120 dst[0] = src[3];124 dst[0] = src[3];
121 dst[1] = src[2];125 dst[1] = src[2];
122 dst[2] = src[1];126 dst[2] = src[1];
123 dst[3] = src[0];127 dst[3] = src[0];
124 //Guid._b (short)128
129 // Guid._b (short)
125 dst[4] = src[5];130 dst[4] = src[5];
126 dst[5] = src[4];131 dst[5] = src[4];
127 //Guid._c (short)132
133 // Guid._c (short)
128 dst[6] = src[7];134 dst[6] = src[7];
129 dst[7] = src[6];135 dst[7] = src[6];
130 //Guid._d - Guid._k (8 bytes)136
131 //Since already encoded as big endian, just copy the data.137 // Guid._d - Guid._k (8 bytes)
138 // Since already encoded as big endian, just copy the data
132 *(long*)(dst + 8) = *(long*)(src + 8);139 *(long*)(dst + 8) = *(long*)(src + 8);
133 }140 }
134 else141 else
135 {142 {
136 //all fields are encoded big-endian. Just copy.143 // All fields are encoded big-endian, just copy
137 *(long*)(dst + 0) = *(long*)(src + 0);144 *(long*)(dst + 0) = *(long*)(src + 0);
138 *(long*)(dst + 8) = *(long*)(src + 8);145 *(long*)(dst + 8) = *(long*)(src + 8);
139 }146 }
@@ -143,7 +150,7 @@ namespace GSF · 3 unmodified lines
143 }150 }
144 151
145 //---------------------------------------------------------------------------------------------------------152 //---------------------------------------------------------------------------------------------------------
146 // Obsolete methods to support backwards compatibility with a bug that existed in EndianOrder's Guid methods153 // Obsolete methods for compatibility with incorrectly implemented old code in EndianOrder's Guid methods
147 //---------------------------------------------------------------------------------------------------------154 //---------------------------------------------------------------------------------------------------------
148 155
149 /// <summary>156 /// <summary>
@@ -152,6 +159,7 @@ namespace GSF · 2 unmodified lines
152 /// <param name="guid">the <see cref="Guid"/> to serialize</param>159 /// <param name="guid">the <see cref="Guid"/> to serialize</param>
153 /// <returns>A <see cref="byte"/>[] that represents a big endian encoded Guid.</returns>160 /// <returns>A <see cref="byte"/>[] that represents a big endian encoded Guid.</returns>
154 [Obsolete("This method is for backwards compatibility only. Use ToRfcBytes from now on.", false)]161 [Obsolete("This method is for backwards compatibility only. Use ToRfcBytes from now on.", false)]
162 [EditorBrowsable(EditorBrowsableState.Never)]
155 public static byte[] __ToBigEndianOrderBytes(Guid guid)163 public static byte[] __ToBigEndianOrderBytes(Guid guid)
156 {164 {
157 byte[] rv = new byte[16];165 byte[] rv = new byte[16];
@@ -163,15 +171,12 @@ namespace GSF · 5 unmodified lines
163 /// Mimicks the encoding that was present in BigEndianOrder. 171 /// Mimicks the encoding that was present in BigEndianOrder.
164 /// </summary>172 /// </summary>
165 /// <param name="guid">the <see cref="Guid"/> to serialize</param>173 /// <param name="guid">the <see cref="Guid"/> to serialize</param>
166 /// <param name="buffer">where to store the <see cref="guid"/></param>174 /// <param name="buffer">where to store the <paramref name="guid"/></param>
167 /// <param name="startingIndex">the starting index in <see cref="buffer"/></param>175 /// <param name="startingIndex">the starting index in <paramref name="buffer"/></param>
168 [Obsolete("This method is for backwards compatibility only. Use ToRfcBytes from now on.", false)]176 [Obsolete("This method is for backwards compatibility only. Use ToRfcBytes from now on.", false)]
177 [EditorBrowsable(EditorBrowsableState.Never)]
169 public static int __ToBigEndianOrderBytes(Guid guid, byte[] buffer, int startingIndex)178 public static int __ToBigEndianOrderBytes(Guid guid, byte[] buffer, int startingIndex)
170 {179 {
171 //Since Microsoft is not very clear how Guid.ToByteArray() performs on big endian processors
172 //we are assuming that the internal structure of a Guid will always be the same. Reviewing mono source code
173 //the internal stucture is also the same.
174
175 buffer.ValidateParameters(startingIndex, 16);180 buffer.ValidateParameters(startingIndex, 16);
176 181
177 byte* src = (byte*)&guid;182 byte* src = (byte*)&guid;
@@ -198,8 +203,6 @@ namespace GSF · 20 unmodified lines
198 }203 }
199 else204 else
200 {205 {
201 //ToDo: Test this on a big endian architecture.
202
203 //Guid._a (int) //swap endian206 //Guid._a (int) //swap endian
204 dst[15] = src[3];207 dst[15] = src[3];
205 dst[14] = src[2];208 dst[14] = src[2];
@@ -231,6 +234,7 @@ namespace GSF · 25 unmodified lines
231 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>234 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>
232 /// <returns></returns>235 /// <returns></returns>
233 [Obsolete("This method is for backwards compatibility only. Use ToRfcGuid from now on.", false)]236 [Obsolete("This method is for backwards compatibility only. Use ToRfcGuid from now on.", false)]
237 [EditorBrowsable(EditorBrowsableState.Never)]
234 public static Guid __ToBigEndianOrderGuid(byte[] buffer)238 public static Guid __ToBigEndianOrderGuid(byte[] buffer)
235 {239 {
236 return __ToBigEndianOrderGuid(buffer, 0);240 return __ToBigEndianOrderGuid(buffer, 0);
@@ -240,15 +244,14 @@ namespace GSF · 3 unmodified lines
240 /// Mimicks the encoding that was present in BigEndianOrder. 244 /// Mimicks the encoding that was present in BigEndianOrder.
241 /// </summary>245 /// </summary>
242 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>246 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>
243 /// <param name="startingIndex">the starting index in <see cref="buffer"/>.</param>247 /// <param name="startingIndex">the starting index in <paramref name="buffer"/></param>
244 /// <returns></returns>248 /// <returns></returns>
245 [Obsolete("This method is for backwards compatibility only. Use ToRfcGuid from now on.", false)]249 [Obsolete("This method is for backwards compatibility only. Use ToRfcGuid from now on.", false)]
250 [EditorBrowsable(EditorBrowsableState.Never)]
246 public static Guid __ToBigEndianOrderGuid(byte[] buffer, int startingIndex)251 public static Guid __ToBigEndianOrderGuid(byte[] buffer, int startingIndex)
247 {252 {
248 buffer.ValidateParameters(startingIndex, 16);253 buffer.ValidateParameters(startingIndex, 16);
249 254
250 //BigEndianOrder was a reverse of byte ordering that microsoft used.
251
252 Guid rv;255 Guid rv;
253 byte* dst = (byte*)&rv;256 byte* dst = (byte*)&rv;
254 fixed (byte* src = &buffer[startingIndex])257 fixed (byte* src = &buffer[startingIndex])
@@ -301,14 +304,13 @@ namespace GSF · 46 unmodified lines
301 }304 }
302 }305 }
303 306
304
305
306 /// <summary>307 /// <summary>
307 /// Mimicks the encoding that was present in BigEndianOrder. 308 /// Mimicks the encoding that was present in BigEndianOrder.
308 /// </summary>309 /// </summary>
309 /// <param name="guid">the <see cref="Guid"/> to serialize</param>310 /// <param name="guid">the <see cref="Guid"/> to serialize</param>
310 /// <returns>A <see cref="byte"/>[] that represents a big endian encoded Guid.</returns>311 /// <returns>A <see cref="byte"/>[] that represents a big endian encoded Guid.</returns>
311 [Obsolete("This method is for backwards compatibility only. Use ToRfcBytes from now on.", false)]312 [Obsolete("This method is for backwards compatibility only. Use ToRfcBytes from now on.", false)]
313 [EditorBrowsable(EditorBrowsableState.Never)]
312 public static byte[] __ToLittleEndianOrderBytes(Guid guid)314 public static byte[] __ToLittleEndianOrderBytes(Guid guid)
313 {315 {
314 byte[] rv = new byte[16];316 byte[] rv = new byte[16];
@@ -320,14 +322,12 @@ namespace GSF · 5 unmodified lines
320 /// Mimicks the encoding that was present in BigEndianOrder. 322 /// Mimicks the encoding that was present in BigEndianOrder.
321 /// </summary>323 /// </summary>
322 /// <param name="guid">the <see cref="Guid"/> to serialize</param>324 /// <param name="guid">the <see cref="Guid"/> to serialize</param>
323 /// <param name="buffer">where to store the <see cref="guid"/></param>325 /// <param name="buffer">where to store the <paramref name="guid"/></param>
324 /// <param name="startingIndex">the starting index in <see cref="buffer"/></param>326 /// <param name="startingIndex">the starting index in <paramref name="buffer"/></param>
325 [Obsolete("This method is for backwards compatibility only. Use ToRfcBytes from now on.", false)]327 [Obsolete("This method is for backwards compatibility only. Use ToRfcBytes from now on.", false)]
328 [EditorBrowsable(EditorBrowsableState.Never)]
326 public static int __ToLittleEndianOrderBytes(Guid guid, byte[] buffer, int startingIndex)329 public static int __ToLittleEndianOrderBytes(Guid guid, byte[] buffer, int startingIndex)
327 {330 {
328 //This encoding is the same as the default microsoft encoding.
329 //Which is each internal word of the guid is stored little endian.
330
331 buffer.ValidateParameters(startingIndex, 16);331 buffer.ValidateParameters(startingIndex, 16);
332 332
333 byte* src = (byte*)&guid;333 byte* src = (byte*)&guid;
@@ -341,8 +341,6 @@ namespace GSF · 7 unmodified lines
341 }341 }
342 else342 else
343 {343 {
344 //ToDo: Test this on a big endian architecture.
345
346 //Guid._a (int) //swap endian344 //Guid._a (int) //swap endian
347 dst[0] = src[3];345 dst[0] = src[3];
348 dst[1] = src[2];346 dst[1] = src[2];
@@ -367,6 +365,7 @@ namespace GSF · 18 unmodified lines
367 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>365 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>
368 /// <returns></returns>366 /// <returns></returns>
369 [Obsolete("This method is for backwards compatibility only. Use ToRfcGuid from now on.", false)]367 [Obsolete("This method is for backwards compatibility only. Use ToRfcGuid from now on.", false)]
368 [EditorBrowsable(EditorBrowsableState.Never)]
370 public static Guid __ToLittleEndianOrderGuid(byte[] buffer)369 public static Guid __ToLittleEndianOrderGuid(byte[] buffer)
371 {370 {
372 return __ToLittleEndianOrderGuid(buffer, 0);371 return __ToLittleEndianOrderGuid(buffer, 0);
@@ -376,16 +375,14 @@ namespace GSF · 3 unmodified lines
376 /// Mimicks the encoding that was present in BigEndianOrder. 375 /// Mimicks the encoding that was present in BigEndianOrder.
377 /// </summary>376 /// </summary>
378 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>377 /// <param name="buffer">where to read the <see cref="Guid"/>.</param>
379 /// <param name="startingIndex">the starting index in <see cref="buffer"/>.</param>378 /// <param name="startingIndex">the starting index in <paramref name="buffer"/></param>
380 /// <returns></returns>379 /// <returns></returns>
381 [Obsolete("This method is for backwards compatibility only. Use ToRfcGuid from now on.", false)]380 [Obsolete("This method is for backwards compatibility only. Use ToRfcGuid from now on.", false)]
381 [EditorBrowsable(EditorBrowsableState.Never)]
382 public static Guid __ToLittleEndianOrderGuid(byte[] buffer, int startingIndex)382 public static Guid __ToLittleEndianOrderGuid(byte[] buffer, int startingIndex)
383 {383 {
384 buffer.ValidateParameters(startingIndex, 16);384 buffer.ValidateParameters(startingIndex, 16);
385 385
386 //Since Microsoft is not very clear how Guid.ToByteArray() performs on big endian processors
387 //we are assuming that the internal structure of a Guid will always be the same. Reviewing mono source code
388 //the internal stucture is also the same.
389 Guid rv;386 Guid rv;
390 byte* dst = (byte*)&rv;387 byte* dst = (byte*)&rv;
391 fixed (byte* src = &buffer[startingIndex])388 fixed (byte* src = &buffer[startingIndex])
@@ -398,8 +395,6 @@ namespace GSF · 6 unmodified lines
398 }395 }
399 else396 else
400 {397 {
401 //ToDo: Test this on a big endian architecture.
402
403 //Guid._a (int) //swap endian398 //Guid._a (int) //swap endian
404 dst[0] = src[3];399 dst[0] = src[3];
405 dst[1] = src[2];400 dst[1] = src[2];
@@ -418,6 +413,5 @@ namespace GSF · 12 unmodified lines
418 return rv;413 return rv;
419 }414 }
420 }415 }
421
422 }416 }
423}417}
Source/Libraries/GSF.Core/IO/Compression/PatternCompressor.cs+4−4
@@ -172,7 +172,7 @@ namespace GSF.IO.Compression · 171 unmodified lines
172 int compressedSize = 0;172 int compressedSize = 0;
173 byte* iter, end;173 byte* iter, end;
174 174
175 if (value == null)175 if ((object)value == null)
176 throw new ArgumentNullException("value cannot be null", "value");176 throw new ArgumentNullException("value cannot be null", "value");
177 177
178 bufferLength = value.BinaryLength.AlignDoubleWord();178 bufferLength = value.BinaryLength.AlignDoubleWord();
@@ -235,7 +235,7 @@ namespace GSF.IO.Compression · 56 unmodified lines
235 int compressedSize = 0;235 int compressedSize = 0;
236 byte* start, iter, end;236 byte* start, iter, end;
237 237
238 if (buffer == null)238 if ((object)buffer == null)
239 throw new ArgumentNullException("buffer", "Cannot write data to null buffer");239 throw new ArgumentNullException("buffer", "Cannot write data to null buffer");
240 240
241 if (length % SizeOf32Bits != 0)241 if (length % SizeOf32Bits != 0)
@@ -727,7 +727,7 @@ namespace GSF.IO.Compression · 485 unmodified lines
727 finally727 finally
728 {728 {
729 // Return buffer to queue so it can be reused729 // Return buffer to queue so it can be reused
730 if (buffer != null)730 if ((object)buffer != null)
731 BufferPool.ReturnBuffer(buffer);731 BufferPool.ReturnBuffer(buffer);
732 }732 }
733 733
@@ -917,7 +917,7 @@ namespace GSF.IO.Compression · 183 unmodified lines
917 // finally917 // finally
918 // {918 // {
919 // // Return buffer to queue so it can be reused919 // // Return buffer to queue so it can be reused
920 // if (buffer != null)920 // if ((object)buffer != null)
921 // BufferPool.ReturnBuffer(buffer);921 // BufferPool.ReturnBuffer(buffer);
922 // }922 // }
923 923
Source/Libraries/GSF.Core/IO/Compression/PatternDecompressor.cs+2−2
@@ -210,7 +210,7 @@ namespace GSF.IO.Compression · 209 unmodified lines
210 const int SizeOf32Bits = sizeof(uint);210 const int SizeOf32Bits = sizeof(uint);
211 byte* start, iter, end;211 byte* start, iter, end;
212 212
213 if (buffer == null)213 if ((object)buffer == null)
214 throw new ArgumentNullException("buffer", "Cannot write data to null buffer");214 throw new ArgumentNullException("buffer", "Cannot write data to null buffer");
215 215
216 if (length % SizeOf32Bits != 0)216 if (length % SizeOf32Bits != 0)
@@ -663,7 +663,7 @@ namespace GSF.IO.Compression · 446 unmodified lines
663 finally663 finally
664 {664 {
665 // Return buffer to queue so it can be reused665 // Return buffer to queue so it can be reused
666 if (buffer != null)666 if ((object)buffer != null)
667 BufferPool.ReturnBuffer(buffer);667 BufferPool.ReturnBuffer(buffer);
668 }668 }
669 669
Source/Libraries/GSF.Core/IO/StreamExtensions.cs+1−1
@@ -63,7 +63,7 @@ namespace GSF.IO · 62 unmodified lines
63 }63 }
64 finally64 finally
65 {65 {
66 if (buffer != null)66 if ((object)buffer != null)
67 BufferPool.ReturnBuffer(buffer);67 BufferPool.ReturnBuffer(buffer);
68 }68 }
69 }69 }
Source/Libraries/GSF.Core/Identity/UserAccountControl.cs+1−1
@@ -207,7 +207,7 @@ namespace GSF.Identity · 206 unmodified lines
207 {207 {
208 object value = key.GetValue(UacRegistryValue);208 object value = key.GetValue(UacRegistryValue);
209 209
210 if (value != null)210 if ((object)value != null)
211 return value.Equals(1);211 return value.Equals(1);
212 }212 }
213 213
Source/Libraries/GSF.Core/Parsing/BinaryImageParserBase.cs+5−1
@@ -334,7 +334,7 @@ namespace GSF.Parsing · 333 unmodified lines
334 }334 }
335 finally335 finally
336 {336 {
337 if (buffer != null)337 if ((object)buffer != null)
338 BufferPool.ReturnBuffer(buffer);338 BufferPool.ReturnBuffer(buffer);
339 }339 }
340 }340 }
@@ -507,10 +507,14 @@ namespace GSF.Parsing · 166 unmodified lines
507 OnParsingException(ex);507 OnParsingException(ex);
508 }508 }
509 else509 else
510 {
510 throw;511 throw;
512 }
511 }513 }
512 else514 else
515 {
513 throw;516 throw;
517 }
514 }518 }
515 519
516 // Returned value represents total bytes of data in the buffer image that were520 // Returned value represents total bytes of data in the buffer image that were
Source/Libraries/GSF.Core/Parsing/CommonHeaderBase.cs+1−1
@@ -40,7 +40,7 @@ namespace GSF.Parsing · 39 unmodified lines
40 /// {40 /// {
41 /// if (length > 3)41 /// if (length > 3)
42 /// {42 /// {
43 /// TypeID = EndianOrder.LittleEndian.ToInt32(binaryImage, startIndex);43 /// TypeID = LittleEndian.ToInt32(binaryImage, startIndex);
44 /// State = state;44 /// State = state;
45 /// }45 /// }
46 /// else46 /// else
Source/Libraries/GSF.Core/Parsing/IBinaryImageParser.cs+10−3
@@ -35,7 +35,7 @@ namespace GSF.Parsing · 34 unmodified lines
35 public interface IBinaryImageParser : IProvideStatus35 public interface IBinaryImageParser : IProvideStatus
36 {36 {
37 /// <summary>37 /// <summary>
38 /// Occurs when data image fails deserialized due to an exception.38 /// Occurs when data image fails deserialization due to an exception.
39 /// </summary>39 /// </summary>
40 /// <remarks>40 /// <remarks>
41 /// <see cref="EventArgs{T}.Argument"/> is the remaining portion of the binary image that failed to parse.41 /// <see cref="EventArgs{T}.Argument"/> is the remaining portion of the binary image that failed to parse.
@@ -63,12 +63,19 @@ namespace GSF.Parsing · 21 unmodified lines
63 /// <summary>63 /// <summary>
64 /// Gets or sets a boolean value that indicates whether the data parser is currently enabled.64 /// Gets or sets a boolean value that indicates whether the data parser is currently enabled.
65 /// </summary>65 /// </summary>
66 bool Enabled { get; set; }66 bool Enabled
67 {
68 get;
69 set;
70 }
67 71
68 /// <summary>72 /// <summary>
69 /// Gets the total number of buffer images processed so far.73 /// Gets the total number of buffer images processed so far.
70 /// </summary>74 /// </summary>
71 long TotalProcessedBuffers { get; }75 long TotalProcessedBuffers
76 {
77 get;
78 }
72 79
73 /// <summary>80 /// <summary>
74 /// Writes a sequence of bytes onto the <see cref="IBinaryImageParser"/> stream for parsing.81 /// Writes a sequence of bytes onto the <see cref="IBinaryImageParser"/> stream for parsing.
Source/Libraries/GSF.Core/Parsing/ISupportBinaryImage.cs+2−2
@@ -123,7 +123,7 @@ namespace GSF.Parsing · 122 unmodified lines
123 }123 }
124 finally124 finally
125 {125 {
126 if (buffer != null)126 if ((object)buffer != null)
127 BufferPool.ReturnBuffer(buffer);127 BufferPool.ReturnBuffer(buffer);
128 }128 }
129 }129 }
@@ -153,7 +153,7 @@ namespace GSF.Parsing · 23 unmodified lines
153 }153 }
154 finally154 finally
155 {155 {
156 if (buffer != null)156 if ((object)buffer != null)
157 BufferPool.ReturnBuffer(buffer);157 BufferPool.ReturnBuffer(buffer);
158 }158 }
159 }159 }
Source/Libraries/GSF.Core/Parsing/ISupportSourceIdentifiableFrameImage.cs+3−2
@@ -26,11 +26,12 @@ · 25 unmodified lines
26namespace GSF.Parsing26namespace GSF.Parsing
27{27{
28 /// <summary>28 /// <summary>
29 /// Specifies that this <see cref="System.Type"/> can produce or consume a frame of data represented as a source identifiable binary image.29 /// Specifies that this <see cref="System.Type"/> can produce or consume a frame of data represented as a binary image
30 /// that can be identified by its data source.
30 /// </summary>31 /// </summary>
31 /// <remarks>32 /// <remarks>
32 /// Related types of protocol data that occur as frames in a stream can implement this interface for automated parsing33 /// Related types of protocol data that occur as frames in a stream can implement this interface for automated parsing
33 /// via the <see cref="MultiSourceFrameImageParserBase{TSourceIdentifier,TTypeIdentifier,TOutputType}"/> class.34 /// via the <see cref="MultiSourceFrameImageParserBase{TSourceIdentifier, TTypeIdentifier, TOutputType}"/> class.
34 /// </remarks>35 /// </remarks>
35 /// <typeparam name="TSourceIdentifier">Type of identifier for the data source.</typeparam>36 /// <typeparam name="TSourceIdentifier">Type of identifier for the data source.</typeparam>
36 /// <typeparam name="TTypeIdentifier">Type of the frame identifier.</typeparam>37 /// <typeparam name="TTypeIdentifier">Type of the frame identifier.</typeparam>
Source/Libraries/GSF.Core/Parsing/MultiSourceFrameImageParserBase.cs+18−25
@@ -37,7 +37,6 @@ using System; · 36 unmodified lines
37using System.Collections.Concurrent;37using System.Collections.Concurrent;
38using System.Collections.Generic;38using System.Collections.Generic;
39using System.ComponentModel;39using System.ComponentModel;
40using System.Threading;
41using GSF.Collections;40using GSF.Collections;
42 41
43namespace GSF.Parsing42namespace GSF.Parsing
@@ -54,7 +53,7 @@ namespace GSF.Parsing · 10 unmodified lines
54 /// This class is more specific than the <see cref="BinaryImageParserBase"/> in that it can automate the parsing of a53 /// This class is more specific than the <see cref="BinaryImageParserBase"/> in that it can automate the parsing of a
55 /// particular protocol that is formatted as a series of frames that have a common method of identification.54 /// particular protocol that is formatted as a series of frames that have a common method of identification.
56 /// Automation of type creation occurs by loading implementations of common types that implement the55 /// Automation of type creation occurs by loading implementations of common types that implement the
57 /// <see cref="ISupportSourceIdentifiableFrameImage{TSourceIdentifier,TTypeIdentifier}"/> interface. The common method of56 /// <see cref="ISupportSourceIdentifiableFrameImage{TSourceIdentifier, TTypeIdentifier}"/> interface. The common method of
58 /// identification is handled by creating a class derived from the <see cref="ICommonHeader{TTypeIdentifier}"/> which primarily57 /// identification is handled by creating a class derived from the <see cref="ICommonHeader{TTypeIdentifier}"/> which primarily
59 /// includes a TypeID property, but also should include any state information needed to parse a particular frame if necessary.58 /// includes a TypeID property, but also should include any state information needed to parse a particular frame if necessary.
60 /// Derived classes override the <see cref="FrameImageParserBase{TTypeIdentifier, TOutputType}.ParseCommonHeader"/>59 /// Derived classes override the <see cref="FrameImageParserBase{TTypeIdentifier, TOutputType}.ParseCommonHeader"/>
@@ -334,8 +333,10 @@ namespace GSF.Parsing · 273 unmodified lines
334 // Copy buffer data for processing (destination buffer pre-allocated from buffer pool)333 // Copy buffer data for processing (destination buffer pre-allocated from buffer pool)
335 Buffer.BlockCopy(buffer, offset, identifiableBuffer.Buffer, 0, count);334 Buffer.BlockCopy(buffer, offset, identifiableBuffer.Buffer, 0, count);
336 335
337 // Add buffer to the queue for parsing336 // Add buffer to the queue for parsing. Note that buffer is queued for parsing instead
338 m_bufferQueue.Enqueue(new SourceIdentifiableBuffer[] { identifiableBuffer });337 // of handling parse on this thread - this has become necessary to reduce UDP data loss
338 // that can happen in-process when system has UDP buffers building up for processing.
339 m_bufferQueue.Enqueue(new[] { identifiableBuffer });
339 }340 }
340 }341 }
341 catch342 catch
@@ -398,7 +399,7 @@ namespace GSF.Parsing · 56 unmodified lines
398 throw new NotImplementedException("This method should not be called directly, call the Parse(TSourceIdentifier,byte[],int,int) method to queue data for parsing instead.");399 throw new NotImplementedException("This method should not be called directly, call the Parse(TSourceIdentifier,byte[],int,int) method to queue data for parsing instead.");
399 }400 }
400 401
401 // This method is used by the internal <see cref="ProcessQueue{T}"/> to process all queued data buffers.402 // This method is used to process all queued data buffers.
402 private void ParseQueuedBuffers(IList<SourceIdentifiableBuffer> buffers)403 private void ParseQueuedBuffers(IList<SourceIdentifiableBuffer> buffers)
403 {404 {
404 if (Enabled)405 if (Enabled)
@@ -427,6 +428,16 @@ namespace GSF.Parsing · 22 unmodified lines
427 }428 }
428 finally429 finally
429 {430 {
431 // Dispose of source buffers - this returns buffers to pool
432 if ((object)buffers != null)
433 {
434 foreach (SourceIdentifiableBuffer buffer in buffers)
435 {
436 if ((object)buffer != null)
437 buffer.Dispose();
438 }
439 }
440
430 // If user has attached to SourceDataParsed event, expose list of parsed data per source441 // If user has attached to SourceDataParsed event, expose list of parsed data per source
431 if ((object)SourceDataParsed != null)442 if ((object)SourceDataParsed != null)
432 {443 {
@@ -435,28 +446,10 @@ namespace GSF.Parsing · 2 unmodified lines
435 OnSourceDataParsed(parsedData.Key, parsedData.Value);446 OnSourceDataParsed(parsedData.Key, parsedData.Value);
436 }447 }
437 448
438 // Clear parsed data dictionary for next pass449 // Clear parsed data dictionary for next pass - note that this does not contend with
450 // OnDataParsed override since the event called synchronously via base.Write above.
439 m_parsedSourceData.Clear();451 m_parsedSourceData.Clear();
440 }452 }
441
442 }
443 }
444
445 // Dispose of source buffers - no rush
446 ThreadPool.QueueUserWorkItem(DisposeSourceBuffers, buffers);
447 }
448
449 // Handle disposing of source buffers (this will return items to the reusable object pool)
450 private void DisposeSourceBuffers(object state)
451 {
452 SourceIdentifiableBuffer[] buffers = state as SourceIdentifiableBuffer[];
453
454 if ((object)buffers != null)
455 {
456 foreach (SourceIdentifiableBuffer buffer in buffers)
457 {
458 if ((object)buffer != null)
459 buffer.Dispose();
460 }453 }
461 }454 }
462 }455 }
Source/Libraries/GSF.Core/Threading/ThreadContainerBase.cs+2−0
@@ -32,6 +32,8 @@ using System; · 31 unmodified lines
32using System.Runtime.CompilerServices;32using System.Runtime.CompilerServices;
33using System.Threading;33using System.Threading;
34 34
35#pragma warning disable 420
36
35namespace GSF.Threading37namespace GSF.Threading
36{38{
37 internal abstract class ThreadContainerBase39 internal abstract class ThreadContainerBase
Source/Libraries/GSF.Historian/DataServices/MetadataService.cs+3−3
@@ -188,7 +188,7 @@ namespace GSF.Historian.DataServices · 187 unmodified lines
188 while (true)188 while (true)
189 {189 {
190 buffer = Archive.ReadMetaData(++id);190 buffer = Archive.ReadMetaData(++id);
191 if (buffer == null)191 if ((object)buffer == null)
192 // No more records.192 // No more records.
193 break;193 break;
194 else194 else
@@ -227,7 +227,7 @@ namespace GSF.Historian.DataServices · 32 unmodified lines
227 foreach (string singleID in idList.Split(',', ';'))227 foreach (string singleID in idList.Split(',', ';'))
228 {228 {
229 buffer = Archive.ReadMetaData(id = int.Parse(singleID));229 buffer = Archive.ReadMetaData(id = int.Parse(singleID));
230 if (buffer == null)230 if ((object)buffer == null)
231 // ID is invalid.231 // ID is invalid.
232 continue;232 continue;
233 else233 else
@@ -265,7 +265,7 @@ namespace GSF.Historian.DataServices · 31 unmodified lines
265 for (int id = int.Parse(fromID); id <= int.Parse(toID); id++)265 for (int id = int.Parse(fromID); id <= int.Parse(toID); id++)
266 {266 {
267 buffer = Archive.ReadMetaData(id);267 buffer = Archive.ReadMetaData(id);
268 if (buffer == null)268 if ((object)buffer == null)
269 // ID is invalid.269 // ID is invalid.
270 continue;270 continue;
271 else271 else
Source/Libraries/GSF.Historian/DataServices/TimeSeriesDataService.cs+2−2
@@ -242,7 +242,7 @@ namespace GSF.Historian.DataServices · 241 unmodified lines
242 foreach (string singleID in idList.Split(',', ';'))242 foreach (string singleID in idList.Split(',', ';'))
243 {243 {
244 buffer = Archive.ReadStateData(id = int.Parse(singleID));244 buffer = Archive.ReadStateData(id = int.Parse(singleID));
245 if (buffer == null)245 if ((object)buffer == null)
246 {246 {
247 // ID is invalid.247 // ID is invalid.
248 continue;248 continue;
@@ -286,7 +286,7 @@ namespace GSF.Historian.DataServices · 37 unmodified lines
286 for (int id = int.Parse(fromID); id <= int.Parse(toID); id++)286 for (int id = int.Parse(fromID); id <= int.Parse(toID); id++)
287 {287 {
288 buffer = Archive.ReadStateData(id);288 buffer = Archive.ReadStateData(id);
289 if (buffer == null)289 if ((object)buffer == null)
290 {290 {
291 // ID is invalid.291 // ID is invalid.
292 continue;292 continue;
Source/Libraries/GSF.Historian/Files/ArchiveDataBlockPointer.cs+4−4
@@ -211,8 +211,8 @@ namespace GSF.Historian.Files · 210 unmodified lines
211 if (length >= FixedLength)211 if (length >= FixedLength)
212 {212 {
213 // Binary image has sufficient data.213 // Binary image has sufficient data.
214 HistorianID = EndianOrder.LittleEndian.ToInt32(buffer, startIndex);214 HistorianID = LittleEndian.ToInt32(buffer, startIndex);
215 StartTime = new TimeTag(EndianOrder.LittleEndian.ToDouble(buffer, startIndex + 4));215 StartTime = new TimeTag(LittleEndian.ToDouble(buffer, startIndex + 4));
216 216
217 return FixedLength;217 return FixedLength;
218 }218 }
@@ -238,8 +238,8 @@ namespace GSF.Historian.Files · 19 unmodified lines
238 238
239 buffer.ValidateParameters(startIndex, length);239 buffer.ValidateParameters(startIndex, length);
240 240
241 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex, 4);241 Buffer.BlockCopy(LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex, 4);
242 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_startTime.Value), 0, buffer, startIndex + 4, 8);242 Buffer.BlockCopy(LittleEndian.GetBytes(m_startTime.Value), 0, buffer, startIndex + 4, 8);
243 243
244 return length;244 return length;
245 }245 }
Source/Libraries/GSF.Historian/Files/ArchiveDataPoint.cs+6−6
@@ -306,9 +306,9 @@ namespace GSF.Historian.Files · 305 unmodified lines
306 if (length >= FixedLength)306 if (length >= FixedLength)
307 {307 {
308 // Binary image has sufficient data.308 // Binary image has sufficient data.
309 Flags = EndianOrder.LittleEndian.ToInt16(buffer, startIndex + 4);309 Flags = LittleEndian.ToInt16(buffer, startIndex + 4);
310 Value = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 6);310 Value = LittleEndian.ToSingle(buffer, startIndex + 6);
311 Time = new TimeTag(EndianOrder.LittleEndian.ToInt32(buffer, startIndex) + // Seconds311 Time = new TimeTag(LittleEndian.ToInt32(buffer, startIndex) + // Seconds
312 ((double)(m_flags.GetMaskedValue(MillisecondMask) >> 5) / 1000)); // Milliseconds312 ((double)(m_flags.GetMaskedValue(MillisecondMask) >> 5) / 1000)); // Milliseconds
313 313
314 return FixedLength;314 return FixedLength;
@@ -337,9 +337,9 @@ namespace GSF.Historian.Files · 22 unmodified lines
337 337
338 buffer.ValidateParameters(startIndex, length);338 buffer.ValidateParameters(startIndex, length);
339 339
340 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes((int)m_time.Value), 0, buffer, startIndex, 4);340 Buffer.BlockCopy(LittleEndian.GetBytes((int)m_time.Value), 0, buffer, startIndex, 4);
341 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes((short)m_flags), 0, buffer, startIndex + 4, 2);341 Buffer.BlockCopy(LittleEndian.GetBytes((short)m_flags), 0, buffer, startIndex + 4, 2);
342 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_value), 0, buffer, startIndex + 6, 4);342 Buffer.BlockCopy(LittleEndian.GetBytes(m_value), 0, buffer, startIndex + 6, 4);
343 343
344 return length;344 return length;
345 }345 }
Source/Libraries/GSF.Historian/Files/ArchiveFileAllocationTable.cs+18−18
@@ -133,8 +133,8 @@ namespace GSF.Historian.Files · 132 unmodified lines
133 {133 {
134 buffer.ValidateParameters(startIndex, length);134 buffer.ValidateParameters(startIndex, length);
135 135
136 double startTime = EndianOrder.LittleEndian.ToDouble(buffer, startIndex);136 double startTime = LittleEndian.ToDouble(buffer, startIndex);
137 double stopTime = EndianOrder.LittleEndian.ToDouble(buffer, startIndex + 8);137 double stopTime = LittleEndian.ToDouble(buffer, startIndex + 8);
138 138
139 // Validate file time tags139 // Validate file time tags
140 if (startTime < TimeTag.MinValue.Value || startTime > TimeTag.MaxValue.Value)140 if (startTime < TimeTag.MinValue.Value || startTime > TimeTag.MaxValue.Value)
@@ -145,10 +145,10 @@ namespace GSF.Historian.Files · 4 unmodified lines
145 145
146 m_parent.FileStartTime = new TimeTag(startTime);146 m_parent.FileStartTime = new TimeTag(startTime);
147 m_parent.FileEndTime = new TimeTag(stopTime);147 m_parent.FileEndTime = new TimeTag(stopTime);
148 m_parent.DataPointsReceived = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 16);148 m_parent.DataPointsReceived = LittleEndian.ToInt32(buffer, startIndex + 16);
149 m_parent.DataPointsArchived = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 20);149 m_parent.DataPointsArchived = LittleEndian.ToInt32(buffer, startIndex + 20);
150 m_parent.DataBlockSize = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 24);150 m_parent.DataBlockSize = LittleEndian.ToInt32(buffer, startIndex + 24);
151 m_parent.DataBlockCount = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 28);151 m_parent.DataBlockCount = LittleEndian.ToInt32(buffer, startIndex + 28);
152 152
153 return FixedLength;153 return FixedLength;
154 }154 }
@@ -170,12 +170,12 @@ namespace GSF.Historian.Files · 15 unmodified lines
170 170
171 buffer.ValidateParameters(startIndex, length);171 buffer.ValidateParameters(startIndex, length);
172 172
173 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_parent.m_fileStartTime.Value), 0, buffer, startIndex, 8);173 Buffer.BlockCopy(LittleEndian.GetBytes(m_parent.m_fileStartTime.Value), 0, buffer, startIndex, 8);
174 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_parent.m_fileEndTime.Value), 0, buffer, startIndex + 8, 8);174 Buffer.BlockCopy(LittleEndian.GetBytes(m_parent.m_fileEndTime.Value), 0, buffer, startIndex + 8, 8);
175 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_parent.m_dataPointsReceived), 0, buffer, startIndex + 16, 4);175 Buffer.BlockCopy(LittleEndian.GetBytes(m_parent.m_dataPointsReceived), 0, buffer, startIndex + 16, 4);
176 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_parent.m_dataPointsArchived), 0, buffer, startIndex + 20, 4);176 Buffer.BlockCopy(LittleEndian.GetBytes(m_parent.m_dataPointsArchived), 0, buffer, startIndex + 20, 4);
177 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_parent.m_dataBlockSize), 0, buffer, startIndex + 24, 4);177 Buffer.BlockCopy(LittleEndian.GetBytes(m_parent.m_dataBlockSize), 0, buffer, startIndex + 24, 4);
178 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_parent.m_dataBlockCount), 0, buffer, startIndex + 28, 4);178 Buffer.BlockCopy(LittleEndian.GetBytes(m_parent.m_dataBlockCount), 0, buffer, startIndex + 28, 4);
179 179
180 return length;180 return length;
181 }181 }
@@ -489,7 +489,7 @@ namespace GSF.Historian.Files · 307 unmodified lines
489 {489 {
490 ArchiveDataBlock unusedDataBlock = FindDataBlock(-1);490 ArchiveDataBlock unusedDataBlock = FindDataBlock(-1);
491 491
492 if (unusedDataBlock != null)492 if ((object)unusedDataBlock != null)
493 return m_dataBlockCount - unusedDataBlock.Index;493 return m_dataBlockCount - unusedDataBlock.Index;
494 494
495 return 0;495 return 0;
@@ -772,18 +772,18 @@ namespace GSF.Historian.Files · 276 unmodified lines
772 // Negative data block index is specified indicating a search must be performed for a data block.772 // Negative data block index is specified indicating a search must be performed for a data block.
773 dataBlock = FindLastDataBlock(historianID);773 dataBlock = FindLastDataBlock(historianID);
774 774
775 if (dataBlock != null && dataBlock.SlotsAvailable == 0)775 if ((object)dataBlock != null && dataBlock.SlotsAvailable == 0)
776 {776 {
777 // Previously used data block is full.777 // Previously used data block is full.
778 dataBlock = null;778 dataBlock = null;
779 }779 }
780 780
781 if (dataBlock == null)781 if ((object)dataBlock == null)
782 {782 {
783 // Look for the first unallocated data block.783 // Look for the first unallocated data block.
784 dataBlock = FindDataBlock(-1);784 dataBlock = FindDataBlock(-1);
785 785
786 if (dataBlock == null)786 if ((object)dataBlock == null)
787 {787 {
788 // Extend the file for historic writes only.788 // Extend the file for historic writes only.
789 if (m_parent.FileType == ArchiveFileType.Historic)789 if (m_parent.FileType == ArchiveFileType.Historic)
@@ -801,7 +801,7 @@ namespace GSF.Historian.Files · 11 unmodified lines
801 }801 }
802 802
803 // Get the pointer to the data block so that its information can be updated if necessary.803 // Get the pointer to the data block so that its information can be updated if necessary.
804 if (dataBlock == null)804 if ((object)dataBlock == null)
805 {805 {
806 dataBlockPointer = null;806 dataBlockPointer = null;
807 }807 }
@@ -814,7 +814,7 @@ namespace GSF.Historian.Files · 6 unmodified lines
814 }814 }
815 }815 }
816 816
817 if (dataBlockPointer != null && !dataBlockPointer.IsAllocated)817 if ((object)dataBlockPointer != null && !dataBlockPointer.IsAllocated)
818 {818 {
819 // Mark the data block as allocated.819 // Mark the data block as allocated.
820 dataBlockPointer.HistorianID = historianID;820 dataBlockPointer.HistorianID = historianID;
Source/Libraries/GSF.Historian/Files/IntercomRecord.cs+10−10
@@ -238,14 +238,14 @@ namespace GSF.Historian.Files · 237 unmodified lines
238 if (length >= FixedLength)238 if (length >= FixedLength)
239 {239 {
240 // Binary image has sufficient data.240 // Binary image has sufficient data.
241 DataBlocksUsed = EndianOrder.LittleEndian.ToInt32(buffer, startIndex);241 DataBlocksUsed = LittleEndian.ToInt32(buffer, startIndex);
242 RolloverInProgress = EndianOrder.LittleEndian.ToBoolean(buffer, startIndex + 4);242 RolloverInProgress = LittleEndian.ToBoolean(buffer, startIndex + 4);
243 LatestDataTime = new TimeTag(EndianOrder.LittleEndian.ToDouble(buffer, startIndex + 8));243 LatestDataTime = new TimeTag(LittleEndian.ToDouble(buffer, startIndex + 8));
244 LatestDataID = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 16);244 LatestDataID = LittleEndian.ToInt32(buffer, startIndex + 16);
245 245
246 for (int i = 0; i < m_sourceLatestDataTime.Count; i++)246 for (int i = 0; i < m_sourceLatestDataTime.Count; i++)
247 {247 {
248 m_sourceLatestDataTime[i] = new TimeTag(EndianOrder.LittleEndian.ToDouble(buffer, startIndex + 20 + (i * 8)));248 m_sourceLatestDataTime[i] = new TimeTag(LittleEndian.ToDouble(buffer, startIndex + 20 + (i * 8)));
249 }249 }
250 250
251 return FixedLength;251 return FixedLength;
@@ -276,14 +276,14 @@ namespace GSF.Historian.Files · 24 unmodified lines
276 276
277 lock (this)277 lock (this)
278 {278 {
279 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_dataBlocksUsed), 0, buffer, startIndex, 4);279 Buffer.BlockCopy(LittleEndian.GetBytes(m_dataBlocksUsed), 0, buffer, startIndex, 4);
280 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(Convert.ToInt32(m_rolloverInProgress)), 0, buffer, startIndex + 4, 4);280 Buffer.BlockCopy(LittleEndian.GetBytes(Convert.ToInt32(m_rolloverInProgress)), 0, buffer, startIndex + 4, 4);
281 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_latestDataTime.Value), 0, buffer, startIndex + 8, 8);281 Buffer.BlockCopy(LittleEndian.GetBytes(m_latestDataTime.Value), 0, buffer, startIndex + 8, 8);
282 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_latestDataID), 0, buffer, startIndex + 16, 4);282 Buffer.BlockCopy(LittleEndian.GetBytes(m_latestDataID), 0, buffer, startIndex + 16, 4);
283 283
284 for (int i = 0; i < m_sourceLatestDataTime.Count; i++)284 for (int i = 0; i < m_sourceLatestDataTime.Count; i++)
285 {285 {
286 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_sourceLatestDataTime[i].Value), 0, buffer, startIndex + 20 + (i * 8), 8);286 Buffer.BlockCopy(LittleEndian.GetBytes(m_sourceLatestDataTime[i].Value), 0, buffer, startIndex + 20 + (i * 8), 8);
287 }287 }
288 }288 }
289 289
Source/Libraries/GSF.Historian/Files/MetadataRecord.cs+36−36
@@ -191,7 +191,7 @@ namespace GSF.Historian.Files · 190 unmodified lines
191 }191 }
192 set192 set
193 {193 {
194 if (value == null)194 if ((object)value == null)
195 throw new ArgumentNullException("value");195 throw new ArgumentNullException("value");
196 196
197 m_remarks = value.TruncateRight(512);197 m_remarks = value.TruncateRight(512);
@@ -213,7 +213,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
213 }213 }
214 set214 set
215 {215 {
216 if (value == null)216 if ((object)value == null)
217 throw new ArgumentNullException("value");217 throw new ArgumentNullException("value");
218 218
219 m_hardwareInfo = value.TruncateRight(512);219 m_hardwareInfo = value.TruncateRight(512);
@@ -236,7 +236,7 @@ namespace GSF.Historian.Files · 16 unmodified lines
236 }236 }
237 set237 set
238 {238 {
239 if (value == null)239 if ((object)value == null)
240 throw new ArgumentNullException("value");240 throw new ArgumentNullException("value");
241 241
242 m_emailAddresses = value.TruncateRight(512);242 m_emailAddresses = value.TruncateRight(512);
@@ -258,7 +258,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
258 }258 }
259 set259 set
260 {260 {
261 if (value == null)261 if ((object)value == null)
262 throw new ArgumentNullException("value");262 throw new ArgumentNullException("value");
263 263
264 m_description = value.TruncateRight(80);264 m_description = value.TruncateRight(80);
@@ -280,7 +280,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
280 }280 }
281 set281 set
282 {282 {
283 if (value == null)283 if ((object)value == null)
284 throw new ArgumentNullException("value");284 throw new ArgumentNullException("value");
285 285
286 m_currentData = value.TruncateRight(80);286 m_currentData = value.TruncateRight(80);
@@ -302,7 +302,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
302 }302 }
303 set303 set
304 {304 {
305 if (value == null)305 if ((object)value == null)
306 throw new ArgumentNullException("value");306 throw new ArgumentNullException("value");
307 307
308 m_name = value.TruncateRight(40);308 m_name = value.TruncateRight(40);
@@ -324,7 +324,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
324 }324 }
325 set325 set
326 {326 {
327 if (value == null)327 if ((object)value == null)
328 throw new ArgumentNullException("value");328 throw new ArgumentNullException("value");
329 329
330 m_synonym1 = value.TruncateRight(40);330 m_synonym1 = value.TruncateRight(40);
@@ -346,7 +346,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
346 }346 }
347 set347 set
348 {348 {
349 if (value == null)349 if ((object)value == null)
350 throw new ArgumentNullException("value");350 throw new ArgumentNullException("value");
351 351
352 m_synonym2 = value.TruncateRight(40);352 m_synonym2 = value.TruncateRight(40);
@@ -368,7 +368,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
368 }368 }
369 set369 set
370 {370 {
371 if (value == null)371 if ((object)value == null)
372 throw new ArgumentNullException("value");372 throw new ArgumentNullException("value");
373 373
374 m_synonym3 = value.TruncateRight(40);374 m_synonym3 = value.TruncateRight(40);
@@ -391,7 +391,7 @@ namespace GSF.Historian.Files · 16 unmodified lines
391 }391 }
392 set392 set
393 {393 {
394 if (value == null)394 if ((object)value == null)
395 throw new ArgumentNullException("value");395 throw new ArgumentNullException("value");
396 396
397 m_pagerNumbers = value.TruncateRight(40);397 m_pagerNumbers = value.TruncateRight(40);
@@ -414,7 +414,7 @@ namespace GSF.Historian.Files · 16 unmodified lines
414 }414 }
415 set415 set
416 {416 {
417 if (value == null)417 if ((object)value == null)
418 throw new ArgumentNullException("value");418 throw new ArgumentNullException("value");
419 419
420 m_phoneNumbers = value.TruncateRight(40);420 m_phoneNumbers = value.TruncateRight(40);
@@ -436,7 +436,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
436 }436 }
437 set437 set
438 {438 {
439 if (value == null)439 if ((object)value == null)
440 throw new ArgumentNullException("value");440 throw new ArgumentNullException("value");
441 441
442 m_plantCode = value.TruncateRight(24);442 m_plantCode = value.TruncateRight(24);
@@ -458,7 +458,7 @@ namespace GSF.Historian.Files · 15 unmodified lines
458 }458 }
459 set459 set
460 {460 {
461 if (value == null)461 if ((object)value == null)
462 throw new ArgumentNullException("value");462 throw new ArgumentNullException("value");
463 463
464 m_system = value.TruncateRight(24);464 m_system = value.TruncateRight(24);
@@ -529,7 +529,7 @@ namespace GSF.Historian.Files · 64 unmodified lines
529 }529 }
530 set530 set
531 {531 {
532 if (value == null)532 if ((object)value == null)
533 throw new ArgumentNullException("value");533 throw new ArgumentNullException("value");
534 534
535 m_securityFlags = value;535 m_securityFlags = value;
@@ -548,7 +548,7 @@ namespace GSF.Historian.Files · 12 unmodified lines
548 }548 }
549 set549 set
550 {550 {
551 if (value == null)551 if ((object)value == null)
552 throw new ArgumentNullException("value");552 throw new ArgumentNullException("value");
553 553
554 m_generalFlags = value;554 m_generalFlags = value;
@@ -567,7 +567,7 @@ namespace GSF.Historian.Files · 12 unmodified lines
567 }567 }
568 set568 set
569 {569 {
570 if (value == null)570 if ((object)value == null)
571 throw new ArgumentNullException("value");571 throw new ArgumentNullException("value");
572 572
573 m_alarmFlags = value;573 m_alarmFlags = value;
@@ -647,7 +647,7 @@ namespace GSF.Historian.Files · 73 unmodified lines
647 }647 }
648 set648 set
649 {649 {
650 if (value == null)650 if ((object)value == null)
651 throw new ArgumentNullException("value");651 throw new ArgumentNullException("value");
652 652
653 m_analogFields = value;653 m_analogFields = value;
@@ -666,7 +666,7 @@ namespace GSF.Historian.Files · 12 unmodified lines
666 }666 }
667 set667 set
668 {668 {
669 if (value == null)669 if ((object)value == null)
670 throw new ArgumentNullException("value");670 throw new ArgumentNullException("value");
671 671
672 m_digitalFields = value;672 m_digitalFields = value;
@@ -685,7 +685,7 @@ namespace GSF.Historian.Files · 12 unmodified lines
685 }685 }
686 set686 set
687 {687 {
688 if (value == null)688 if ((object)value == null)
689 throw new ArgumentNullException("value");689 throw new ArgumentNullException("value");
690 690
691 m_composedFields = value;691 m_composedFields = value;
@@ -704,7 +704,7 @@ namespace GSF.Historian.Files · 12 unmodified lines
704 }704 }
705 set705 set
706 {706 {
707 if (value == null)707 if ((object)value == null)
708 throw new ArgumentNullException("value");708 throw new ArgumentNullException("value");
709 709
710 m_constantFields = value;710 m_constantFields = value;
@@ -774,14 +774,14 @@ namespace GSF.Historian.Files · 63 unmodified lines
774 PlantCode = Encoding.ASCII.GetString(buffer, startIndex + 1936, 24).Trim();774 PlantCode = Encoding.ASCII.GetString(buffer, startIndex + 1936, 24).Trim();
775 SystemName = Encoding.ASCII.GetString(buffer, startIndex + 1960, 24).Trim();775 SystemName = Encoding.ASCII.GetString(buffer, startIndex + 1960, 24).Trim();
776 EmailTime = Encoding.ASCII.GetString(buffer, startIndex + 1984, 40).Trim();776 EmailTime = Encoding.ASCII.GetString(buffer, startIndex + 1984, 40).Trim();
777 ScanRate = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 2104);777 ScanRate = LittleEndian.ToSingle(buffer, startIndex + 2104);
778 UnitNumber = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2108);778 UnitNumber = LittleEndian.ToInt32(buffer, startIndex + 2108);
779 SecurityFlags.Value = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2112);779 SecurityFlags.Value = LittleEndian.ToInt32(buffer, startIndex + 2112);
780 GeneralFlags.Value = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2116);780 GeneralFlags.Value = LittleEndian.ToInt32(buffer, startIndex + 2116);
781 AlarmFlags.Value = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2120);781 AlarmFlags.Value = LittleEndian.ToInt32(buffer, startIndex + 2120);
782 CompressionMinTime = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2124);782 CompressionMinTime = LittleEndian.ToInt32(buffer, startIndex + 2124);
783 CompressionMaxTime = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2128);783 CompressionMaxTime = LittleEndian.ToInt32(buffer, startIndex + 2128);
784 SourceID = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2132);784 SourceID = LittleEndian.ToInt32(buffer, startIndex + 2132);
785 switch (GeneralFlags.DataType)785 switch (GeneralFlags.DataType)
786 {786 {
787 case DataType.Analog:787 case DataType.Analog:
@@ -839,14 +839,14 @@ namespace GSF.Historian.Files · 51 unmodified lines
839 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_plantCode.PadRight(24)), 0, buffer, startIndex + 1936, 24);839 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_plantCode.PadRight(24)), 0, buffer, startIndex + 1936, 24);
840 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_system.PadRight(24)), 0, buffer, startIndex + 1960, 24);840 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_system.PadRight(24)), 0, buffer, startIndex + 1960, 24);
841 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_emailTime.PadRight(40)), 0, buffer, startIndex + 1984, 40);841 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_emailTime.PadRight(40)), 0, buffer, startIndex + 1984, 40);
842 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_scanRate), 0, buffer, startIndex + 2104, 4);842 Buffer.BlockCopy(LittleEndian.GetBytes(m_scanRate), 0, buffer, startIndex + 2104, 4);
843 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_unitNumber), 0, buffer, startIndex + 2108, 4);843 Buffer.BlockCopy(LittleEndian.GetBytes(m_unitNumber), 0, buffer, startIndex + 2108, 4);
844 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_securityFlags.Value), 0, buffer, startIndex + 2112, 4);844 Buffer.BlockCopy(LittleEndian.GetBytes(m_securityFlags.Value), 0, buffer, startIndex + 2112, 4);
845 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_generalFlags.Value), 0, buffer, startIndex + 2116, 4);845 Buffer.BlockCopy(LittleEndian.GetBytes(m_generalFlags.Value), 0, buffer, startIndex + 2116, 4);
846 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_alarmFlags.Value), 0, buffer, startIndex + 2120, 4);846 Buffer.BlockCopy(LittleEndian.GetBytes(m_alarmFlags.Value), 0, buffer, startIndex + 2120, 4);
847 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_compressionMinTime), 0, buffer, startIndex + 2124, 4);847 Buffer.BlockCopy(LittleEndian.GetBytes(m_compressionMinTime), 0, buffer, startIndex + 2124, 4);
848 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_compressionMaxTime), 0, buffer, startIndex + 2128, 4);848 Buffer.BlockCopy(LittleEndian.GetBytes(m_compressionMaxTime), 0, buffer, startIndex + 2128, 4);
849 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_sourceID), 0, buffer, startIndex + 2132, 4);849 Buffer.BlockCopy(LittleEndian.GetBytes(m_sourceID), 0, buffer, startIndex + 2132, 4);
850 switch (m_generalFlags.DataType)850 switch (m_generalFlags.DataType)
851 {851 {
852 case DataType.Analog:852 case DataType.Analog:
Source/Libraries/GSF.Historian/Files/MetadataRecordAnalogFields.cs+21−21
@@ -116,7 +116,7 @@ namespace GSF.Historian.Files · 115 unmodified lines
116 }116 }
117 set117 set
118 {118 {
119 if (value == null)119 if ((object)value == null)
120 throw new ArgumentNullException("value");120 throw new ArgumentNullException("value");
121 121
122 m_engineeringUnits = value.TruncateRight(24);122 m_engineeringUnits = value.TruncateRight(24);
@@ -301,16 +301,16 @@ namespace GSF.Historian.Files · 178 unmodified lines
301 {301 {
302 // Binary image has sufficient data.302 // Binary image has sufficient data.
303 EngineeringUnits = Encoding.ASCII.GetString(buffer, startIndex, 24).Trim();303 EngineeringUnits = Encoding.ASCII.GetString(buffer, startIndex, 24).Trim();
304 HighAlarm = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 24);304 HighAlarm = LittleEndian.ToSingle(buffer, startIndex + 24);
305 LowAlarm = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 28);305 LowAlarm = LittleEndian.ToSingle(buffer, startIndex + 28);
306 HighRange = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 32);306 HighRange = LittleEndian.ToSingle(buffer, startIndex + 32);
307 LowRange = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 36);307 LowRange = LittleEndian.ToSingle(buffer, startIndex + 36);
308 HighWarning = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 40);308 HighWarning = LittleEndian.ToSingle(buffer, startIndex + 40);
309 LowWarning = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 44);309 LowWarning = LittleEndian.ToSingle(buffer, startIndex + 44);
310 ExceptionLimit = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 48);310 ExceptionLimit = LittleEndian.ToSingle(buffer, startIndex + 48);
311 CompressionLimit = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 52);311 CompressionLimit = LittleEndian.ToSingle(buffer, startIndex + 52);
312 AlarmDelay = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 56);312 AlarmDelay = LittleEndian.ToSingle(buffer, startIndex + 56);
313 DisplayDigits = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 60);313 DisplayDigits = LittleEndian.ToInt32(buffer, startIndex + 60);
314 314
315 return FixedLength;315 return FixedLength;
316 }316 }
@@ -339,16 +339,16 @@ namespace GSF.Historian.Files · 22 unmodified lines
339 buffer.ValidateParameters(startIndex, length);339 buffer.ValidateParameters(startIndex, length);
340 340
341 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_engineeringUnits.PadRight(24)), 0, buffer, startIndex, 24);341 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_engineeringUnits.PadRight(24)), 0, buffer, startIndex, 24);
342 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highAlarm), 0, buffer, startIndex + 24, 4);342 Buffer.BlockCopy(LittleEndian.GetBytes(m_highAlarm), 0, buffer, startIndex + 24, 4);
343 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowAlarm), 0, buffer, startIndex + 28, 4);343 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowAlarm), 0, buffer, startIndex + 28, 4);
344 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highRange), 0, buffer, startIndex + 32, 4);344 Buffer.BlockCopy(LittleEndian.GetBytes(m_highRange), 0, buffer, startIndex + 32, 4);
345 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowRange), 0, buffer, startIndex + 36, 4);345 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowRange), 0, buffer, startIndex + 36, 4);
346 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highWarning), 0, buffer, startIndex + 40, 4);346 Buffer.BlockCopy(LittleEndian.GetBytes(m_highWarning), 0, buffer, startIndex + 40, 4);
347 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowWarning), 0, buffer, startIndex + 44, 4);347 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowWarning), 0, buffer, startIndex + 44, 4);
348 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_exceptionLimit), 0, buffer, startIndex + 48, 4);348 Buffer.BlockCopy(LittleEndian.GetBytes(m_exceptionLimit), 0, buffer, startIndex + 48, 4);
349 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_compressionLimit), 0, buffer, startIndex + 52, 4);349 Buffer.BlockCopy(LittleEndian.GetBytes(m_compressionLimit), 0, buffer, startIndex + 52, 4);
350 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_alarmDelay), 0, buffer, startIndex + 56, 4);350 Buffer.BlockCopy(LittleEndian.GetBytes(m_alarmDelay), 0, buffer, startIndex + 56, 4);
351 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_displayDigits), 0, buffer, startIndex + 60, 4);351 Buffer.BlockCopy(LittleEndian.GetBytes(m_displayDigits), 0, buffer, startIndex + 60, 4);
352 352
353 return length;353 return length;
354 }354 }
Source/Libraries/GSF.Historian/Files/MetadataRecordComposedFields.cs+20−20
@@ -234,7 +234,7 @@ namespace GSF.Historian.Files · 233 unmodified lines
234 }234 }
235 set235 set
236 {236 {
237 if (value == null)237 if ((object)value == null)
238 throw new ArgumentNullException("value");238 throw new ArgumentNullException("value");
239 239
240 m_engineeringUnits = value.TruncateRight(24);240 m_engineeringUnits = value.TruncateRight(24);
@@ -253,7 +253,7 @@ namespace GSF.Historian.Files · 12 unmodified lines
253 }253 }
254 set254 set
255 {255 {
256 if (value == null)256 if ((object)value == null)
257 throw new ArgumentNullException("value");257 throw new ArgumentNullException("value");
258 258
259 m_equation = value.TruncateRight(256);259 m_equation = value.TruncateRight(256);
@@ -302,20 +302,20 @@ namespace GSF.Historian.Files · 42 unmodified lines
302 if (length >= FixedLength)302 if (length >= FixedLength)
303 {303 {
304 // Binary image has sufficient data.304 // Binary image has sufficient data.
305 HighAlarm = EndianOrder.LittleEndian.ToSingle(buffer, startIndex);305 HighAlarm = LittleEndian.ToSingle(buffer, startIndex);
306 LowAlarm = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 4);306 LowAlarm = LittleEndian.ToSingle(buffer, startIndex + 4);
307 HighRange = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 8);307 HighRange = LittleEndian.ToSingle(buffer, startIndex + 8);
308 LowRange = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 12);308 LowRange = LittleEndian.ToSingle(buffer, startIndex + 12);
309 LowWarning = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 16);309 LowWarning = LittleEndian.ToSingle(buffer, startIndex + 16);
310 HighWarning = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 20);310 HighWarning = LittleEndian.ToSingle(buffer, startIndex + 20);
311 DisplayDigits = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 24);311 DisplayDigits = LittleEndian.ToInt32(buffer, startIndex + 24);
312 for (int i = 0; i < m_inputPointers.Count; i++)312 for (int i = 0; i < m_inputPointers.Count; i++)
313 {313 {
314 m_inputPointers[i] = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 28 + (i * 4));314 m_inputPointers[i] = LittleEndian.ToInt32(buffer, startIndex + 28 + (i * 4));
315 }315 }
316 EngineeringUnits = Encoding.ASCII.GetString(buffer, startIndex + 76, 24).Trim();316 EngineeringUnits = Encoding.ASCII.GetString(buffer, startIndex + 76, 24).Trim();
317 Equation = Encoding.ASCII.GetString(buffer, startIndex + 100, 256).Trim();317 Equation = Encoding.ASCII.GetString(buffer, startIndex + 100, 256).Trim();
318 CompressionLimit = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 356);318 CompressionLimit = LittleEndian.ToSingle(buffer, startIndex + 356);
319 319
320 return FixedLength;320 return FixedLength;
321 }321 }
@@ -343,20 +343,20 @@ namespace GSF.Historian.Files · 21 unmodified lines
343 343
344 buffer.ValidateParameters(startIndex, length);344 buffer.ValidateParameters(startIndex, length);
345 345
346 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highAlarm), 0, buffer, startIndex, 4);346 Buffer.BlockCopy(LittleEndian.GetBytes(m_highAlarm), 0, buffer, startIndex, 4);
347 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowAlarm), 0, buffer, startIndex + 4, 4);347 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowAlarm), 0, buffer, startIndex + 4, 4);
348 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highRange), 0, buffer, startIndex + 8, 4);348 Buffer.BlockCopy(LittleEndian.GetBytes(m_highRange), 0, buffer, startIndex + 8, 4);
349 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowRange), 0, buffer, startIndex + 12, 4);349 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowRange), 0, buffer, startIndex + 12, 4);
350 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowWarning), 0, buffer, startIndex + 16, 4);350 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowWarning), 0, buffer, startIndex + 16, 4);
351 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highWarning), 0, buffer, startIndex + 20, 4);351 Buffer.BlockCopy(LittleEndian.GetBytes(m_highWarning), 0, buffer, startIndex + 20, 4);
352 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_displayDigits), 0, buffer, startIndex + 24, 4);352 Buffer.BlockCopy(LittleEndian.GetBytes(m_displayDigits), 0, buffer, startIndex + 24, 4);
353 for (int i = 0; i < m_inputPointers.Count; i++)353 for (int i = 0; i < m_inputPointers.Count; i++)
354 {354 {
355 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_inputPointers[i]), 0, buffer, startIndex + 28 + (i * 4), 4);355 Buffer.BlockCopy(LittleEndian.GetBytes(m_inputPointers[i]), 0, buffer, startIndex + 28 + (i * 4), 4);
356 }356 }
357 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_engineeringUnits.PadRight(24)), 0, buffer, startIndex + 76, 24);357 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_engineeringUnits.PadRight(24)), 0, buffer, startIndex + 76, 24);
358 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_equation.PadRight(256)), 0, buffer, startIndex + 100, 256);358 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_equation.PadRight(256)), 0, buffer, startIndex + 100, 256);
359 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_compressionLimit), 0, buffer, startIndex + 356, 4);359 Buffer.BlockCopy(LittleEndian.GetBytes(m_compressionLimit), 0, buffer, startIndex + 356, 4);
360 360
361 return length;361 return length;
362 }362 }
Source/Libraries/GSF.Historian/Files/MetadataRecordConstantFields.cs+4−4
@@ -136,8 +136,8 @@ namespace GSF.Historian.Files · 135 unmodified lines
136 if (length >= FixedLength)136 if (length >= FixedLength)
137 {137 {
138 // Binary image has sufficient data.138 // Binary image has sufficient data.
139 Value = EndianOrder.LittleEndian.ToSingle(buffer, startIndex);139 Value = LittleEndian.ToSingle(buffer, startIndex);
140 DisplayDigits = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 4);140 DisplayDigits = LittleEndian.ToInt32(buffer, startIndex + 4);
141 141
142 return FixedLength;142 return FixedLength;
143 }143 }
@@ -165,8 +165,8 @@ namespace GSF.Historian.Files · 21 unmodified lines
165 165
166 buffer.ValidateParameters(startIndex, length);166 buffer.ValidateParameters(startIndex, length);
167 167
168 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_value), 0, buffer, startIndex, 4);168 Buffer.BlockCopy(LittleEndian.GetBytes(m_value), 0, buffer, startIndex, 4);
169 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_displayDigits), 0, buffer, startIndex + 4, 4);169 Buffer.BlockCopy(LittleEndian.GetBytes(m_displayDigits), 0, buffer, startIndex + 4, 4);
170 170
171 return length;171 return length;
172 }172 }
Source/Libraries/GSF.Historian/Files/MetadataRecordDigitalFields.cs+4−4
@@ -188,8 +188,8 @@ namespace GSF.Historian.Files · 187 unmodified lines
188 // Binary image has sufficient data.188 // Binary image has sufficient data.
189 SetDescription = Encoding.ASCII.GetString(buffer, startIndex, 24).Trim();189 SetDescription = Encoding.ASCII.GetString(buffer, startIndex, 24).Trim();
190 ClearDescription = Encoding.ASCII.GetString(buffer, startIndex + 24, 24).Trim();190 ClearDescription = Encoding.ASCII.GetString(buffer, startIndex + 24, 24).Trim();
191 AlarmState = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 48);191 AlarmState = LittleEndian.ToInt32(buffer, startIndex + 48);
192 AlarmDelay = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 52);192 AlarmDelay = LittleEndian.ToSingle(buffer, startIndex + 52);
193 193
194 return FixedLength;194 return FixedLength;
195 }195 }
@@ -219,8 +219,8 @@ namespace GSF.Historian.Files · 23 unmodified lines
219 219
220 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_setDescription.PadRight(24)), 0, buffer, startIndex, 24);220 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_setDescription.PadRight(24)), 0, buffer, startIndex, 24);
221 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_clearDescription.PadRight(24)), 0, buffer, startIndex + 24, 24);221 Buffer.BlockCopy(Encoding.ASCII.GetBytes(m_clearDescription.PadRight(24)), 0, buffer, startIndex + 24, 24);
222 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_alarmState), 0, buffer, startIndex + 48, 4);222 Buffer.BlockCopy(LittleEndian.GetBytes(m_alarmState), 0, buffer, startIndex + 48, 4);
223 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_alarmDelay), 0, buffer, startIndex + 52, 4);223 Buffer.BlockCopy(LittleEndian.GetBytes(m_alarmDelay), 0, buffer, startIndex + 52, 4);
224 224
225 return length;225 return length;
226 }226 }
Source/Libraries/GSF.Historian/Files/MetadataRecordSummary.cs+18−18
@@ -282,15 +282,15 @@ namespace GSF.Historian.Files · 281 unmodified lines
282 if (length >= FixedLength)282 if (length >= FixedLength)
283 {283 {
284 // Binary image has sufficient data.284 // Binary image has sufficient data.
285 HistorianID = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 0);285 HistorianID = LittleEndian.ToInt32(buffer, startIndex + 0);
286 ExceptionLimit = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 4);286 ExceptionLimit = LittleEndian.ToSingle(buffer, startIndex + 4);
287 Enabled = Convert.ToBoolean(EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 8));287 Enabled = Convert.ToBoolean(LittleEndian.ToInt32(buffer, startIndex + 8));
288 HighWarning = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 12);288 HighWarning = LittleEndian.ToSingle(buffer, startIndex + 12);
289 LowWarning = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 16);289 LowWarning = LittleEndian.ToSingle(buffer, startIndex + 16);
290 HighAlarm = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 20);290 HighAlarm = LittleEndian.ToSingle(buffer, startIndex + 20);
291 LowAlarm = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 24);291 LowAlarm = LittleEndian.ToSingle(buffer, startIndex + 24);
292 HighRange = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 28);292 HighRange = LittleEndian.ToSingle(buffer, startIndex + 28);
293 LowRange = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 32);293 LowRange = LittleEndian.ToSingle(buffer, startIndex + 32);
294 294
295 return FixedLength;295 return FixedLength;
296 }296 }
@@ -318,15 +318,15 @@ namespace GSF.Historian.Files · 21 unmodified lines
318 318
319 buffer.ValidateParameters(startIndex, length);319 buffer.ValidateParameters(startIndex, length);
320 320
321 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex, 4);321 Buffer.BlockCopy(LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex, 4);
322 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_exceptionLimit), 0, buffer, startIndex + 4, 4);322 Buffer.BlockCopy(LittleEndian.GetBytes(m_exceptionLimit), 0, buffer, startIndex + 4, 4);
323 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(Convert.ToInt32(m_enabled)), 0, buffer, startIndex + 8, 4);323 Buffer.BlockCopy(LittleEndian.GetBytes(Convert.ToInt32(m_enabled)), 0, buffer, startIndex + 8, 4);
324 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highWarning), 0, buffer, startIndex + 12, 4);324 Buffer.BlockCopy(LittleEndian.GetBytes(m_highWarning), 0, buffer, startIndex + 12, 4);
325 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowWarning), 0, buffer, startIndex + 16, 4);325 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowWarning), 0, buffer, startIndex + 16, 4);
326 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highAlarm), 0, buffer, startIndex + 20, 4);326 Buffer.BlockCopy(LittleEndian.GetBytes(m_highAlarm), 0, buffer, startIndex + 20, 4);
327 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowAlarm), 0, buffer, startIndex + 24, 4);327 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowAlarm), 0, buffer, startIndex + 24, 4);
328 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_highRange), 0, buffer, startIndex + 28, 4);328 Buffer.BlockCopy(LittleEndian.GetBytes(m_highRange), 0, buffer, startIndex + 28, 4);
329 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_lowRange), 0, buffer, startIndex + 32, 4);329 Buffer.BlockCopy(LittleEndian.GetBytes(m_lowRange), 0, buffer, startIndex + 32, 4);
330 330
331 return length;331 return length;
332 }332 }
Source/Libraries/GSF.Historian/Files/StateRecord.cs+7−7
@@ -128,7 +128,7 @@ namespace GSF.Historian.Files · 127 unmodified lines
128 }128 }
129 set129 set
130 {130 {
131 if (value == null)131 if ((object)value == null)
132 throw new ArgumentNullException("value");132 throw new ArgumentNullException("value");
133 133
134 m_archivedData = value;134 m_archivedData = value;
@@ -147,7 +147,7 @@ namespace GSF.Historian.Files · 12 unmodified lines
147 }147 }
148 set148 set
149 {149 {
150 if (value == null)150 if ((object)value == null)
151 throw new ArgumentNullException("value");151 throw new ArgumentNullException("value");
152 152
153 m_previousData = value;153 m_previousData = value;
@@ -166,7 +166,7 @@ namespace GSF.Historian.Files · 12 unmodified lines
166 }166 }
167 set167 set
168 {168 {
169 if (value == null)169 if ((object)value == null)
170 throw new ArgumentNullException("value");170 throw new ArgumentNullException("value");
171 171
172 m_currentData = value;172 m_currentData = value;
@@ -295,10 +295,10 @@ namespace GSF.Historian.Files · 122 unmodified lines
295 m_archivedData.ParseBinaryImage(buffer, startIndex, length);295 m_archivedData.ParseBinaryImage(buffer, startIndex, length);
296 m_previousData.ParseBinaryImage(buffer, startIndex + 16, length - 16);296 m_previousData.ParseBinaryImage(buffer, startIndex + 16, length - 16);
297 m_currentData.ParseBinaryImage(buffer, startIndex + 32, length - 32);297 m_currentData.ParseBinaryImage(buffer, startIndex + 32, length - 32);
298 ActiveDataBlockIndex = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 48) - 1;298 ActiveDataBlockIndex = LittleEndian.ToInt32(buffer, startIndex + 48) - 1;
299 ActiveDataBlockSlot = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 52);299 ActiveDataBlockSlot = LittleEndian.ToInt32(buffer, startIndex + 52);
300 Slope1 = EndianOrder.LittleEndian.ToDouble(buffer, startIndex + 56);300 Slope1 = LittleEndian.ToDouble(buffer, startIndex + 56);
301 Slope2 = EndianOrder.LittleEndian.ToDouble(buffer, startIndex + 64);301 Slope2 = LittleEndian.ToDouble(buffer, startIndex + 64);
302 302
303 return FixedLength;303 return FixedLength;
304 }304 }
Source/Libraries/GSF.Historian/Files/StateRecordDataPoint.cs+3−3
@@ -200,9 +200,9 @@ namespace GSF.Historian.Files · 199 unmodified lines
200 if (length >= FixedLength)200 if (length >= FixedLength)
201 {201 {
202 // Binary image has sufficient data.202 // Binary image has sufficient data.
203 Time = new TimeTag(EndianOrder.LittleEndian.ToDouble(buffer, startIndex));203 Time = new TimeTag(LittleEndian.ToDouble(buffer, startIndex));
204 Flags = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 8);204 Flags = LittleEndian.ToInt32(buffer, startIndex + 8);
205 Value = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 12);205 Value = LittleEndian.ToSingle(buffer, startIndex + 12);
206 206
207 return FixedLength;207 return FixedLength;
208 }208 }
Source/Libraries/GSF.Historian/Files/StateRecordSummary.cs+3−3
@@ -126,7 +126,7 @@ namespace GSF.Historian.Files · 125 unmodified lines
126 }126 }
127 private set127 private set
128 {128 {
129 if (value == null)129 if ((object)value == null)
130 throw new ArgumentNullException("value");130 throw new ArgumentNullException("value");
131 131
132 m_currentData = value;132 m_currentData = value;
@@ -160,7 +160,7 @@ namespace GSF.Historian.Files · 27 unmodified lines
160 if (length >= FixedLength)160 if (length >= FixedLength)
161 {161 {
162 // Binary image has sufficient data.162 // Binary image has sufficient data.
163 HistorianID = EndianOrder.LittleEndian.ToInt32(buffer, startIndex);163 HistorianID = LittleEndian.ToInt32(buffer, startIndex);
164 CurrentData = new StateRecordDataPoint(HistorianID, buffer, startIndex + 4, length - 4);164 CurrentData = new StateRecordDataPoint(HistorianID, buffer, startIndex + 4, length - 4);
165 165
166 return FixedLength;166 return FixedLength;
@@ -189,7 +189,7 @@ namespace GSF.Historian.Files · 22 unmodified lines
189 189
190 buffer.ValidateParameters(startIndex, length);190 buffer.ValidateParameters(startIndex, length);
191 191
192 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex, 4);192 Buffer.BlockCopy(LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex, 4);
193 m_currentData.GenerateBinaryImage(buffer, startIndex + 4);193 m_currentData.GenerateBinaryImage(buffer, startIndex + 4);
194 194
195 return length;195 return length;
Source/Libraries/GSF.Historian/Packets/PacketCommonHeader.cs+1−1
@@ -49,7 +49,7 @@ namespace GSF.Historian.Packets · 48 unmodified lines
49 public PacketCommonHeader(byte[] buffer, int startIndex, int length)49 public PacketCommonHeader(byte[] buffer, int startIndex, int length)
50 {50 {
51 if (length > 1)51 if (length > 1)
52 TypeID = EndianOrder.LittleEndian.ToInt16(buffer, startIndex);52 TypeID = LittleEndian.ToInt16(buffer, startIndex);
53 else53 else
54 throw new InvalidOperationException("Not enough length available to parse common header");54 throw new InvalidOperationException("Not enough length available to parse common header");
55 }55 }
Source/Libraries/GSF.Historian/Packets/PacketType1.cs+10−10
@@ -234,15 +234,15 @@ namespace GSF.Historian.Packets · 233 unmodified lines
234 if (length >= FixedLength)234 if (length >= FixedLength)
235 {235 {
236 // Binary image has sufficient data.236 // Binary image has sufficient data.
237 short packetID = EndianOrder.LittleEndian.ToInt16(buffer, startIndex);237 short packetID = LittleEndian.ToInt16(buffer, startIndex);
238 if (packetID != TypeID)238 if (packetID != TypeID)
239 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));239 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));
240 240
241 // We have a binary image with the correct packet id.241 // We have a binary image with the correct packet id.
242 HistorianID = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2);242 HistorianID = LittleEndian.ToInt32(buffer, startIndex + 2);
243 Time = new TimeTag(EndianOrder.LittleEndian.ToDouble(buffer, startIndex + 6));243 Time = new TimeTag(LittleEndian.ToDouble(buffer, startIndex + 6));
244 Quality = (Quality)(EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 14));244 Quality = (Quality)(LittleEndian.ToInt32(buffer, startIndex + 14));
245 Value = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 18);245 Value = LittleEndian.ToSingle(buffer, startIndex + 18);
246 246
247 // We'll send an "ACK" to the sender if this is the last packet in the transmission.247 // We'll send an "ACK" to the sender if this is the last packet in the transmission.
248 if (length == FixedLength)248 if (length == FixedLength)
@@ -274,11 +274,11 @@ namespace GSF.Historian.Packets · 25 unmodified lines
274 274
275 buffer.ValidateParameters(startIndex, length);275 buffer.ValidateParameters(startIndex, length);
276 276
277 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);277 Buffer.BlockCopy(LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);
278 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex + 2, 4);278 Buffer.BlockCopy(LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex + 2, 4);
279 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_time.Value), 0, buffer, startIndex + 6, 8);279 Buffer.BlockCopy(LittleEndian.GetBytes(m_time.Value), 0, buffer, startIndex + 6, 8);
280 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes((int)m_quality), 0, buffer, startIndex + 14, 4);280 Buffer.BlockCopy(LittleEndian.GetBytes((int)m_quality), 0, buffer, startIndex + 14, 4);
281 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_value), 0, buffer, startIndex + 18, 4);281 Buffer.BlockCopy(LittleEndian.GetBytes(m_value), 0, buffer, startIndex + 18, 4);
282 282
283 return length;283 return length;
284 }284 }
Source/Libraries/GSF.Historian/Packets/PacketType101.cs+4−4
@@ -166,12 +166,12 @@ namespace GSF.Historian.Packets · 165 unmodified lines
166 if (length >= 6)166 if (length >= 6)
167 {167 {
168 // Binary image has sufficient data.168 // Binary image has sufficient data.
169 short packetID = EndianOrder.LittleEndian.ToInt16(buffer, startIndex);169 short packetID = LittleEndian.ToInt16(buffer, startIndex);
170 if (packetID != TypeID)170 if (packetID != TypeID)
171 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));171 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));
172 172
173 // Ensure that the binary image is complete173 // Ensure that the binary image is complete
174 int dataCount = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2);174 int dataCount = LittleEndian.ToInt32(buffer, startIndex + 2);
175 if (length < 6 + dataCount * PacketType101DataPoint.FixedLength)175 if (length < 6 + dataCount * PacketType101DataPoint.FixedLength)
176 return 0;176 return 0;
177 177
@@ -210,8 +210,8 @@ namespace GSF.Historian.Packets · 32 unmodified lines
210 210
211 buffer.ValidateParameters(startIndex, length);211 buffer.ValidateParameters(startIndex, length);
212 212
213 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);213 Buffer.BlockCopy(LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);
214 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_data.Count), 0, buffer, startIndex + 2, 4);214 Buffer.BlockCopy(LittleEndian.GetBytes(m_data.Count), 0, buffer, startIndex + 2, 4);
215 for (int i = 0; i < m_data.Count; i++)215 for (int i = 0; i < m_data.Count; i++)
216 {216 {
217 m_data[i].GenerateBinaryImage(buffer, startIndex + 6 + (i * PacketType101DataPoint.FixedLength));217 m_data[i].GenerateBinaryImage(buffer, startIndex + 6 + (i * PacketType101DataPoint.FixedLength));
Source/Libraries/GSF.Historian/Packets/PacketType101DataPoint.cs+8−8
@@ -135,10 +135,10 @@ namespace GSF.Historian.Packets · 134 unmodified lines
135 if (length >= FixedLength)135 if (length >= FixedLength)
136 {136 {
137 // Binary image has sufficient data.137 // Binary image has sufficient data.
138 HistorianID = EndianOrder.LittleEndian.ToInt32(buffer, startIndex);138 HistorianID = LittleEndian.ToInt32(buffer, startIndex);
139 Flags = EndianOrder.LittleEndian.ToInt16(buffer, startIndex + 8);139 Flags = LittleEndian.ToInt16(buffer, startIndex + 8);
140 Value = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 10);140 Value = LittleEndian.ToSingle(buffer, startIndex + 10);
141 Time = new TimeTag(EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 4) + // Seconds141 Time = new TimeTag(LittleEndian.ToInt32(buffer, startIndex + 4) + // Seconds
142 ((double)(Flags.GetMaskedValue(MillisecondMask) >> 5) / 1000)); // Milliseconds142 ((double)(Flags.GetMaskedValue(MillisecondMask) >> 5) / 1000)); // Milliseconds
143 143
144 return FixedLength;144 return FixedLength;
@@ -167,10 +167,10 @@ namespace GSF.Historian.Packets · 22 unmodified lines
167 167
168 buffer.ValidateParameters(startIndex, length);168 buffer.ValidateParameters(startIndex, length);
169 169
170 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(HistorianID), 0, buffer, startIndex, 4);170 Buffer.BlockCopy(LittleEndian.GetBytes(HistorianID), 0, buffer, startIndex, 4);
171 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes((int)Time.Value), 0, buffer, startIndex + 4, 4);171 Buffer.BlockCopy(LittleEndian.GetBytes((int)Time.Value), 0, buffer, startIndex + 4, 4);
172 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes((short)Flags), 0, buffer, startIndex + 8, 2);172 Buffer.BlockCopy(LittleEndian.GetBytes((short)Flags), 0, buffer, startIndex + 8, 2);
173 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(Value), 0, buffer, startIndex + 10, 4);173 Buffer.BlockCopy(LittleEndian.GetBytes(Value), 0, buffer, startIndex + 10, 4);
174 174
175 return length;175 return length;
176 }176 }
Source/Libraries/GSF.Historian/Packets/PacketType2.cs+18−18
@@ -339,22 +339,22 @@ namespace GSF.Historian.Packets · 338 unmodified lines
339 if (length >= FixedLength)339 if (length >= FixedLength)
340 {340 {
341 // Binary image has sufficient data.341 // Binary image has sufficient data.
342 short packetID = EndianOrder.LittleEndian.ToInt16(buffer, startIndex);342 short packetID = LittleEndian.ToInt16(buffer, startIndex);
343 if (packetID != TypeID)343 if (packetID != TypeID)
344 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));344 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));
345 345
346 // We have a binary image with the correct packet id.346 // We have a binary image with the correct packet id.
347 HistorianID = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2);347 HistorianID = LittleEndian.ToInt32(buffer, startIndex + 2);
348 Year = EndianOrder.LittleEndian.ToInt16(buffer, startIndex + 6);348 Year = LittleEndian.ToInt16(buffer, startIndex + 6);
349 Month = Convert.ToInt16(buffer[startIndex + 8]);349 Month = Convert.ToInt16(buffer[startIndex + 8]);
350 Day = Convert.ToInt16(buffer[startIndex + 9]);350 Day = Convert.ToInt16(buffer[startIndex + 9]);
351 Hour = Convert.ToInt16(buffer[startIndex + 10]);351 Hour = Convert.ToInt16(buffer[startIndex + 10]);
352 Minute = Convert.ToInt16(buffer[startIndex + 11]);352 Minute = Convert.ToInt16(buffer[startIndex + 11]);
353 Second = Convert.ToInt16(buffer[startIndex + 12]);353 Second = Convert.ToInt16(buffer[startIndex + 12]);
354 Quality = (Quality)(buffer[startIndex + 13]);354 Quality = (Quality)(buffer[startIndex + 13]);
355 Millisecond = EndianOrder.LittleEndian.ToInt16(buffer, startIndex + 14);355 Millisecond = LittleEndian.ToInt16(buffer, startIndex + 14);
356 GmtOffset = EndianOrder.LittleEndian.ToInt16(buffer, startIndex + 16);356 GmtOffset = LittleEndian.ToInt16(buffer, startIndex + 16);
357 Value = EndianOrder.LittleEndian.ToSingle(buffer, startIndex + 18);357 Value = LittleEndian.ToSingle(buffer, startIndex + 18);
358 358
359 // We'll send an "ACK" to the sender if this is the last packet in the transmission.359 // We'll send an "ACK" to the sender if this is the last packet in the transmission.
360 if (length == FixedLength)360 if (length == FixedLength)
@@ -386,18 +386,18 @@ namespace GSF.Historian.Packets · 25 unmodified lines
386 386
387 buffer.ValidateParameters(startIndex, length);387 buffer.ValidateParameters(startIndex, length);
388 388
389 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);389 Buffer.BlockCopy(LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);
390 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex + 2, 4);390 Buffer.BlockCopy(LittleEndian.GetBytes(m_historianID), 0, buffer, startIndex + 2, 4);
391 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_year), 0, buffer, startIndex + 6, 2);391 Buffer.BlockCopy(LittleEndian.GetBytes(m_year), 0, buffer, startIndex + 6, 2);
392 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_month), 0, buffer, startIndex + 8, 1);392 Buffer.BlockCopy(LittleEndian.GetBytes(m_month), 0, buffer, startIndex + 8, 1);
393 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_day), 0, buffer, startIndex + 9, 1);393 Buffer.BlockCopy(LittleEndian.GetBytes(m_day), 0, buffer, startIndex + 9, 1);
394 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_hour), 0, buffer, startIndex + 10, 1);394 Buffer.BlockCopy(LittleEndian.GetBytes(m_hour), 0, buffer, startIndex + 10, 1);
395 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_minute), 0, buffer, startIndex + 11, 1);395 Buffer.BlockCopy(LittleEndian.GetBytes(m_minute), 0, buffer, startIndex + 11, 1);
396 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_second), 0, buffer, startIndex + 12, 1);396 Buffer.BlockCopy(LittleEndian.GetBytes(m_second), 0, buffer, startIndex + 12, 1);
397 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes((int)m_quality), 0, buffer, startIndex + 13, 1);397 Buffer.BlockCopy(LittleEndian.GetBytes((int)m_quality), 0, buffer, startIndex + 13, 1);
398 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_millisecond), 0, buffer, startIndex + 14, 2);398 Buffer.BlockCopy(LittleEndian.GetBytes(m_millisecond), 0, buffer, startIndex + 14, 2);
399 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_gmtOffset), 0, buffer, startIndex + 16, 2);399 Buffer.BlockCopy(LittleEndian.GetBytes(m_gmtOffset), 0, buffer, startIndex + 16, 2);
400 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_value), 0, buffer, startIndex + 18, 4);400 Buffer.BlockCopy(LittleEndian.GetBytes(m_value), 0, buffer, startIndex + 18, 4);
401 401
402 return length;402 return length;
403 }403 }
Source/Libraries/GSF.Historian/Packets/PacketType5.cs+2−2
@@ -113,7 +113,7 @@ namespace GSF.Historian.Packets · 112 unmodified lines
113 if (length >= FixedLength)113 if (length >= FixedLength)
114 {114 {
115 // Binary image has sufficient data.115 // Binary image has sufficient data.
116 short packetID = EndianOrder.LittleEndian.ToInt16(buffer, startIndex);116 short packetID = LittleEndian.ToInt16(buffer, startIndex);
117 if (packetID != TypeID)117 if (packetID != TypeID)
118 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));118 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));
119 119
@@ -143,7 +143,7 @@ namespace GSF.Historian.Packets · 23 unmodified lines
143 143
144 buffer.ValidateParameters(startIndex, length);144 buffer.ValidateParameters(startIndex, length);
145 145
146 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);146 Buffer.BlockCopy(LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);
147 147
148 return length;148 return length;
149 }149 }
Source/Libraries/GSF.Historian/Packets/QueryPacketBase.cs+6−6
@@ -114,12 +114,12 @@ namespace GSF.Historian.Packets · 113 unmodified lines
114 if (length >= 6)114 if (length >= 6)
115 {115 {
116 // Binary image has sufficient data.116 // Binary image has sufficient data.
117 short packetID = EndianOrder.LittleEndian.ToInt16(buffer, startIndex);117 short packetID = LittleEndian.ToInt16(buffer, startIndex);
118 if (packetID != TypeID)118 if (packetID != TypeID)
119 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));119 throw new ArgumentException(string.Format("Unexpected packet id '{0}' (expected '{1}')", packetID, TypeID));
120 120
121 // Ensure that the binary image is complete121 // Ensure that the binary image is complete
122 int requestIDCount = EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2);122 int requestIDCount = LittleEndian.ToInt32(buffer, startIndex + 2);
123 if (length < 6 + requestIDCount * 4)123 if (length < 6 + requestIDCount * 4)
124 return 0;124 return 0;
125 125
@@ -127,7 +127,7 @@ namespace GSF.Historian.Packets · 1 unmodified line
127 m_requestIDs.Clear();127 m_requestIDs.Clear();
128 for (int i = 0; i < requestIDCount; i++)128 for (int i = 0; i < requestIDCount; i++)
129 {129 {
130 m_requestIDs.Add(EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 6 + (i * 4)));130 m_requestIDs.Add(LittleEndian.ToInt32(buffer, startIndex + 6 + (i * 4)));
131 }131 }
132 132
133 return BinaryLength;133 return BinaryLength;
@@ -156,11 +156,11 @@ namespace GSF.Historian.Packets · 22 unmodified lines
156 156
157 buffer.ValidateParameters(startIndex, length);157 buffer.ValidateParameters(startIndex, length);
158 158
159 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);159 Buffer.BlockCopy(LittleEndian.GetBytes(TypeID), 0, buffer, startIndex, 2);
160 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_requestIDs.Count), 0, buffer, startIndex + 2, 4);160 Buffer.BlockCopy(LittleEndian.GetBytes(m_requestIDs.Count), 0, buffer, startIndex + 2, 4);
161 for (int i = 0; i < m_requestIDs.Count; i++)161 for (int i = 0; i < m_requestIDs.Count; i++)
162 {162 {
163 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(m_requestIDs[i]), 0, buffer, startIndex + 6 + (i * 4), 4);163 Buffer.BlockCopy(LittleEndian.GetBytes(m_requestIDs[i]), 0, buffer, startIndex + 6 + (i * 4), 4);
164 }164 }
165 165
166 return length;166 return length;
Source/Libraries/GSF.Media/RiffChunk.cs+3−3
@@ -225,7 +225,7 @@ namespace GSF.Media · 224 unmodified lines
225 buffer.ValidateParameters(startIndex, FixedLength);225 buffer.ValidateParameters(startIndex, FixedLength);
226 226
227 Buffer.BlockCopy(Encoding.ASCII.GetBytes(TypeID), 0, buffer, 0, 4);227 Buffer.BlockCopy(Encoding.ASCII.GetBytes(TypeID), 0, buffer, 0, 4);
228 Buffer.BlockCopy(EndianOrder.LittleEndian.GetBytes(ChunkSize), 0, buffer, 4, 4);228 Buffer.BlockCopy(LittleEndian.GetBytes(ChunkSize), 0, buffer, 4, 4);
229 229
230 return FixedLength;230 return FixedLength;
231 }231 }
@@ -274,13 +274,13 @@ namespace GSF.Media · 42 unmodified lines
274 throw new InvalidOperationException("RIFF chunk too small, media file corrupted");274 throw new InvalidOperationException("RIFF chunk too small, media file corrupted");
275 275
276 riffChunk.TypeID = Encoding.ASCII.GetString(buffer, 0, 4);276 riffChunk.TypeID = Encoding.ASCII.GetString(buffer, 0, 4);
277 riffChunk.ChunkSize = EndianOrder.LittleEndian.ToInt32(buffer, 4);277 riffChunk.ChunkSize = LittleEndian.ToInt32(buffer, 4);
278 278
279 return riffChunk;279 return riffChunk;
280 }280 }
281 finally281 finally
282 {282 {
283 if (buffer != null)283 if ((object)buffer != null)
284 BufferPool.ReturnBuffer(buffer);284 BufferPool.ReturnBuffer(buffer);
285 }285 }
286 }286 }
Source/Libraries/GSF.Media/RiffHeaderChunk.cs+1−1
@@ -140,7 +140,7 @@ namespace GSF.Media · 139 unmodified lines
140 }140 }
141 finally141 finally
142 {142 {
143 if (buffer != null)143 if ((object)buffer != null)
144 BufferPool.ReturnBuffer(buffer);144 BufferPool.ReturnBuffer(buffer);
145 }145 }
146 }146 }
Source/Libraries/GSF.Media/WaveDataChunk.cs+1−1
@@ -141,7 +141,7 @@ namespace GSF.Media · 140 unmodified lines
141 }141 }
142 finally142 finally
143 {143 {
144 if (buffer != null)144 if ((object)buffer != null)
145 BufferPool.ReturnBuffer(buffer);145 BufferPool.ReturnBuffer(buffer);
146 }146 }
147 }147 }
Source/Libraries/GSF.Media/WaveFormatChunk.cs+15−15
@@ -147,7 +147,7 @@ namespace GSF.Media · 146 unmodified lines
147 }147 }
148 finally148 finally
149 {149 {
150 if (buffer != null)150 if ((object)buffer != null)
151 BufferPool.ReturnBuffer(buffer);151 BufferPool.ReturnBuffer(buffer);
152 }152 }
153 }153 }
@@ -382,19 +382,19 @@ namespace GSF.Media · 228 unmodified lines
382 if (length < ChunkSize)382 if (length < ChunkSize)
383 throw new InvalidOperationException("WAVE format section too small, wave file corrupted");383 throw new InvalidOperationException("WAVE format section too small, wave file corrupted");
384 384
385 m_audioFormat = EndianOrder.LittleEndian.ToUInt16(buffer, 0);385 m_audioFormat = LittleEndian.ToUInt16(buffer, 0);
386 m_channels = EndianOrder.LittleEndian.ToInt16(buffer, 2);386 m_channels = LittleEndian.ToInt16(buffer, 2);
387 m_sampleRate = EndianOrder.LittleEndian.ToInt32(buffer, 4);387 m_sampleRate = LittleEndian.ToInt32(buffer, 4);
388 m_byteRate = EndianOrder.LittleEndian.ToInt32(buffer, 8);388 m_byteRate = LittleEndian.ToInt32(buffer, 8);
389 m_blockAlignment = EndianOrder.LittleEndian.ToInt16(buffer, 12);389 m_blockAlignment = LittleEndian.ToInt16(buffer, 12);
390 m_bitsPerSample = EndianOrder.LittleEndian.ToInt16(buffer, 14);390 m_bitsPerSample = LittleEndian.ToInt16(buffer, 14);
391 391
392 if (m_bitsPerSample % 8 != 0)392 if (m_bitsPerSample % 8 != 0)
393 throw new InvalidDataException("Invalid bit rate encountered - wave file bit rates must be a multiple of 8");393 throw new InvalidDataException("Invalid bit rate encountered - wave file bit rates must be a multiple of 8");
394 394
395 if (length > 16)395 if (length > 16)
396 {396 {
397 m_extraParametersSize = EndianOrder.LittleEndian.ToInt16(buffer, 16);397 m_extraParametersSize = LittleEndian.ToInt16(buffer, 16);
398 return 18;398 return 18;
399 }399 }
400 400
@@ -419,17 +419,17 @@ namespace GSF.Media · 18 unmodified lines
419 buffer.ValidateParameters(startIndex, length);419 buffer.ValidateParameters(startIndex, length);
420 420
421 startIndex += base.GenerateBinaryImage(buffer, startIndex);421 startIndex += base.GenerateBinaryImage(buffer, startIndex);
422 EndianOrder.LittleEndian.CopyBytes(m_audioFormat, buffer, startIndex);422 LittleEndian.CopyBytes(m_audioFormat, buffer, startIndex);
423 EndianOrder.LittleEndian.CopyBytes(m_channels, buffer, startIndex + 2);423 LittleEndian.CopyBytes(m_channels, buffer, startIndex + 2);
424 EndianOrder.LittleEndian.CopyBytes(m_sampleRate, buffer, startIndex + 4);424 LittleEndian.CopyBytes(m_sampleRate, buffer, startIndex + 4);
425 EndianOrder.LittleEndian.CopyBytes(m_byteRate, buffer, startIndex + 8);425 LittleEndian.CopyBytes(m_byteRate, buffer, startIndex + 8);
426 EndianOrder.LittleEndian.CopyBytes(m_blockAlignment, buffer, startIndex + 12);426 LittleEndian.CopyBytes(m_blockAlignment, buffer, startIndex + 12);
427 EndianOrder.LittleEndian.CopyBytes(m_bitsPerSample, buffer, startIndex + 14);427 LittleEndian.CopyBytes(m_bitsPerSample, buffer, startIndex + 14);
428 startIndex += 16;428 startIndex += 16;
429 429
430 if (m_extraParametersSize > 0)430 if (m_extraParametersSize > 0)
431 {431 {
432 EndianOrder.LittleEndian.CopyBytes(m_extraParametersSize, buffer, startIndex);432 LittleEndian.CopyBytes(m_extraParametersSize, buffer, startIndex);
433 startIndex += 2;433 startIndex += 2;
434 434
435 if (m_extraParametersSize > 0 && (object)m_extraParameters != null)435 if (m_extraParametersSize > 0 && (object)m_extraParameters != null)
Source/Libraries/GSF.Media/WaveFormatExtensible.cs+6−6
@@ -317,9 +317,9 @@ namespace GSF.Media · 316 unmodified lines
317 {317 {
318 buffer.ValidateParameters(startIndex, length);318 buffer.ValidateParameters(startIndex, length);
319 319
320 m_sampleValue = EndianOrder.LittleEndian.ToUInt16(buffer, startIndex);320 m_sampleValue = LittleEndian.ToUInt16(buffer, startIndex);
321 m_channelMask = (Speakers)EndianOrder.LittleEndian.ToInt32(buffer, startIndex + 2);321 m_channelMask = (Speakers)LittleEndian.ToInt32(buffer, startIndex + 2);
322 m_subFormat = EndianOrder.LittleEndian.ToGuid(buffer, startIndex + 6);322 m_subFormat = new Guid(buffer.BlockCopy(startIndex + 6, 8));
323 323
324 return BinaryLength;324 return BinaryLength;
325 }325 }
@@ -339,9 +339,9 @@ namespace GSF.Media · 13 unmodified lines
339 {339 {
340 buffer.ValidateParameters(startIndex, FixedLength);340 buffer.ValidateParameters(startIndex, FixedLength);
341 341
342 EndianOrder.LittleEndian.CopyBytes(m_sampleValue, buffer, 0);342 LittleEndian.CopyBytes(m_sampleValue, buffer, 0);
343 EndianOrder.LittleEndian.CopyBytes((int)m_channelMask, buffer, 2);343 LittleEndian.CopyBytes((int)m_channelMask, buffer, 2);
344 EndianOrder.LittleEndian.CopyBytes(m_subFormat, buffer, 6);344 m_subFormat.ToByteArray().CopyTo(buffer, 6);
345 345
346 return FixedLength;346 return FixedLength;
347 }347 }
Source/Libraries/GSF.PQDIF/Physical/ScalarElement.cs+26−26
@@ -145,7 +145,7 @@ namespace GSF.PQDIF.Physical · 144 unmodified lines
145 /// <returns>The value as a 16-bit unsigned integer.</returns>145 /// <returns>The value as a 16-bit unsigned integer.</returns>
146 public ushort GetUInt2()146 public ushort GetUInt2()
147 {147 {
148 return EndianOrder.LittleEndian.ToUInt16(m_value, 0);148 return LittleEndian.ToUInt16(m_value, 0);
149 }149 }
150 150
151 /// <summary>151 /// <summary>
@@ -154,7 +154,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
154 /// <param name="value">The new value as a 16-bit unsigned integer.</param>154 /// <param name="value">The new value as a 16-bit unsigned integer.</param>
155 public void SetUInt2(ushort value)155 public void SetUInt2(ushort value)
156 {156 {
157 EndianOrder.LittleEndian.CopyBytes(value, m_value, 0);157 LittleEndian.CopyBytes(value, m_value, 0);
158 }158 }
159 159
160 /// <summary>160 /// <summary>
@@ -163,7 +163,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
163 /// <returns>The value as a 16-bit signed integer.</returns>163 /// <returns>The value as a 16-bit signed integer.</returns>
164 public short GetInt2()164 public short GetInt2()
165 {165 {
166 return EndianOrder.LittleEndian.ToInt16(m_value, 0);166 return LittleEndian.ToInt16(m_value, 0);
167 }167 }
168 168
169 /// <summary>169 /// <summary>
@@ -172,7 +172,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
172 /// <param name="value">The new value as a 16-bit signed integer.</param>172 /// <param name="value">The new value as a 16-bit signed integer.</param>
173 public void SetInt2(short value)173 public void SetInt2(short value)
174 {174 {
175 EndianOrder.LittleEndian.CopyBytes(value, m_value, 0);175 LittleEndian.CopyBytes(value, m_value, 0);
176 }176 }
177 177
178 /// <summary>178 /// <summary>
@@ -181,7 +181,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
181 /// <returns>The value as a 32-bit unsigned integer.</returns>181 /// <returns>The value as a 32-bit unsigned integer.</returns>
182 public uint GetUInt4()182 public uint GetUInt4()
183 {183 {
184 return EndianOrder.LittleEndian.ToUInt32(m_value, 0);184 return LittleEndian.ToUInt32(m_value, 0);
185 }185 }
186 186
187 /// <summary>187 /// <summary>
@@ -190,7 +190,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
190 /// <param name="value">The new value as a 32-bit unsigned integer.</param>190 /// <param name="value">The new value as a 32-bit unsigned integer.</param>
191 public void SetUInt4(uint value)191 public void SetUInt4(uint value)
192 {192 {
193 EndianOrder.LittleEndian.CopyBytes(value, m_value, 0);193 LittleEndian.CopyBytes(value, m_value, 0);
194 }194 }
195 195
196 /// <summary>196 /// <summary>
@@ -199,7 +199,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
199 /// <returns>The value as a 32-bit signed integer.</returns>199 /// <returns>The value as a 32-bit signed integer.</returns>
200 public int GetInt4()200 public int GetInt4()
201 {201 {
202 return EndianOrder.LittleEndian.ToInt32(m_value, 0);202 return LittleEndian.ToInt32(m_value, 0);
203 }203 }
204 204
205 /// <summary>205 /// <summary>
@@ -208,7 +208,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
208 /// <param name="value">The new value as a 32-bit signed integer.</param>208 /// <param name="value">The new value as a 32-bit signed integer.</param>
209 public void SetInt4(int value)209 public void SetInt4(int value)
210 {210 {
211 EndianOrder.LittleEndian.CopyBytes(value, m_value, 0);211 LittleEndian.CopyBytes(value, m_value, 0);
212 }212 }
213 213
214 /// <summary>214 /// <summary>
@@ -217,7 +217,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
217 /// <returns>The value as a 4-byte boolean.</returns>217 /// <returns>The value as a 4-byte boolean.</returns>
218 public bool GetBool4()218 public bool GetBool4()
219 {219 {
220 return EndianOrder.LittleEndian.ToInt32(m_value, 0) != 0;220 return LittleEndian.ToInt32(m_value, 0) != 0;
221 }221 }
222 222
223 /// <summary>223 /// <summary>
@@ -226,7 +226,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
226 /// <param name="value">The new value as a 4-byte boolean.</param>226 /// <param name="value">The new value as a 4-byte boolean.</param>
227 public void SetBool4(bool value)227 public void SetBool4(bool value)
228 {228 {
229 EndianOrder.LittleEndian.CopyBytes(value ? 1 : 0, m_value, 0);229 LittleEndian.CopyBytes(value ? 1 : 0, m_value, 0);
230 }230 }
231 231
232 /// <summary>232 /// <summary>
@@ -235,7 +235,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
235 /// <returns>The value as a 32-bit floating point number.</returns>235 /// <returns>The value as a 32-bit floating point number.</returns>
236 public float GetReal4()236 public float GetReal4()
237 {237 {
238 return EndianOrder.LittleEndian.ToSingle(m_value, 0);238 return LittleEndian.ToSingle(m_value, 0);
239 }239 }
240 240
241 /// <summary>241 /// <summary>
@@ -244,7 +244,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
244 /// <param name="value">The new value as a 32-bit floating point number.</param>244 /// <param name="value">The new value as a 32-bit floating point number.</param>
245 public void SetReal4(float value)245 public void SetReal4(float value)
246 {246 {
247 EndianOrder.LittleEndian.CopyBytes(value, m_value, 0);247 LittleEndian.CopyBytes(value, m_value, 0);
248 }248 }
249 249
250 /// <summary>250 /// <summary>
@@ -253,7 +253,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
253 /// <returns>The value as a 64-bit floating point number.</returns>253 /// <returns>The value as a 64-bit floating point number.</returns>
254 public double GetReal8()254 public double GetReal8()
255 {255 {
256 return EndianOrder.LittleEndian.ToDouble(m_value, 0);256 return LittleEndian.ToDouble(m_value, 0);
257 }257 }
258 258
259 /// <summary>259 /// <summary>
@@ -262,7 +262,7 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
262 /// <param name="value">The new value as a 64-bit floating point number.</param>262 /// <param name="value">The new value as a 64-bit floating point number.</param>
263 public void SetReal8(double value)263 public void SetReal8(double value)
264 {264 {
265 EndianOrder.LittleEndian.CopyBytes(value, m_value, 0);265 LittleEndian.CopyBytes(value, m_value, 0);
266 }266 }
267 267
268 /// <summary>268 /// <summary>
@@ -271,8 +271,8 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
271 /// <returns>The value as an 8-byte complex number.</returns>271 /// <returns>The value as an 8-byte complex number.</returns>
272 public ComplexNumber GetComplex8()272 public ComplexNumber GetComplex8()
273 {273 {
274 double real = EndianOrder.LittleEndian.ToSingle(m_value, 0);274 double real = LittleEndian.ToSingle(m_value, 0);
275 double imaginary = EndianOrder.LittleEndian.ToSingle(m_value, 4);275 double imaginary = LittleEndian.ToSingle(m_value, 4);
276 return new ComplexNumber(real, imaginary);276 return new ComplexNumber(real, imaginary);
277 }277 }
278 278
@@ -282,8 +282,8 @@ namespace GSF.PQDIF.Physical · 3 unmodified lines
282 /// <param name="value">The new value as an 8-byte complex number.</param>282 /// <param name="value">The new value as an 8-byte complex number.</param>
283 public void SetComplex8(ComplexNumber value)283 public void SetComplex8(ComplexNumber value)
284 {284 {
285 EndianOrder.LittleEndian.CopyBytes((float)value.Real, m_value, 0);285 LittleEndian.CopyBytes((float)value.Real, m_value, 0);
286 EndianOrder.LittleEndian.CopyBytes((float)value.Imaginary, m_value, 4);286 LittleEndian.CopyBytes((float)value.Imaginary, m_value, 4);
287 }287 }
288 288
289 /// <summary>289 /// <summary>
@@ -292,8 +292,8 @@ namespace GSF.PQDIF.Physical · 2 unmodified lines
292 /// <returns>The value as a 16-byte complex number.</returns>292 /// <returns>The value as a 16-byte complex number.</returns>
293 public ComplexNumber GetComplex16()293 public ComplexNumber GetComplex16()
294 {294 {
295 double real = EndianOrder.LittleEndian.ToDouble(m_value, 0);295 double real = LittleEndian.ToDouble(m_value, 0);
296 double imaginary = EndianOrder.LittleEndian.ToDouble(m_value, 8);296 double imaginary = LittleEndian.ToDouble(m_value, 8);
297 return new ComplexNumber(real, imaginary);297 return new ComplexNumber(real, imaginary);
298 }298 }
299 299
@@ -303,8 +303,8 @@ namespace GSF.PQDIF.Physical · 3 unmodified lines
303 /// <param name="value">The new value as a 16-byte complex number.</param>303 /// <param name="value">The new value as a 16-byte complex number.</param>
304 public void SetComplex16(ComplexNumber value)304 public void SetComplex16(ComplexNumber value)
305 {305 {
306 EndianOrder.LittleEndian.CopyBytes(value.Real, m_value, 0);306 LittleEndian.CopyBytes(value.Real, m_value, 0);
307 EndianOrder.LittleEndian.CopyBytes(value.Imaginary, m_value, 0);307 LittleEndian.CopyBytes(value.Imaginary, m_value, 0);
308 }308 }
309 309
310 /// <summary>310 /// <summary>
@@ -332,8 +332,8 @@ namespace GSF.PQDIF.Physical · 21 unmodified lines
332 public DateTime GetTimestamp()332 public DateTime GetTimestamp()
333 {333 {
334 DateTime epoch = new DateTime(1900, 1, 1);334 DateTime epoch = new DateTime(1900, 1, 1);
335 uint days = EndianOrder.LittleEndian.ToUInt32(m_value, 0);335 uint days = LittleEndian.ToUInt32(m_value, 0);
336 double seconds = EndianOrder.LittleEndian.ToDouble(m_value, 4);336 double seconds = LittleEndian.ToDouble(m_value, 4);
337 337
338 return DateTime.SpecifyKind(epoch.AddDays(days).AddSeconds(seconds), DateTimeKind.Utc);338 return DateTime.SpecifyKind(epoch.AddDays(days).AddSeconds(seconds), DateTimeKind.Utc);
339 }339 }
@@ -349,8 +349,8 @@ namespace GSF.PQDIF.Physical · 9 unmodified lines
349 TimeSpan daySpan = TimeSpan.FromDays(Math.Floor(sinceEpoch.TotalDays));349 TimeSpan daySpan = TimeSpan.FromDays(Math.Floor(sinceEpoch.TotalDays));
350 TimeSpan secondSpan = sinceEpoch - daySpan;350 TimeSpan secondSpan = sinceEpoch - daySpan;
351 351
352 EndianOrder.LittleEndian.CopyBytes((uint)daySpan.TotalDays, m_value, 0);352 LittleEndian.CopyBytes((uint)daySpan.TotalDays, m_value, 0);
353 EndianOrder.LittleEndian.CopyBytes(secondSpan.TotalSeconds, m_value, 0);353 LittleEndian.CopyBytes(secondSpan.TotalSeconds, m_value, 0);
354 }354 }
355 355
356 /// <summary>356 /// <summary>
Source/Libraries/GSF.PQDIF/Physical/VectorElement.cs+14−14
@@ -211,7 +211,7 @@ namespace GSF.PQDIF.Physical · 210 unmodified lines
211 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");211 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");
212 212
213 int byteIndex = index * 2;213 int byteIndex = index * 2;
214 return EndianOrder.LittleEndian.ToInt16(m_values, byteIndex);214 return LittleEndian.ToInt16(m_values, byteIndex);
215 }215 }
216 216
217 /// <summary>217 /// <summary>
@@ -225,7 +225,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
225 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");225 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");
226 226
227 int byteIndex = index * 2;227 int byteIndex = index * 2;
228 EndianOrder.LittleEndian.CopyBytes(value, m_values, byteIndex);228 LittleEndian.CopyBytes(value, m_values, byteIndex);
229 }229 }
230 230
231 /// <summary>231 /// <summary>
@@ -239,7 +239,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
239 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");239 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");
240 240
241 int byteIndex = index * 4;241 int byteIndex = index * 4;
242 return EndianOrder.LittleEndian.ToInt32(m_values, byteIndex);242 return LittleEndian.ToInt32(m_values, byteIndex);
243 }243 }
244 244
245 /// <summary>245 /// <summary>
@@ -253,7 +253,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
253 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");253 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");
254 254
255 int byteIndex = index * 4;255 int byteIndex = index * 4;
256 EndianOrder.LittleEndian.CopyBytes(value, m_values, byteIndex);256 LittleEndian.CopyBytes(value, m_values, byteIndex);
257 }257 }
258 258
259 /// <summary>259 /// <summary>
@@ -267,7 +267,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
267 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");267 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");
268 268
269 int byteIndex = index * 4;269 int byteIndex = index * 4;
270 return EndianOrder.LittleEndian.ToUInt32(m_values, byteIndex);270 return LittleEndian.ToUInt32(m_values, byteIndex);
271 }271 }
272 272
273 /// <summary>273 /// <summary>
@@ -281,7 +281,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
281 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");281 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");
282 282
283 int byteIndex = index * 4;283 int byteIndex = index * 4;
284 EndianOrder.LittleEndian.CopyBytes(value, m_values, byteIndex);284 LittleEndian.CopyBytes(value, m_values, byteIndex);
285 }285 }
286 286
287 /// <summary>287 /// <summary>
@@ -295,7 +295,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
295 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");295 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");
296 296
297 int byteIndex = index * 4;297 int byteIndex = index * 4;
298 return EndianOrder.LittleEndian.ToSingle(m_values, byteIndex);298 return LittleEndian.ToSingle(m_values, byteIndex);
299 }299 }
300 300
301 /// <summary>301 /// <summary>
@@ -309,7 +309,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
309 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");309 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");
310 310
311 int byteIndex = index * 4;311 int byteIndex = index * 4;
312 EndianOrder.LittleEndian.CopyBytes(value, m_values, byteIndex);312 LittleEndian.CopyBytes(value, m_values, byteIndex);
313 }313 }
314 314
315 /// <summary>315 /// <summary>
@@ -323,7 +323,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
323 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");323 throw new InvalidOperationException("Unable to retrieve values from uninitialized vector; set the size and physical type of the vector first");
324 324
325 int byteIndex = index * 8;325 int byteIndex = index * 8;
326 return EndianOrder.LittleEndian.ToDouble(m_values, byteIndex);326 return LittleEndian.ToDouble(m_values, byteIndex);
327 }327 }
328 328
329 /// <summary>329 /// <summary>
@@ -337,7 +337,7 @@ namespace GSF.PQDIF.Physical · 7 unmodified lines
337 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");337 throw new InvalidOperationException("Unable to insert values into uninitialized vector; set the size and physical type of the vector first");
338 338
339 int byteIndex = index * 8;339 int byteIndex = index * 8;
340 EndianOrder.LittleEndian.CopyBytes(value, m_values, byteIndex);340 LittleEndian.CopyBytes(value, m_values, byteIndex);
341 }341 }
342 342
343 /// <summary>343 /// <summary>
@@ -353,8 +353,8 @@ namespace GSF.PQDIF.Physical · 9 unmodified lines
353 int byteIndex = index * 12;353 int byteIndex = index * 12;
354 354
355 DateTime epoch = new DateTime(1900, 1, 1);355 DateTime epoch = new DateTime(1900, 1, 1);
356 uint days = EndianOrder.LittleEndian.ToUInt32(m_values, byteIndex);356 uint days = LittleEndian.ToUInt32(m_values, byteIndex);
357 double seconds = EndianOrder.LittleEndian.ToDouble(m_values, byteIndex + 4);357 double seconds = LittleEndian.ToDouble(m_values, byteIndex + 4);
358 358
359 return DateTime.SpecifyKind(epoch.AddDays(days).AddSeconds(seconds), DateTimeKind.Utc);359 return DateTime.SpecifyKind(epoch.AddDays(days).AddSeconds(seconds), DateTimeKind.Utc);
360 }360 }
@@ -376,8 +376,8 @@ namespace GSF.PQDIF.Physical · 15 unmodified lines
376 TimeSpan daySpan = TimeSpan.FromDays(Math.Floor(sinceEpoch.TotalDays));376 TimeSpan daySpan = TimeSpan.FromDays(Math.Floor(sinceEpoch.TotalDays));
377 TimeSpan secondSpan = sinceEpoch - daySpan;377 TimeSpan secondSpan = sinceEpoch - daySpan;
378 378
379 EndianOrder.LittleEndian.CopyBytes((uint)daySpan.TotalDays, m_values, byteIndex);379 LittleEndian.CopyBytes((uint)daySpan.TotalDays, m_values, byteIndex);
380 EndianOrder.LittleEndian.CopyBytes(secondSpan.TotalSeconds, m_values, byteIndex + 4);380 LittleEndian.CopyBytes(secondSpan.TotalSeconds, m_values, byteIndex + 4);
381 }381 }
382 382
383 /// <summary>383 /// <summary>
Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/CommonFrameHeader.cs+17−17
@@ -122,8 +122,8 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 121 unmodified lines
122 m_fileType = (FileType)buffer[startIndex + 2];122 m_fileType = (FileType)buffer[startIndex + 2];
123 m_fileVersion = (FileVersion)buffer[startIndex + 3];123 m_fileVersion = (FileVersion)buffer[startIndex + 3];
124 m_sourceID = Encoding.ASCII.GetString(buffer, startIndex + 4, 4);124 m_sourceID = Encoding.ASCII.GetString(buffer, startIndex + 4, 4);
125 headerLength = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 8);125 headerLength = BigEndian.ToUInt32(buffer, startIndex + 8);
126 secondOfCentury = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 12);126 secondOfCentury = BigEndian.ToUInt32(buffer, startIndex + 12);
127 127
128 switch (m_fileType)128 switch (m_fileType)
129 {129 {
@@ -138,12 +138,12 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 8 unmodified lines
138 break;138 break;
139 }139 }
140 140
141 m_startSample = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 16);141 m_startSample = BigEndian.ToUInt32(buffer, startIndex + 16);
142 m_sampleInterval = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 20);142 m_sampleInterval = BigEndian.ToUInt16(buffer, startIndex + 20);
143 m_sampleRate = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 22);143 m_sampleRate = BigEndian.ToUInt16(buffer, startIndex + 22);
144 m_rowLength = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 24);144 m_rowLength = BigEndian.ToUInt32(buffer, startIndex + 24);
145 m_totalRows = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 28);145 m_totalRows = BigEndian.ToUInt32(buffer, startIndex + 28);
146 secondOfCentury = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 32);146 secondOfCentury = BigEndian.ToUInt32(buffer, startIndex + 32);
147 147
148 switch (m_fileType)148 switch (m_fileType)
149 {149 {
@@ -158,12 +158,12 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 8 unmodified lines
158 break;158 break;
159 }159 }
160 160
161 m_triggerSample = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 36);161 m_triggerSample = BigEndian.ToUInt32(buffer, startIndex + 36);
162 m_preTriggerRows = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 40);162 m_preTriggerRows = BigEndian.ToUInt32(buffer, startIndex + 40);
163 m_triggerPMU = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 44);163 m_triggerPMU = BigEndian.ToUInt16(buffer, startIndex + 44);
164 m_triggerType = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 46);164 m_triggerType = BigEndian.ToUInt16(buffer, startIndex + 46);
165 m_userInformation = Encoding.ASCII.GetString(buffer, startIndex + 48, 80).Trim();165 m_userInformation = Encoding.ASCII.GetString(buffer, startIndex + 48, 80).Trim();
166 m_pmuCount = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 128);166 m_pmuCount = BigEndian.ToUInt32(buffer, startIndex + 128);
167 FrameLength = unchecked((ushort)headerLength);167 FrameLength = unchecked((ushort)headerLength);
168 }168 }
169 }169 }
@@ -173,7 +173,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 3 unmodified lines
173 CommonFrameHeader configFrameHeader;173 CommonFrameHeader configFrameHeader;
174 174
175 m_packetNumber = (byte)BPAPDCstream.FrameType.DataFrame;175 m_packetNumber = (byte)BPAPDCstream.FrameType.DataFrame;
176 m_rowFlags = EndianOrder.BigEndian.ToUInt32(buffer, startIndex);176 m_rowFlags = BigEndian.ToUInt32(buffer, startIndex);
177 177
178 if (configFrame != null)178 if (configFrame != null)
179 {179 {
@@ -217,13 +217,13 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 37 unmodified lines
217 if (parseWordCountFromByte)217 if (parseWordCountFromByte)
218 m_wordCount = buffer[startIndex + 3];218 m_wordCount = buffer[startIndex + 3];
219 else219 else
220 m_wordCount = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 2);220 m_wordCount = BigEndian.ToUInt16(buffer, startIndex + 2);
221 221
222 // If this is a data frame get a rough timestamp down to the second (full parse will get accurate timestamp), this way222 // If this is a data frame get a rough timestamp down to the second (full parse will get accurate timestamp), this way
223 // data frames that don't get fully parsed because configuration hasn't been received will still show a timestamp223 // data frames that don't get fully parsed because configuration hasn't been received will still show a timestamp
224 if (m_packetNumber > 0 && length > 8)224 if (m_packetNumber > 0 && length > 8)
225 {225 {
226 secondOfCentury = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 4);226 secondOfCentury = BigEndian.ToUInt32(buffer, startIndex + 4);
227 227
228 // Until configuration is available, we make a guess at time tag type - this will just be228 // Until configuration is available, we make a guess at time tag type - this will just be
229 // used for display purposes until a configuration frame arrives. If second of century229 // used for display purposes until a configuration frame arrives. If second of century
@@ -713,7 +713,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 483 unmodified lines
713 713
714 buffer[0] = PhasorProtocols.Common.SyncByte;714 buffer[0] = PhasorProtocols.Common.SyncByte;
715 buffer[1] = m_packetNumber;715 buffer[1] = m_packetNumber;
716 EndianOrder.BigEndian.CopyBytes(m_wordCount, buffer, 2);716 BigEndian.CopyBytes(m_wordCount, buffer, 2);
717 717
718 return buffer;718 return buffer;
719 }719 }
Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/ConfigurationCell.cs+4−4
@@ -489,8 +489,8 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 488 unmodified lines
489 int index = 0;489 int index = 0;
490 490
491 IDLabelImage.CopyImage(buffer, ref index, IDLabelLength); // PMUID491 IDLabelImage.CopyImage(buffer, ref index, IDLabelLength); // PMUID
492 EndianOrder.BigEndian.CopyBytes(Reserved, buffer, index); // Reserved492 BigEndian.CopyBytes(Reserved, buffer, index); // Reserved
493 EndianOrder.BigEndian.CopyBytes(Offset, buffer, index + 2); // Offset493 BigEndian.CopyBytes(Offset, buffer, index + 2); // Offset
494 494
495 return buffer;495 return buffer;
496 }496 }
@@ -562,8 +562,8 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 65 unmodified lines
562 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)562 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)
563 {563 {
564 IDLabel = Encoding.ASCII.GetString(buffer, startIndex, 4);564 IDLabel = Encoding.ASCII.GetString(buffer, startIndex, 4);
565 Reserved = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 4);565 Reserved = BigEndian.ToUInt16(buffer, startIndex + 4);
566 Offset = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 6);566 Offset = BigEndian.ToUInt16(buffer, startIndex + 6);
567 567
568 return FixedBodyLength;568 return FixedBodyLength;
569 }569 }
Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/ConfigurationFrame.cs+10−10
@@ -392,10 +392,10 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 391 unmodified lines
392 CommonHeader.BinaryImage.CopyImage(buffer, ref index, CommonFrameHeader.FixedLength);392 CommonHeader.BinaryImage.CopyImage(buffer, ref index, CommonFrameHeader.FixedLength);
393 buffer[4] = (byte)StreamType;393 buffer[4] = (byte)StreamType;
394 buffer[5] = (byte)RevisionNumber;394 buffer[5] = (byte)RevisionNumber;
395 EndianOrder.BigEndian.CopyBytes(FrameRate, buffer, 6);395 BigEndian.CopyBytes(FrameRate, buffer, 6);
396 EndianOrder.BigEndian.CopyBytes(RowLength(true), buffer, 8); // <-- Important: This step calculates all PMU row offsets!396 BigEndian.CopyBytes(RowLength(true), buffer, 8); // <-- Important: This step calculates all PMU row offsets!
397 EndianOrder.BigEndian.CopyBytes(PacketsPerSample, buffer, 12);397 BigEndian.CopyBytes(PacketsPerSample, buffer, 12);
398 EndianOrder.BigEndian.CopyBytes((ushort)Cells.Count, buffer, 14);398 BigEndian.CopyBytes((ushort)Cells.Count, buffer, 14);
399 399
400 return buffer;400 return buffer;
401 }401 }
@@ -456,10 +456,10 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 54 unmodified lines
456 // Only need to parse what wan't already parsed in common frame header456 // Only need to parse what wan't already parsed in common frame header
457 m_streamType = (StreamType)buffer[startIndex];457 m_streamType = (StreamType)buffer[startIndex];
458 m_revisionNumber = (RevisionNumber)buffer[startIndex + 1];458 m_revisionNumber = (RevisionNumber)buffer[startIndex + 1];
459 FrameRate = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 2);459 FrameRate = BigEndian.ToUInt16(buffer, startIndex + 2);
460 m_rowLength = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 4);460 m_rowLength = BigEndian.ToUInt32(buffer, startIndex + 4);
461 m_packetsPerSample = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 8);461 m_packetsPerSample = BigEndian.ToUInt16(buffer, startIndex + 8);
462 State.CellCount = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 10);462 State.CellCount = BigEndian.ToUInt16(buffer, startIndex + 10);
463 463
464 // The data that's in the data stream will take precedence over what's in the464 // The data that's in the data stream will take precedence over what's in the
465 // in the configuration file. The configuration file may define more PMU's than465 // in the configuration file. The configuration file may define more PMU's than
@@ -724,7 +724,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 258 unmodified lines
724 protected override void AppendChecksum(byte[] buffer, int startIndex)724 protected override void AppendChecksum(byte[] buffer, int startIndex)
725 {725 {
726 // Oddly enough, check sum for frames in BPA PDC stream is little-endian726 // Oddly enough, check sum for frames in BPA PDC stream is little-endian
727 EndianOrder.LittleEndian.CopyBytes(CalculateChecksum(buffer, 0, startIndex), buffer, startIndex);727 LittleEndian.CopyBytes(CalculateChecksum(buffer, 0, startIndex), buffer, startIndex);
728 }728 }
729 729
730 /// <summary>730 /// <summary>
@@ -746,7 +746,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 15 unmodified lines
746 else746 else
747 {747 {
748 int sumLength = BinaryLength - 2;748 int sumLength = BinaryLength - 2;
749 return EndianOrder.LittleEndian.ToUInt16(buffer, startIndex + sumLength) == CalculateChecksum(buffer, startIndex, sumLength);749 return LittleEndian.ToUInt16(buffer, startIndex + sumLength) == CalculateChecksum(buffer, startIndex, sumLength);
750 }750 }
751 }751 }
752 752
Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/DataCell.cs+3−3
@@ -521,7 +521,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 520 unmodified lines
521 buffer[3] = (byte)PhasorValues.Count;521 buffer[3] = (byte)PhasorValues.Count;
522 }522 }
523 523
524 EndianOrder.BigEndian.CopyBytes(m_sampleNumber, buffer, 4);524 BigEndian.CopyBytes(m_sampleNumber, buffer, 4);
525 525
526 return buffer;526 return buffer;
527 }527 }
@@ -586,7 +586,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 58 unmodified lines
586 // Read data buffer if using phasor data file format586 // Read data buffer if using phasor data file format
587 if (UsePhasorDataFileFormat && frameState.RemainingPdcBlockPmus == 0)587 if (UsePhasorDataFileFormat && frameState.RemainingPdcBlockPmus == 0)
588 {588 {
589 m_dataBuffer = EndianOrder.BigEndian.ToUInt32(buffer, index);589 m_dataBuffer = BigEndian.ToUInt32(buffer, index);
590 index += 4;590 index += 4;
591 }591 }
592 592
@@ -659,7 +659,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 66 unmodified lines
659 else659 else
660 {660 {
661 // Parse PMU's sample number661 // Parse PMU's sample number
662 m_sampleNumber = EndianOrder.BigEndian.ToUInt16(buffer, index);662 m_sampleNumber = BigEndian.ToUInt16(buffer, index);
663 index += 2;663 index += 2;
664 }664 }
665 }665 }
Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/DataFrame.cs+10−10
@@ -287,12 +287,12 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 286 unmodified lines
287 CommonHeader.BinaryImage.CopyImage(buffer, ref index, CommonFrameHeader.FixedLength);287 CommonHeader.BinaryImage.CopyImage(buffer, ref index, CommonFrameHeader.FixedLength);
288 288
289 if (ConfigurationFrame.RevisionNumber == RevisionNumber.Revision0)289 if (ConfigurationFrame.RevisionNumber == RevisionNumber.Revision0)
290 EndianOrder.BigEndian.CopyBytes((uint)Math.Truncate(NtpTimeTag.Value), buffer, 4);290 BigEndian.CopyBytes((uint)Math.Truncate(NtpTimeTag.Value), buffer, 4);
291 else291 else
292 EndianOrder.BigEndian.CopyBytes((uint)Math.Truncate(TimeTag.Value), buffer, 4);292 BigEndian.CopyBytes((uint)Math.Truncate(TimeTag.Value), buffer, 4);
293 293
294 EndianOrder.BigEndian.CopyBytes(m_sampleNumber, buffer, 8);294 BigEndian.CopyBytes(m_sampleNumber, buffer, 8);
295 EndianOrder.BigEndian.CopyBytes((ushort)Cells.Count, buffer, 10);295 BigEndian.CopyBytes((ushort)Cells.Count, buffer, 10);
296 296
297 index += 8;297 index += 8;
298 298
@@ -312,7 +312,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 13 unmodified lines
312 index += 2;312 index += 2;
313 313
314 // Add offset to data frame header314 // Add offset to data frame header
315 EndianOrder.BigEndian.CopyBytes(offset, buffer, index);315 BigEndian.CopyBytes(offset, buffer, index);
316 index += 2;316 index += 2;
317 317
318 offset += (ushort)dataCell.BinaryLength;318 offset += (ushort)dataCell.BinaryLength;
@@ -406,8 +406,8 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 87 unmodified lines
406 int index = startIndex + CommonFrameHeader.FixedLength;406 int index = startIndex + CommonFrameHeader.FixedLength;
407 407
408 // Parse frame timestamp408 // Parse frame timestamp
409 uint secondOfCentury = EndianOrder.BigEndian.ToUInt32(buffer, index);409 uint secondOfCentury = BigEndian.ToUInt32(buffer, index);
410 m_sampleNumber = EndianOrder.BigEndian.ToUInt16(buffer, index + 4);410 m_sampleNumber = BigEndian.ToUInt16(buffer, index + 4);
411 index += 6;411 index += 6;
412 412
413 if (configurationFrame.RevisionNumber == RevisionNumber.Revision0)413 if (configurationFrame.RevisionNumber == RevisionNumber.Revision0)
@@ -417,7 +417,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 3 unmodified lines
417 417
418 // Because in cases where PDCxchng is being used the data cell count will be smaller than the418 // Because in cases where PDCxchng is being used the data cell count will be smaller than the
419 // configuration cell count - we save this count to calculate the offsets later419 // configuration cell count - we save this count to calculate the offsets later
420 state.CellCount = EndianOrder.BigEndian.ToUInt16(buffer, index);420 state.CellCount = BigEndian.ToUInt16(buffer, index);
421 index += 2;421 index += 2;
422 422
423 if (state.CellCount > configurationFrame.Cells.Count)423 if (state.CellCount > configurationFrame.Cells.Count)
@@ -463,7 +463,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 39 unmodified lines
463 protected override void AppendChecksum(byte[] buffer, int startIndex)463 protected override void AppendChecksum(byte[] buffer, int startIndex)
464 {464 {
465 // Oddly enough, check sum for frames in BPA PDC stream is little-endian465 // Oddly enough, check sum for frames in BPA PDC stream is little-endian
466 EndianOrder.LittleEndian.CopyBytes(CalculateChecksum(buffer, 0, startIndex), buffer, startIndex);466 LittleEndian.CopyBytes(CalculateChecksum(buffer, 0, startIndex), buffer, startIndex);
467 }467 }
468 468
469 /// <summary>469 /// <summary>
@@ -482,7 +482,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 12 unmodified lines
482 return true;482 return true;
483 483
484 int sumLength = BinaryLength - 2;484 int sumLength = BinaryLength - 2;
485 return EndianOrder.LittleEndian.ToUInt16(buffer, startIndex + sumLength) == CalculateChecksum(buffer, startIndex, sumLength);485 return LittleEndian.ToUInt16(buffer, startIndex + sumLength) == CalculateChecksum(buffer, startIndex, sumLength);
486 }486 }
487 487
488 /// <summary>488 /// <summary>
Source/Libraries/GSF.PhasorProtocols/BpaPdcStream/FrequencyValue.cs+2−2
@@ -136,7 +136,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 135 unmodified lines
136 {136 {
137 byte[] buffer = new byte[2];137 byte[] buffer = new byte[2];
138 138
139 EndianOrder.BigEndian.CopyBytes((short)UnscaledFrequency, buffer, 0);139 BigEndian.CopyBytes((short)UnscaledFrequency, buffer, 0);
140 140
141 return buffer;141 return buffer;
142 }142 }
@@ -161,7 +161,7 @@ namespace GSF.PhasorProtocols.BPAPDCstream · 18 unmodified lines
161 // PMUs in PDC block do not include Df/Dt161 // PMUs in PDC block do not include Df/Dt
162 if (Definition.Parent.IsPdcBlockSection)162 if (Definition.Parent.IsPdcBlockSection)
163 {163 {
164 UnscaledFrequency = EndianOrder.BigEndian.ToInt16(buffer, startIndex);164 UnscaledFrequency = BigEndian.ToInt16(buffer, startIndex);
165 return 2;165 return 2;
166 }166 }
167 167
Source/Libraries/GSF.PhasorProtocols/ConfigurationCellBase.cs+1−1
@@ -184,7 +184,7 @@ namespace GSF.PhasorProtocols · 183 unmodified lines
184 }184 }
185 set185 set
186 {186 {
187 if (value == null)187 if ((object)value == null)
188 value = "";188 value = "";
189 189
190 value = value.GetValidLabel();190 value = value.GetValidLabel();
Source/Libraries/GSF.PhasorProtocols/FrameParserBase.cs+8−5
@@ -165,11 +165,14 @@ namespace GSF.PhasorProtocols · 164 unmodified lines
165 /// Gets the number of redundant frames in each packet.165 /// Gets the number of redundant frames in each packet.
166 /// </summary>166 /// </summary>
167 /// <remarks>167 /// <remarks>
168 /// <para>This value is used when calculating statistics. It is assumed that for each168 /// <para>
169 /// This value is used when calculating statistics. It is assumed that for each
169 /// frame that is received, that frame will be included in the next <c>n</c>170 /// frame that is received, that frame will be included in the next <c>n</c>
170 /// packets, where <c>n</c> is the number of redundant frames per packet.</para>171 /// packets, where <c>n</c> is the number of redundant frames per packet.
171 /// 172 /// </para>
172 /// <para>This base class returns 0, as most protocols do not support redundant frames.</para>173 /// <para>
174 /// This base class returns 0, as most protocols do not support redundant frames.
175 /// </para>
173 /// </remarks>176 /// </remarks>
174 public virtual int RedundantFramesPerPacket177 public virtual int RedundantFramesPerPacket
175 {178 {
@@ -183,7 +186,7 @@ namespace GSF.PhasorProtocols · 7 unmodified lines
183 /// Gets or sets current <see cref="IConfigurationFrame"/> used for parsing <see cref="IDataFrame"/>'s encountered in the data stream from a device.186 /// Gets or sets current <see cref="IConfigurationFrame"/> used for parsing <see cref="IDataFrame"/>'s encountered in the data stream from a device.
184 /// </summary>187 /// </summary>
185 /// <remarks>188 /// <remarks>
186 /// If a <see cref="IConfigurationFrame"/> has been parsed, this will return a reference to the parsed frame. Consumer can manually assign a189 /// If a <see cref="IConfigurationFrame"/> has been parsed, this will return a reference to the parsed frame. Consumer can manually assign a
187 /// <see cref="IConfigurationFrame"/> to start parsing data if one has not been encountered in the stream.190 /// <see cref="IConfigurationFrame"/> to start parsing data if one has not been encountered in the stream.
188 /// </remarks>191 /// </remarks>
189 public abstract IConfigurationFrame ConfigurationFrame192 public abstract IConfigurationFrame ConfigurationFrame
Source/Libraries/GSF.PhasorProtocols/IFrameParser.cs+1−1
@@ -33,7 +33,7 @@ namespace GSF.PhasorProtocols · 32 unmodified lines
33 #region [ Enumerations ]33 #region [ Enumerations ]
34 34
35 /// <summary>35 /// <summary>
36 /// Source channel, i.e., data or command.36 /// Source channel, e.g., data or command.
37 /// </summary>37 /// </summary>
38 [Serializable]38 [Serializable]
39 public enum SourceChannel39 public enum SourceChannel
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/AnalogDefinition.cs+2−2
@@ -108,7 +108,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 107 unmodified lines
108 buffer[0] = (byte)this.AnalogType;108 buffer[0] = (byte)this.AnalogType;
109 109
110 // Store scaling in last three bytes110 // Store scaling in last three bytes
111 EndianOrder.BigEndian.CopyBytes(scalingFactor, buffer, 1);111 BigEndian.CopyBytes(scalingFactor, buffer, 1);
112 112
113 return buffer;113 return buffer;
114 }114 }
@@ -129,7 +129,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 14 unmodified lines
129 this.AnalogType = (AnalogType)buffer[startIndex];129 this.AnalogType = (AnalogType)buffer[startIndex];
130 130
131 // Last three bytes represent scaling factor131 // Last three bytes represent scaling factor
132 ScalingValue = EndianOrder.BigEndian.ToUInt24(buffer, startIndex + 1);132 ScalingValue = BigEndian.ToUInt24(buffer, startIndex + 1);
133 133
134 return ConversionFactorLength;134 return ConversionFactorLength;
135 }135 }
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/CommandFrame.cs+1−1
@@ -80,7 +80,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 79 unmodified lines
80 // Validate check-sum80 // Validate check-sum
81 int sumLength = m_frameHeader.FrameLength - 2;81 int sumLength = m_frameHeader.FrameLength - 2;
82 82
83 if (EndianOrder.BigEndian.ToUInt16(buffer, startIndex + sumLength) != CalculateChecksum(buffer, startIndex, sumLength))83 if (BigEndian.ToUInt16(buffer, startIndex + sumLength) != CalculateChecksum(buffer, startIndex, sumLength))
84 throw new InvalidOperationException("Invalid binary image detected - check sum of " + this.GetType().Name + " did not match");84 throw new InvalidOperationException("Invalid binary image detected - check sum of " + this.GetType().Name + " did not match");
85 85
86 m_frameHeader.State = new CommandFrameParsingState(m_frameHeader.FrameLength, m_frameHeader.DataLength, true, true);86 m_frameHeader.State = new CommandFrameParsingState(m_frameHeader.FrameLength, m_frameHeader.DataLength, true, true);
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/Common.cs+5−5
@@ -598,7 +598,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 597 unmodified lines
598 if (tagLength < 2)598 if (tagLength < 2)
599 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", tag, tagLength));599 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", tag, tagLength));
600 600
601 ushort result = EndianOrder.BigEndian.ToUInt16(buffer, index);601 ushort result = BigEndian.ToUInt16(buffer, index);
602 index += tagLength;602 index += tagLength;
603 603
604 return result;604 return result;
@@ -621,7 +621,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 16 unmodified lines
621 if (tagLength < 3)621 if (tagLength < 3)
622 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", tag, tagLength));622 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", tag, tagLength));
623 623
624 UInt24 result = EndianOrder.BigEndian.ToUInt24(buffer, index);624 UInt24 result = BigEndian.ToUInt24(buffer, index);
625 index += tagLength;625 index += tagLength;
626 626
627 return result;627 return result;
@@ -644,7 +644,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 16 unmodified lines
644 if (tagLength < 4)644 if (tagLength < 4)
645 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", tag, tagLength));645 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", tag, tagLength));
646 646
647 uint result = EndianOrder.BigEndian.ToUInt32(buffer, index);647 uint result = BigEndian.ToUInt32(buffer, index);
648 index += tagLength;648 index += tagLength;
649 649
650 return result;650 return result;
@@ -667,7 +667,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 16 unmodified lines
667 if (tagLength < 8)667 if (tagLength < 8)
668 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", tag, tagLength));668 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", tag, tagLength));
669 669
670 ulong result = EndianOrder.BigEndian.ToUInt64(buffer, index);670 ulong result = BigEndian.ToUInt64(buffer, index);
671 index += tagLength;671 index += tagLength;
672 672
673 return result;673 return result;
@@ -730,7 +730,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 56 unmodified lines
730 730
731 buffer[index++] = (byte)tag;731 buffer[index++] = (byte)tag;
732 length.EncodeTagLength(buffer, ref index);732 length.EncodeTagLength(buffer, ref index);
733 index += EndianOrder.BigEndian.CopyBytes(value, buffer, index);733 index += BigEndian.CopyBytes(value, buffer, index);
734 }734 }
735 735
736 /// <summary>736 /// <summary>
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/CommonFrameHeader.cs+23−23
@@ -179,11 +179,11 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 178 unmodified lines
179 m_frameType = (FrameType)(buffer[startIndex + 1] & ~VersionNumberMask);179 m_frameType = (FrameType)(buffer[startIndex + 1] & ~VersionNumberMask);
180 m_version = (byte)(buffer[startIndex + 1] & VersionNumberMask);180 m_version = (byte)(buffer[startIndex + 1] & VersionNumberMask);
181 181
182 m_frameLength = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 2);182 m_frameLength = BigEndian.ToUInt16(buffer, startIndex + 2);
183 m_idCode = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 4);183 m_idCode = BigEndian.ToUInt16(buffer, startIndex + 4);
184 184
185 uint secondOfCentury = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 6);185 uint secondOfCentury = BigEndian.ToUInt32(buffer, startIndex + 6);
186 uint fractionOfSecond = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 10);186 uint fractionOfSecond = BigEndian.ToUInt32(buffer, startIndex + 10);
187 long ticksBeyondSecond;187 long ticksBeyondSecond;
188 188
189 // Without timebase, the best timestamp you can get is down to the whole second189 // Without timebase, the best timestamp you can get is down to the whole second
@@ -230,7 +230,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 40 unmodified lines
230 index += 3;230 index += 3;
231 231
232 // Get SPDU length232 // Get SPDU length
233 m_spduLength = EndianOrder.BigEndian.ToUInt32(buffer, index);233 m_spduLength = BigEndian.ToUInt32(buffer, index);
234 index += 4;234 index += 4;
235 235
236 // Add SPDU length to total frame length (updated as of 10/3/2012 to accommodate extra 6 bytes)236 // Add SPDU length to total frame length (updated as of 10/3/2012 to accommodate extra 6 bytes)
@@ -241,7 +241,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 4 unmodified lines
241 if (length > m_spduLength + 13)241 if (length > m_spduLength + 13)
242 {242 {
243 // Get SPDU packet number243 // Get SPDU packet number
244 m_packetNumber = EndianOrder.BigEndian.ToUInt32(buffer, index);244 m_packetNumber = BigEndian.ToUInt32(buffer, index);
245 245
246 // Get security algorithm type246 // Get security algorithm type
247 m_securityAlgorithm = (SecurityAlgorithm)buffer[index + 12];247 m_securityAlgorithm = (SecurityAlgorithm)buffer[index + 12];
@@ -250,7 +250,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 2 unmodified lines
250 m_signatureAlgorithm = (SignatureAlgorithm)buffer[index + 13];250 m_signatureAlgorithm = (SignatureAlgorithm)buffer[index + 13];
251 251
252 // Get current key ID252 // Get current key ID
253 m_keyID = EndianOrder.BigEndian.ToUInt32(buffer, index + 14);253 m_keyID = BigEndian.ToUInt32(buffer, index + 14);
254 254
255 // Add signature calculation result length to total frame length255 // Add signature calculation result length to total frame length
256 switch (m_signatureAlgorithm)256 switch (m_signatureAlgorithm)
@@ -327,7 +327,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 70 unmodified lines
327 327
328 // Get payload length328 // Get payload length
329 index += 18;329 index += 18;
330 m_dataLength = (ushort)EndianOrder.BigEndian.ToUInt32(buffer, index);330 m_dataLength = (ushort)BigEndian.ToUInt32(buffer, index);
331 index += 4;331 index += 4;
332 332
333 // Confirm payload type tag is sampled values333 // Confirm payload type tag is sampled values
@@ -340,11 +340,11 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 6 unmodified lines
340 m_simulatedData = buffer[index++] != 0;340 m_simulatedData = buffer[index++] != 0;
341 341
342 // Get application ID342 // Get application ID
343 m_applicationID = EndianOrder.BigEndian.ToUInt16(buffer, index);343 m_applicationID = BigEndian.ToUInt16(buffer, index);
344 index += 2;344 index += 2;
345 345
346 // Get ASDU payload size346 // Get ASDU payload size
347 m_payloadSize = EndianOrder.BigEndian.ToUInt16(buffer, index);347 m_payloadSize = BigEndian.ToUInt16(buffer, index);
348 index += 2;348 index += 2;
349 349
350 // Validate sampled value PDU tag exists and skip past it350 // Validate sampled value PDU tag exists and skip past it
@@ -974,20 +974,20 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 623 unmodified lines
974 index = 6;974 index = 6;
975 975
976 // Encode SPDU length976 // Encode SPDU length
977 index += EndianOrder.BigEndian.CopyBytes(m_spduLength, buffer, index);977 index += BigEndian.CopyBytes(m_spduLength, buffer, index);
978 978
979 // Encode SPDU packet number979 // Encode SPDU packet number
980 index += EndianOrder.BigEndian.CopyBytes(m_packetNumber, buffer, index);980 index += BigEndian.CopyBytes(m_packetNumber, buffer, index);
981 981
982 // Encode SPDU version number (hard coded to version 1)982 // Encode SPDU version number (hard coded to version 1)
983 index += EndianOrder.BigEndian.CopyBytes((ushort)1, buffer, index);983 index += BigEndian.CopyBytes((ushort)1, buffer, index);
984 984
985 // Encode time of current key985 // Encode time of current key
986 UnixTimeTag time = new UnixTimeTag(DateTime.UtcNow.Ticks);986 UnixTimeTag time = new UnixTimeTag(DateTime.UtcNow.Ticks);
987 index += EndianOrder.BigEndian.CopyBytes((uint)time.Value, buffer, index);987 index += BigEndian.CopyBytes((uint)time.Value, buffer, index);
988 988
989 // Encode time to next key (again, TBD once security is actually defined)989 // Encode time to next key (again, TBD once security is actually defined)
990 index += EndianOrder.BigEndian.CopyBytes((ushort)100, buffer, index);990 index += BigEndian.CopyBytes((ushort)100, buffer, index);
991 991
992 // Encode security algorithm type992 // Encode security algorithm type
993 buffer[index++] = (byte)m_securityAlgorithm;993 buffer[index++] = (byte)m_securityAlgorithm;
@@ -996,10 +996,10 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 2 unmodified lines
996 buffer[index++] = (byte)m_signatureAlgorithm;996 buffer[index++] = (byte)m_signatureAlgorithm;
997 997
998 // Encode current key ID998 // Encode current key ID
999 index += EndianOrder.BigEndian.CopyBytes(m_keyID, buffer, index);999 index += BigEndian.CopyBytes(m_keyID, buffer, index);
1000 1000
1001 // Encode payload length1001 // Encode payload length
1002 index += EndianOrder.BigEndian.CopyBytes((uint)m_dataLength, buffer, index);1002 index += BigEndian.CopyBytes((uint)m_dataLength, buffer, index);
1003 1003
1004 // Encode payload tag for sampled values1004 // Encode payload tag for sampled values
1005 buffer[index++] = 0x82;1005 buffer[index++] = 0x82;
@@ -1008,10 +1008,10 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 2 unmodified lines
1008 buffer[index++] = (byte)(m_simulatedData ? 0x01 : 0x00);1008 buffer[index++] = (byte)(m_simulatedData ? 0x01 : 0x00);
1009 1009
1010 // Encode the application ID1010 // Encode the application ID
1011 index += EndianOrder.BigEndian.CopyBytes(m_applicationID, buffer, index);1011 index += BigEndian.CopyBytes(m_applicationID, buffer, index);
1012 1012
1013 // Encode ASDU payload size1013 // Encode ASDU payload size
1014 index += EndianOrder.BigEndian.CopyBytes(pduLen, buffer, index);1014 index += BigEndian.CopyBytes(pduLen, buffer, index);
1015 1015
1016 // Encode SV PDU tag1016 // Encode SV PDU tag
1017 m_payloadSize.EncodeTagLength(SampledValueTag.SvPdu, buffer, ref index);1017 m_payloadSize.EncodeTagLength(SampledValueTag.SvPdu, buffer, ref index);
@@ -1029,10 +1029,10 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 11 unmodified lines
1029 1029
1030 buffer[0] = PhasorProtocols.Common.SyncByte;1030 buffer[0] = PhasorProtocols.Common.SyncByte;
1031 buffer[1] = (byte)((byte)TypeID | Version);1031 buffer[1] = (byte)((byte)TypeID | Version);
1032 EndianOrder.BigEndian.CopyBytes(FrameLength, buffer, 2);1032 BigEndian.CopyBytes(FrameLength, buffer, 2);
1033 EndianOrder.BigEndian.CopyBytes(IDCode, buffer, 4);1033 BigEndian.CopyBytes(IDCode, buffer, 4);
1034 EndianOrder.BigEndian.CopyBytes(SecondOfCentury, buffer, 6);1034 BigEndian.CopyBytes(SecondOfCentury, buffer, 6);
1035 EndianOrder.BigEndian.CopyBytes(FractionOfSecond | (int)m_timeQualityFlags, buffer, 10);1035 BigEndian.CopyBytes(FractionOfSecond | (int)m_timeQualityFlags, buffer, 10);
1036 }1036 }
1037 1037
1038 return buffer;1038 return buffer;
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/ConfigurationCell.cs+12−12
@@ -240,11 +240,11 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 239 unmodified lines
240 int index = 0;240 int index = 0;
241 241
242 base.HeaderImage.CopyImage(buffer, ref index, base.HeaderLength);242 base.HeaderImage.CopyImage(buffer, ref index, base.HeaderLength);
243 EndianOrder.BigEndian.CopyBytes(IDCode, buffer, index);243 BigEndian.CopyBytes(IDCode, buffer, index);
244 EndianOrder.BigEndian.CopyBytes((ushort)m_formatFlags, buffer, index + 2);244 BigEndian.CopyBytes((ushort)m_formatFlags, buffer, index + 2);
245 EndianOrder.BigEndian.CopyBytes((ushort)PhasorDefinitions.Count, buffer, index + 4);245 BigEndian.CopyBytes((ushort)PhasorDefinitions.Count, buffer, index + 4);
246 EndianOrder.BigEndian.CopyBytes((ushort)AnalogDefinitions.Count, buffer, index + 6);246 BigEndian.CopyBytes((ushort)AnalogDefinitions.Count, buffer, index + 6);
247 EndianOrder.BigEndian.CopyBytes((ushort)DigitalDefinitions.Count, buffer, index + 8);247 BigEndian.CopyBytes((ushort)DigitalDefinitions.Count, buffer, index + 8);
248 248
249 return buffer;249 return buffer;
250 }250 }
@@ -304,7 +304,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 53 unmodified lines
304 304
305 // Include configuration count (new for version 7.0)305 // Include configuration count (new for version 7.0)
306 if (Parent.DraftRevision > DraftRevision.Draft6)306 if (Parent.DraftRevision > DraftRevision.Draft6)
307 EndianOrder.BigEndian.CopyBytes(RevisionCount, buffer, index);307 BigEndian.CopyBytes(RevisionCount, buffer, index);
308 308
309 return buffer;309 return buffer;
310 }310 }
@@ -344,13 +344,13 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 33 unmodified lines
344 // Parse out station name344 // Parse out station name
345 index += base.ParseHeaderImage(buffer, startIndex, length);345 index += base.ParseHeaderImage(buffer, startIndex, length);
346 346
347 IDCode = EndianOrder.BigEndian.ToUInt16(buffer, index);347 IDCode = BigEndian.ToUInt16(buffer, index);
348 m_formatFlags = (FormatFlags)EndianOrder.BigEndian.ToUInt16(buffer, index + 2);348 m_formatFlags = (FormatFlags)BigEndian.ToUInt16(buffer, index + 2);
349 349
350 // Parse out total phasors, analogs and digitals defined for this device350 // Parse out total phasors, analogs and digitals defined for this device
351 state.PhasorCount = EndianOrder.BigEndian.ToUInt16(buffer, index + 4);351 state.PhasorCount = BigEndian.ToUInt16(buffer, index + 4);
352 state.AnalogCount = EndianOrder.BigEndian.ToUInt16(buffer, index + 6);352 state.AnalogCount = BigEndian.ToUInt16(buffer, index + 6);
353 state.DigitalCount = EndianOrder.BigEndian.ToUInt16(buffer, index + 8);353 state.DigitalCount = BigEndian.ToUInt16(buffer, index + 8);
354 index += 10;354 index += 10;
355 355
356 return (index - startIndex);356 return (index - startIndex);
@@ -401,7 +401,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 44 unmodified lines
401 // Parse out configuration count (new for version 7.0)401 // Parse out configuration count (new for version 7.0)
402 if (Parent.DraftRevision > DraftRevision.Draft6)402 if (Parent.DraftRevision > DraftRevision.Draft6)
403 {403 {
404 RevisionCount = EndianOrder.BigEndian.ToUInt16(buffer, index);404 RevisionCount = BigEndian.ToUInt16(buffer, index);
405 index += 2;405 index += 2;
406 }406 }
407 407
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/ConfigurationFrame.cs+6−6
@@ -280,8 +280,8 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 279 unmodified lines
280 int index = 0;280 int index = 0;
281 281
282 CommonHeader.BinaryImage.CopyImage(buffer, ref index, CommonFrameHeader.FixedLength);282 CommonHeader.BinaryImage.CopyImage(buffer, ref index, CommonFrameHeader.FixedLength);
283 EndianOrder.BigEndian.CopyBytes(m_timebase, buffer, index);283 BigEndian.CopyBytes(m_timebase, buffer, index);
284 EndianOrder.BigEndian.CopyBytes((ushort)Cells.Count, buffer, index + 4);284 BigEndian.CopyBytes((ushort)Cells.Count, buffer, index + 4);
285 285
286 return buffer;286 return buffer;
287 }287 }
@@ -307,7 +307,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 19 unmodified lines
307 {307 {
308 byte[] buffer = new byte[2];308 byte[] buffer = new byte[2];
309 309
310 EndianOrder.BigEndian.CopyBytes(FrameRate, buffer, 0);310 BigEndian.CopyBytes(FrameRate, buffer, 0);
311 311
312 return buffer;312 return buffer;
313 }313 }
@@ -357,9 +357,9 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 43 unmodified lines
357 // Skip past header that was already parsed...357 // Skip past header that was already parsed...
358 startIndex += CommonFrameHeader.FixedLength;358 startIndex += CommonFrameHeader.FixedLength;
359 359
360 m_timebase = EndianOrder.BigEndian.ToUInt32(buffer, startIndex);360 m_timebase = BigEndian.ToUInt32(buffer, startIndex);
361 CommonHeader.Timebase = m_timebase;361 CommonHeader.Timebase = m_timebase;
362 State.CellCount = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 4);362 State.CellCount = BigEndian.ToUInt16(buffer, startIndex + 4);
363 363
364 return FixedHeaderLength;364 return FixedHeaderLength;
365 }365 }
@@ -373,7 +373,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 7 unmodified lines
373 /// <returns>The length of the data that was parsed.</returns>373 /// <returns>The length of the data that was parsed.</returns>
374 protected override int ParseFooterImage(byte[] buffer, int startIndex, int length)374 protected override int ParseFooterImage(byte[] buffer, int startIndex, int length)
375 {375 {
376 FrameRate = EndianOrder.BigEndian.ToUInt16(buffer, startIndex);376 FrameRate = BigEndian.ToUInt16(buffer, startIndex);
377 return 2;377 return 2;
378 }378 }
379 379
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/DataFrame.cs+2−2
@@ -692,8 +692,8 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 691 unmodified lines
692 if (tagLength < 8)692 if (tagLength < 8)
693 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", SampledValueTag.RefrTm, tagLength));693 throw new InvalidOperationException(string.Format("Unexpected length for \"{0}\" tag: {1}", SampledValueTag.RefrTm, tagLength));
694 694
695 uint secondOfCentury = EndianOrder.BigEndian.ToUInt32(buffer, index);695 uint secondOfCentury = BigEndian.ToUInt32(buffer, index);
696 UInt24 fractionOfSecond = EndianOrder.BigEndian.ToUInt24(buffer, index + 4);696 UInt24 fractionOfSecond = BigEndian.ToUInt24(buffer, index + 4);
697 index += 7;697 index += 7;
698 698
699 // Get whole seconds of timestamp699 // Get whole seconds of timestamp
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/DigitalDefinition.cs+4−4
@@ -240,8 +240,8 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 239 unmodified lines
240 {240 {
241 byte[] buffer = new byte[ConversionFactorLength];241 byte[] buffer = new byte[ConversionFactorLength];
242 242
243 EndianOrder.BigEndian.CopyBytes(m_normalStatus, buffer, 0);243 BigEndian.CopyBytes(m_normalStatus, buffer, 0);
244 EndianOrder.BigEndian.CopyBytes(m_validInputs, buffer, 2);244 BigEndian.CopyBytes(m_validInputs, buffer, 2);
245 245
246 return buffer;246 return buffer;
247 }247 }
@@ -402,8 +402,8 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 154 unmodified lines
402 /// <param name="startIndex">Start index into <paramref name="buffer"/> to begin parsing.</param>402 /// <param name="startIndex">Start index into <paramref name="buffer"/> to begin parsing.</param>
403 internal int ParseConversionFactor(byte[] buffer, int startIndex)403 internal int ParseConversionFactor(byte[] buffer, int startIndex)
404 {404 {
405 m_normalStatus = EndianOrder.BigEndian.ToUInt16(buffer, startIndex);405 m_normalStatus = BigEndian.ToUInt16(buffer, startIndex);
406 m_validInputs = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 2);406 m_validInputs = BigEndian.ToUInt16(buffer, startIndex + 2);
407 407
408 return ConversionFactorLength;408 return ConversionFactorLength;
409 }409 }
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/FrequencyDefinition.cs+2−2
@@ -104,7 +104,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 103 unmodified lines
104 {104 {
105 get105 get
106 {106 {
107 return EndianOrder.BigEndian.GetBytes((ushort)(Parent.NominalFrequency == LineFrequency.Hz50 ? Bits.Bit00 : Bits.Nil));107 return BigEndian.GetBytes((ushort)(Parent.NominalFrequency == LineFrequency.Hz50 ? Bits.Bit00 : Bits.Nil));
108 }108 }
109 }109 }
110 110
@@ -125,7 +125,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 14 unmodified lines
125 /// </remarks>125 /// </remarks>
126 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)126 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)
127 {127 {
128 Parent.NominalFrequency = ((EndianOrder.BigEndian.ToUInt16(buffer, startIndex) & (ushort)Bits.Bit00) > 0) ? LineFrequency.Hz50 : LineFrequency.Hz60;128 Parent.NominalFrequency = ((BigEndian.ToUInt16(buffer, startIndex) & (ushort)Bits.Bit00) > 0) ? LineFrequency.Hz50 : LineFrequency.Hz60;
129 return 2;129 return 2;
130 }130 }
131 131
Source/Libraries/GSF.PhasorProtocols/Iec61850_90_5/PhasorDefinition.cs+2−2
@@ -107,7 +107,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 106 unmodified lines
107 107
108 buffer[0] = (byte)PhasorType;108 buffer[0] = (byte)PhasorType;
109 109
110 EndianOrder.BigEndian.CopyBytes(scalingFactor, buffer, 1);110 BigEndian.CopyBytes(scalingFactor, buffer, 1);
111 111
112 return buffer;112 return buffer;
113 }113 }
@@ -128,7 +128,7 @@ namespace GSF.PhasorProtocols.IEC61850_90_5 · 14 unmodified lines
128 PhasorType = (buffer[startIndex] == 0) ? PhasorType.Voltage : PhasorType.Current;128 PhasorType = (buffer[startIndex] == 0) ? PhasorType.Voltage : PhasorType.Current;
129 129
130 // Last three bytes represent scaling factor130 // Last three bytes represent scaling factor
131 ScalingValue = EndianOrder.BigEndian.ToUInt24(buffer, startIndex + 1);131 ScalingValue = BigEndian.ToUInt24(buffer, startIndex + 1);
132 132
133 return ConversionFactorLength;133 return ConversionFactorLength;
134 }134 }
Source/Libraries/GSF.PhasorProtocols/Ieee1344/CommandFrame.cs+5−5
@@ -80,7 +80,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 79 unmodified lines
80 // Validate check-sum80 // Validate check-sum
81 int sumLength = FrameLength - 2;81 int sumLength = FrameLength - 2;
82 82
83 if (EndianOrder.BigEndian.ToUInt16(buffer, startIndex + sumLength) != CalculateChecksum(buffer, startIndex, sumLength))83 if (BigEndian.ToUInt16(buffer, startIndex + sumLength) != CalculateChecksum(buffer, startIndex, sumLength))
84 throw new InvalidOperationException("Invalid binary image detected - check sum of " + this.GetType().Name + " did not match");84 throw new InvalidOperationException("Invalid binary image detected - check sum of " + this.GetType().Name + " did not match");
85 85
86 ParseBinaryImage(buffer, startIndex, length);86 ParseBinaryImage(buffer, startIndex, length);
@@ -194,8 +194,8 @@ namespace GSF.PhasorProtocols.IEEE1344 · 107 unmodified lines
194 {194 {
195 byte[] buffer = new byte[HeaderLength];195 byte[] buffer = new byte[HeaderLength];
196 196
197 EndianOrder.BigEndian.CopyBytes((uint)TimeTag.Value, buffer, 0);197 BigEndian.CopyBytes((uint)TimeTag.Value, buffer, 0);
198 EndianOrder.BigEndian.CopyBytes(m_idCode, buffer, 4);198 BigEndian.CopyBytes(m_idCode, buffer, 4);
199 199
200 return buffer;200 return buffer;
201 }201 }
@@ -229,8 +229,8 @@ namespace GSF.PhasorProtocols.IEEE1344 · 27 unmodified lines
229 /// <returns>The length of the data that was parsed.</returns>229 /// <returns>The length of the data that was parsed.</returns>
230 protected override int ParseHeaderImage(byte[] buffer, int startIndex, int length)230 protected override int ParseHeaderImage(byte[] buffer, int startIndex, int length)
231 {231 {
232 Timestamp = (new NtpTimeTag(EndianOrder.BigEndian.ToUInt32(buffer, startIndex), 0)).ToDateTime().Ticks;232 Timestamp = (new NtpTimeTag(BigEndian.ToUInt32(buffer, startIndex), 0)).ToDateTime().Ticks;
233 m_idCode = EndianOrder.BigEndian.ToUInt64(buffer, startIndex + 4);233 m_idCode = BigEndian.ToUInt64(buffer, startIndex + 4);
234 return 12;234 return 12;
235 }235 }
236 236
Source/Libraries/GSF.PhasorProtocols/Ieee1344/CommonFrameHeader.cs+6−6
@@ -83,13 +83,13 @@ namespace GSF.PhasorProtocols.IEEE1344 · 82 unmodified lines
83 /// <param name="startIndex">Start index into buffer where valid data begins.</param>83 /// <param name="startIndex">Start index into buffer where valid data begins.</param>
84 public CommonFrameHeader(ConfigurationFrame configurationFrame, byte[] buffer, int startIndex)84 public CommonFrameHeader(ConfigurationFrame configurationFrame, byte[] buffer, int startIndex)
85 {85 {
86 uint secondOfCentury = EndianOrder.BigEndian.ToUInt32(buffer, startIndex);86 uint secondOfCentury = BigEndian.ToUInt32(buffer, startIndex);
87 m_sampleCount = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 4);87 m_sampleCount = BigEndian.ToUInt16(buffer, startIndex + 4);
88 88
89 // We go ahead and pre-grab cell's status flags so we can determine framelength - we89 // We go ahead and pre-grab cell's status flags so we can determine framelength - we
90 // leave startindex at 6 so that cell will be able to parse flags as needed - note90 // leave startindex at 6 so that cell will be able to parse flags as needed - note
91 // this increases needed common frame header size by 2 (i.e., BinaryLength + 2)91 // this increases needed common frame header size by 2 (i.e., BinaryLength + 2)
92 m_statusFlags = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + FixedLength);92 m_statusFlags = BigEndian.ToUInt16(buffer, startIndex + FixedLength);
93 93
94 // NTP timestamps based on NtpTimeTag class are designed to work for dates between94 // NTP timestamps based on NtpTimeTag class are designed to work for dates between
95 // 1968-01-20 and 2104-02-26 based on recommended bit interpretation in RFC-2030.95 // 1968-01-20 and 2104-02-26 based on recommended bit interpretation in RFC-2030.
@@ -357,8 +357,8 @@ namespace GSF.PhasorProtocols.IEEE1344 · 261 unmodified lines
357 // Make sure frame length gets included in status flags for generated binary image357 // Make sure frame length gets included in status flags for generated binary image
358 FrameLength = (ushort)FixedLength;358 FrameLength = (ushort)FixedLength;
359 359
360 EndianOrder.BigEndian.CopyBytes((uint)TimeTag.Value, buffer, 0);360 BigEndian.CopyBytes((uint)TimeTag.Value, buffer, 0);
361 EndianOrder.BigEndian.CopyBytes(m_sampleCount, buffer, 4);361 BigEndian.CopyBytes(m_sampleCount, buffer, 4);
362 362
363 return buffer;363 return buffer;
364 }364 }
@@ -422,7 +422,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 57 unmodified lines
422 public static bool ChecksumIsValid(byte[] buffer, int startIndex, int length)422 public static bool ChecksumIsValid(byte[] buffer, int startIndex, int length)
423 {423 {
424 int sumLength = length - 2;424 int sumLength = length - 2;
425 return EndianOrder.BigEndian.ToUInt16(buffer, startIndex + sumLength) == buffer.CrcCCITTChecksum(startIndex, sumLength);425 return BigEndian.ToUInt16(buffer, startIndex + sumLength) == buffer.CrcCCITTChecksum(startIndex, sumLength);
426 }426 }
427 427
428 #endregion428 #endregion
Source/Libraries/GSF.PhasorProtocols/Ieee1344/ConfigurationCell.cs+8−8
@@ -295,15 +295,15 @@ namespace GSF.PhasorProtocols.IEEE1344 · 294 unmodified lines
295 byte[] buffer = new byte[HeaderLength];295 byte[] buffer = new byte[HeaderLength];
296 int index = 0;296 int index = 0;
297 297
298 EndianOrder.BigEndian.CopyBytes(m_statusFlags, buffer, index);298 BigEndian.CopyBytes(m_statusFlags, buffer, index);
299 299
300 // Copy in station name300 // Copy in station name
301 index += 2;301 index += 2;
302 base.HeaderImage.CopyImage(buffer, ref index, base.HeaderLength);302 base.HeaderImage.CopyImage(buffer, ref index, base.HeaderLength);
303 303
304 EndianOrder.BigEndian.CopyBytes(IDCode, buffer, index);304 BigEndian.CopyBytes(IDCode, buffer, index);
305 EndianOrder.BigEndian.CopyBytes((ushort)PhasorDefinitions.Count, buffer, index + 8);305 BigEndian.CopyBytes((ushort)PhasorDefinitions.Count, buffer, index + 8);
306 EndianOrder.BigEndian.CopyBytes((ushort)DigitalDefinitions.Count, buffer, index + 10);306 BigEndian.CopyBytes((ushort)DigitalDefinitions.Count, buffer, index + 10);
307 307
308 return buffer;308 return buffer;
309 }309 }
@@ -390,17 +390,17 @@ namespace GSF.PhasorProtocols.IEEE1344 · 80 unmodified lines
390 IConfigurationCellParsingState state = State;390 IConfigurationCellParsingState state = State;
391 int index = startIndex;391 int index = startIndex;
392 392
393 m_statusFlags = EndianOrder.BigEndian.ToUInt16(buffer, index);393 m_statusFlags = BigEndian.ToUInt16(buffer, index);
394 index += 2;394 index += 2;
395 395
396 // Parse out station name396 // Parse out station name
397 index += base.ParseHeaderImage(buffer, index, length);397 index += base.ParseHeaderImage(buffer, index, length);
398 398
399 IDCode = EndianOrder.BigEndian.ToUInt64(buffer, index);399 IDCode = BigEndian.ToUInt64(buffer, index);
400 400
401 // Parse out total phasors and digitals defined for this device401 // Parse out total phasors and digitals defined for this device
402 state.PhasorCount = EndianOrder.BigEndian.ToUInt16(buffer, index + 8);402 state.PhasorCount = BigEndian.ToUInt16(buffer, index + 8);
403 state.DigitalCount = EndianOrder.BigEndian.ToUInt16(buffer, index + 10);403 state.DigitalCount = BigEndian.ToUInt16(buffer, index + 10);
404 index += 12;404 index += 12;
405 405
406 return (index - startIndex);406 return (index - startIndex);
Source/Libraries/GSF.PhasorProtocols/Ieee1344/ConfigurationFrame.cs+2−2
@@ -282,7 +282,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 281 unmodified lines
282 {282 {
283 get283 get
284 {284 {
285 return EndianOrder.BigEndian.GetBytes(Period);285 return BigEndian.GetBytes(Period);
286 }286 }
287 }287 }
288 288
@@ -380,7 +380,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 91 unmodified lines
380 // with first (and only) configuration cell, since cell was added during ParseBodyImage380 // with first (and only) configuration cell, since cell was added during ParseBodyImage
381 // of ChannelFrameBase, performing the following succeeds since parsing the footer381 // of ChannelFrameBase, performing the following succeeds since parsing the footer
382 // follows parsing the body :)382 // follows parsing the body :)
383 Period = EndianOrder.BigEndian.ToUInt16(buffer, startIndex);383 Period = BigEndian.ToUInt16(buffer, startIndex);
384 return FixedFooterLength;384 return FixedFooterLength;
385 }385 }
386 386
Source/Libraries/GSF.PhasorProtocols/Ieee1344/DigitalDefinition.cs+2−2
@@ -142,7 +142,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 141 unmodified lines
142 {142 {
143 get143 get
144 {144 {
145 return EndianOrder.BigEndian.GetBytes(m_statusFlags);145 return BigEndian.GetBytes(m_statusFlags);
146 }146 }
147 }147 }
148 148
@@ -181,7 +181,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 32 unmodified lines
181 /// <param name="startIndex">Start index into <paramref name="buffer"/> to begin parsing.</param>181 /// <param name="startIndex">Start index into <paramref name="buffer"/> to begin parsing.</param>
182 internal int ParseConversionFactor(byte[] buffer, int startIndex)182 internal int ParseConversionFactor(byte[] buffer, int startIndex)
183 {183 {
184 m_statusFlags = EndianOrder.BigEndian.ToUInt16(buffer, startIndex);184 m_statusFlags = BigEndian.ToUInt16(buffer, startIndex);
185 return ConversionFactorLength;185 return ConversionFactorLength;
186 }186 }
187 187
Source/Libraries/GSF.PhasorProtocols/Ieee1344/FrequencyDefinition.cs+2−2
@@ -157,7 +157,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 156 unmodified lines
157 else157 else
158 m_statusFlags = (ushort)(m_statusFlags & ~(ushort)Bits.Bit00);158 m_statusFlags = (ushort)(m_statusFlags & ~(ushort)Bits.Bit00);
159 159
160 return EndianOrder.BigEndian.GetBytes(m_statusFlags);160 return BigEndian.GetBytes(m_statusFlags);
161 }161 }
162 }162 }
163 163
@@ -194,7 +194,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 30 unmodified lines
194 /// </remarks>194 /// </remarks>
195 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)195 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)
196 {196 {
197 m_statusFlags = EndianOrder.BigEndian.ToUInt16(buffer, startIndex);197 m_statusFlags = BigEndian.ToUInt16(buffer, startIndex);
198 198
199 Parent.NominalFrequency = ((m_statusFlags & (ushort)Bits.Bit00) > 0) ? LineFrequency.Hz50 : LineFrequency.Hz60;199 Parent.NominalFrequency = ((m_statusFlags & (ushort)Bits.Bit00) > 0) ? LineFrequency.Hz50 : LineFrequency.Hz60;
200 200
Source/Libraries/GSF.PhasorProtocols/Ieee1344/FrequencyValue.cs+4−4
@@ -151,12 +151,12 @@ namespace GSF.PhasorProtocols.IEEE1344 · 150 unmodified lines
151 151
152 if (definition.FrequencyIsAvailable)152 if (definition.FrequencyIsAvailable)
153 {153 {
154 EndianOrder.BigEndian.CopyBytes((short)UnscaledFrequency, buffer, startIndex);154 BigEndian.CopyBytes((short)UnscaledFrequency, buffer, startIndex);
155 startIndex += 2;155 startIndex += 2;
156 }156 }
157 157
158 if (definition.DfDtIsAvailable)158 if (definition.DfDtIsAvailable)
159 EndianOrder.BigEndian.CopyBytes((short)UnscaledDfDt, buffer, startIndex);159 BigEndian.CopyBytes((short)UnscaledDfDt, buffer, startIndex);
160 }160 }
161 161
162 return buffer;162 return buffer;
@@ -188,14 +188,14 @@ namespace GSF.PhasorProtocols.IEEE1344 · 25 unmodified lines
188 // Note that IEEE 1344 only supports scaled integers (no need to worry about floating points)188 // Note that IEEE 1344 only supports scaled integers (no need to worry about floating points)
189 if (definition.FrequencyIsAvailable)189 if (definition.FrequencyIsAvailable)
190 {190 {
191 UnscaledFrequency = EndianOrder.BigEndian.ToInt16(buffer, startIndex);191 UnscaledFrequency = BigEndian.ToInt16(buffer, startIndex);
192 startIndex += 2;192 startIndex += 2;
193 parsedLength += 2;193 parsedLength += 2;
194 }194 }
195 195
196 if (definition.DfDtIsAvailable)196 if (definition.DfDtIsAvailable)
197 {197 {
198 UnscaledDfDt = EndianOrder.BigEndian.ToInt16(buffer, startIndex);198 UnscaledDfDt = BigEndian.ToInt16(buffer, startIndex);
199 parsedLength += 2;199 parsedLength += 2;
200 }200 }
201 }201 }
Source/Libraries/GSF.PhasorProtocols/Ieee1344/PhasorDefinition.cs+2−2
@@ -109,7 +109,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 108 unmodified lines
109 109
110 buffer[0] = (byte)(PhasorType == PhasorType.Voltage ? 0 : 1);110 buffer[0] = (byte)(PhasorType == PhasorType.Voltage ? 0 : 1);
111 111
112 EndianOrder.BigEndian.CopyBytes(scalingFactor, buffer, 1);112 BigEndian.CopyBytes(scalingFactor, buffer, 1);
113 113
114 return buffer;114 return buffer;
115 }115 }
@@ -130,7 +130,7 @@ namespace GSF.PhasorProtocols.IEEE1344 · 14 unmodified lines
130 PhasorType = (buffer[startIndex] == 0) ? PhasorType.Voltage : PhasorType.Current;130 PhasorType = (buffer[startIndex] == 0) ? PhasorType.Voltage : PhasorType.Current;
131 131
132 // Last three bytes represent scaling factor132 // Last three bytes represent scaling factor
133 ScalingValue = EndianOrder.BigEndian.ToUInt24(buffer, startIndex + 1);133 ScalingValue = BigEndian.ToUInt24(buffer, startIndex + 1);
134 134
135 return ConversionFactorLength;135 return ConversionFactorLength;
136 }136 }
Source/Libraries/GSF.PhasorProtocols/IeeeC37_118/ConfigurationCell3.cs+25−25
@@ -123,14 +123,14 @@ namespace GSF.PhasorProtocols.IEEEC37_118 · 122 unmodified lines
123 int index = 0;123 int index = 0;
124 124
125 base.HeaderImage.CopyImage(buffer, ref index, base.HeaderLength);125 base.HeaderImage.CopyImage(buffer, ref index, base.HeaderLength);
126 EndianOrder.BigEndian.CopyBytes(IDCode, buffer, index);126 BigEndian.CopyBytes(IDCode, buffer, index);
127 EndianOrder.BigEndian.CopyBytes(StationName.Length, buffer, index);127 BigEndian.CopyBytes(StationName.Length, buffer, index);
128 EndianOrder.BigEndian.CopyBytes(StationName, buffer, index);128 BigEndian.CopyBytes(StationName, buffer, index);
129 EndianOrder.BigEndian.CopyBytes(State.G_PMU_ID, buffer, index);129 BigEndian.CopyBytes(State.G_PMU_ID, buffer, index);
130 EndianOrder.BigEndian.CopyBytes((ushort)m_formatFlags, buffer, index + 2);130 BigEndian.CopyBytes((ushort)m_formatFlags, buffer, index + 2);
131 EndianOrder.BigEndian.CopyBytes((ushort)PhasorDefinitions.Count, buffer, index + 4);131 BigEndian.CopyBytes((ushort)PhasorDefinitions.Count, buffer, index + 4);
132 EndianOrder.BigEndian.CopyBytes((ushort)AnalogDefinitions.Count, buffer, index + 6);132 BigEndian.CopyBytes((ushort)AnalogDefinitions.Count, buffer, index + 6);
133 EndianOrder.BigEndian.CopyBytes((ushort)DigitalDefinitions.Count, buffer, index + 8);133 BigEndian.CopyBytes((ushort)DigitalDefinitions.Count, buffer, index + 8);
134 134
135 135
136 return buffer;136 return buffer;
@@ -191,7 +191,7 @@ namespace GSF.PhasorProtocols.IEEEC37_118 · 54 unmodified lines
191 191
192 // Include configuration count (new for version 7.0)192 // Include configuration count (new for version 7.0)
193 if (Parent.DraftRevision > DraftRevision.Draft6)193 if (Parent.DraftRevision > DraftRevision.Draft6)
194 EndianOrder.BigEndian.CopyBytes(RevisionCount, buffer, index);194 BigEndian.CopyBytes(RevisionCount, buffer, index);
195 195
196 return buffer;196 return buffer;
197 }197 }
@@ -218,7 +218,7 @@ namespace GSF.PhasorProtocols.IEEEC37_118 · 20 unmodified lines
218 218
219 string getLengthPrependedString(byte[] buffer, int index, out int length)219 string getLengthPrependedString(byte[] buffer, int index, out int length)
220 {220 {
221 length = EndianOrder.BigEndian.ToInt16(buffer, index);221 length = BigEndian.ToInt16(buffer, index);
222 return ByteEncoding.ASCII.GetString(buffer, index + 2, length);222 return ByteEncoding.ASCII.GetString(buffer, index + 2, length);
223 }223 }
224 224
@@ -240,13 +240,13 @@ namespace GSF.PhasorProtocols.IEEEC37_118 · 15 unmodified lines
240 int len;240 int len;
241 StationName = getLengthPrependedString(buffer, index, out len);241 StationName = getLengthPrependedString(buffer, index, out len);
242 index += len + 2;242 index += len + 2;
243 IDCode = EndianOrder.BigEndian.ToUInt16(buffer, index);243 IDCode = BigEndian.ToUInt16(buffer, index);
244 State.G_PMU_ID = EndianOrder.BigEndian.ToGuid(buffer, index + 2); 244 State.G_PMU_ID = BigEndian.ToGuid(buffer, index + 2);
245 m_formatFlags = (FormatFlags)EndianOrder.BigEndian.ToUInt16(buffer, index + 16 + 2); //left as 16+x for clarity while editing, FIXME245 m_formatFlags = (FormatFlags)BigEndian.ToUInt16(buffer, index + 16 + 2); //left as 16+x for clarity while editing, FIXME
246 // Parse out total phasors, analogs and digitals defined for this device246 // Parse out total phasors, analogs and digitals defined for this device
247 State.PhasorCount = EndianOrder.BigEndian.ToUInt16(buffer, index + 16+4); 247 State.PhasorCount = BigEndian.ToUInt16(buffer, index + 16+4);
248 State.AnalogCount = EndianOrder.BigEndian.ToUInt16(buffer, index + 16+6);248 State.AnalogCount = BigEndian.ToUInt16(buffer, index + 16+6);
249 State.DigitalCount = EndianOrder.BigEndian.ToUInt16(buffer, index + 16+8);249 State.DigitalCount = BigEndian.ToUInt16(buffer, index + 16+8);
250 250
251 251
252 index += 10+16; //FIXME: merge252 index += 10+16; //FIXME: merge
@@ -305,21 +305,21 @@ namespace GSF.PhasorProtocols.IEEEC37_118 · 52 unmodified lines
305 index += 4;305 index += 4;
306 }306 }
307 //PMU_LAT, 4 bytes, IEEE float, -90.0 to +90.0307 //PMU_LAT, 4 bytes, IEEE float, -90.0 to +90.0
308 State.DeviceLatitude = EndianOrder.BigEndian.ToSingle(buffer, index);308 State.DeviceLatitude = BigEndian.ToSingle(buffer, index);
309 //PMU_LON, 4 bytes, IEEE float, -179.9... to +180309 //PMU_LON, 4 bytes, IEEE float, -179.9... to +180
310 State.DeviceLongitude = EndianOrder.BigEndian.ToSingle(buffer, index + 4);310 State.DeviceLongitude = BigEndian.ToSingle(buffer, index + 4);
311 //PMU_ELEV, 4 bytes, IEEE float, infinity for unknown311 //PMU_ELEV, 4 bytes, IEEE float, infinity for unknown
312 State.DeviceElevation = EndianOrder.BigEndian.ToSingle(buffer, index + 8);312 State.DeviceElevation = BigEndian.ToSingle(buffer, index + 8);
313 //SVC_CLASS, 1 ASCII char313 //SVC_CLASS, 1 ASCII char
314 State.ServiceClass = EndianOrder.BigEndian.ToChar(buffer, index + 9);314 State.ServiceClass = BigEndian.ToChar(buffer, index + 9);
315 //WINDOW, 4 bytes, signed int315 //WINDOW, 4 bytes, signed int
316 State.MeasurementWindow = EndianOrder.BigEndian.ToInt32(buffer, index + 13);316 State.MeasurementWindow = BigEndian.ToInt32(buffer, index + 13);
317 //GRP_DLY, 4 bytes, signed int317 //GRP_DLY, 4 bytes, signed int
318 State.GroupDelay = EndianOrder.BigEndian.ToInt32(buffer, index + 17);318 State.GroupDelay = BigEndian.ToInt32(buffer, index + 17);
319 //FNOM, 2 bytes, unsigned int, Bit 0 is flag (50/60 hz)319 //FNOM, 2 bytes, unsigned int, Bit 0 is flag (50/60 hz)
320 State.FNOM = EndianOrder.BigEndian.ToUInt16(buffer, index + 19);320 State.FNOM = BigEndian.ToUInt16(buffer, index + 19);
321 //CFGCNT, 2 bytes321 //CFGCNT, 2 bytes
322 State.CFGCNT = EndianOrder.BigEndian.ToUInt16(buffer, index + 21);322 State.CFGCNT = BigEndian.ToUInt16(buffer, index + 21);
323 323
324 return startIndex; //FIXME324 return startIndex; //FIXME
325 }325 }
@@ -341,7 +341,7 @@ namespace GSF.PhasorProtocols.IEEEC37_118 · 15 unmodified lines
341 // Parse out configuration count (new for version 7.0)341 // Parse out configuration count (new for version 7.0)
342 if (Parent.DraftRevision > DraftRevision.Draft6)342 if (Parent.DraftRevision > DraftRevision.Draft6)
343 {343 {
344 RevisionCount = EndianOrder.BigEndian.ToUInt16(buffer, index);344 RevisionCount = BigEndian.ToUInt16(buffer, index);
345 index += 2;345 index += 2;
346 }346 }
347 347
Source/Libraries/GSF.PhasorProtocols/IeeeC37_118/ConfigurationFrame3.cs+3−3
@@ -83,9 +83,9 @@ namespace GSF.PhasorProtocols.IEEEC37_118 · 82 unmodified lines
83 {83 {
84 // Skip past header that was already parsed...84 // Skip past header that was already parsed...
85 startIndex += CommonFrameHeader.FixedLength;85 startIndex += CommonFrameHeader.FixedLength;
86 // State.CONT_IDX = EndianOrder.BigEndian.ToInt16(buffer, startIndex); FIXME: For now, this is completely ignored86 // State.CONT_IDX = BigEndian.ToInt16(buffer, startIndex); FIXME: For now, this is completely ignored
87 m_timebase = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 2) & ~Common.TimeQualityFlagsMask;87 m_timebase = BigEndian.ToUInt32(buffer, startIndex + 2) & ~Common.TimeQualityFlagsMask;
88 State.CellCount = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 6);88 State.CellCount = BigEndian.ToUInt16(buffer, startIndex + 6);
89 89
90 return FixedHeaderLength;90 return FixedHeaderLength;
91 }91 }
Source/Libraries/GSF.PhasorProtocols/IeeeC37_118/FrameParser.cs+1−1
@@ -305,8 +305,8 @@ namespace GSF.PhasorProtocols.IEEEC37_118 · 304 unmodified lines
305 305
306 if (configurationFrame2 != null)306 if (configurationFrame2 != null)
307 m_configurationFrame2 = configurationFrame2;307 m_configurationFrame2 = configurationFrame2;
308 //FIXME: Add cf3
309 308
309 // TODO: Add handler for config3 frame
310 }310 }
311 311
312 /// <summary>312 /// <summary>
Source/Libraries/GSF.PhasorProtocols/Macrodyne/CommandFrame.cs+1−1
@@ -138,7 +138,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 137 unmodified lines
138 {138 {
139 byte[] buffer = new byte[BinaryLength];139 byte[] buffer = new byte[BinaryLength];
140 140
141 EndianOrder.BigEndian.CopyBytes((ushort)Command, buffer, 0);141 BigEndian.CopyBytes((ushort)Command, buffer, 0);
142 142
143 return buffer;143 return buffer;
144 }144 }
Source/Libraries/GSF.PhasorProtocols/Macrodyne/CommonFrameHeader.cs+3−3
@@ -99,7 +99,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 98 unmodified lines
99 }99 }
100 else100 else
101 {101 {
102 switch (EndianOrder.BigEndian.ToUInt16(buffer, startIndex))102 switch (BigEndian.ToUInt16(buffer, startIndex))
103 {103 {
104 case (ushort)DeviceCommand.RequestOnlineDataFormat:104 case (ushort)DeviceCommand.RequestOnlineDataFormat:
105 TypeID = Macrodyne.FrameType.ConfigurationFrame;105 TypeID = Macrodyne.FrameType.ConfigurationFrame;
@@ -254,10 +254,10 @@ namespace GSF.PhasorProtocols.Macrodyne · 148 unmodified lines
254 buffer[1] = (byte)m_statusFlags;254 buffer[1] = (byte)m_statusFlags;
255 break;255 break;
256 case Macrodyne.FrameType.ConfigurationFrame:256 case Macrodyne.FrameType.ConfigurationFrame:
257 EndianOrder.BigEndian.CopyBytes((ushort)DeviceCommand.RequestOnlineDataFormat, buffer, 0);257 BigEndian.CopyBytes((ushort)DeviceCommand.RequestOnlineDataFormat, buffer, 0);
258 break;258 break;
259 case Macrodyne.FrameType.HeaderFrame:259 case Macrodyne.FrameType.HeaderFrame:
260 EndianOrder.BigEndian.CopyBytes((ushort)DeviceCommand.RequestUnitIDBufferValue, buffer, 0);260 BigEndian.CopyBytes((ushort)DeviceCommand.RequestUnitIDBufferValue, buffer, 0);
261 break;261 break;
262 }262 }
263 263
Source/Libraries/GSF.PhasorProtocols/Macrodyne/ConfigurationFrame.cs+2−2
@@ -465,7 +465,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 464 unmodified lines
465 byte[] buffer = new byte[HeaderLength];465 byte[] buffer = new byte[HeaderLength];
466 466
467 buffer.BlockCopy(0, CommonFrameHeader.FixedLength);467 buffer.BlockCopy(0, CommonFrameHeader.FixedLength);
468 EndianOrder.BigEndian.CopyBytes((ushort)m_onlineDataFormatFlags, buffer, 2);468 BigEndian.CopyBytes((ushort)m_onlineDataFormatFlags, buffer, 2);
469 469
470 return buffer;470 return buffer;
471 }471 }
@@ -644,7 +644,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 172 unmodified lines
644 startIndex += CommonFrameHeader.FixedLength;644 startIndex += CommonFrameHeader.FixedLength;
645 645
646 // Parse on -line data format646 // Parse on -line data format
647 m_onlineDataFormatFlags = (OnlineDataFormatFlags)EndianOrder.BigEndian.ToUInt16(buffer, startIndex);647 m_onlineDataFormatFlags = (OnlineDataFormatFlags)BigEndian.ToUInt16(buffer, startIndex);
648 648
649 return CommonFrameHeader.FixedLength + 2;649 return CommonFrameHeader.FixedLength + 2;
650 }650 }
Source/Libraries/GSF.PhasorProtocols/Macrodyne/DataCell.cs+5−5
@@ -392,7 +392,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 391 unmodified lines
392 else392 else
393 {393 {
394 // Read sample number for G protocol394 // Read sample number for G protocol
395 m_sampleNumber = EndianOrder.BigEndian.ToUInt16(buffer, index);395 m_sampleNumber = BigEndian.ToUInt16(buffer, index);
396 index += 2;396 index += 2;
397 }397 }
398 398
@@ -402,7 +402,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 3 unmodified lines
402 m_clockStatusFlags = (ClockStatusFlags)buffer[index];402 m_clockStatusFlags = (ClockStatusFlags)buffer[index];
403 index += 1;403 index += 1;
404 404
405 ushort day = BinaryCodedDecimal.Decode(EndianOrder.BigEndian.ToUInt16(buffer, index));405 ushort day = BinaryCodedDecimal.Decode(BigEndian.ToUInt16(buffer, index));
406 byte hours = BinaryCodedDecimal.Decode(buffer[index + 2]);406 byte hours = BinaryCodedDecimal.Decode(buffer[index + 2]);
407 byte minutes = BinaryCodedDecimal.Decode(buffer[index + 3]);407 byte minutes = BinaryCodedDecimal.Decode(buffer[index + 3]);
408 byte seconds = BinaryCodedDecimal.Decode(buffer[index + 4]);408 byte seconds = BinaryCodedDecimal.Decode(buffer[index + 4]);
@@ -412,7 +412,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 3 unmodified lines
412 // Read sample number for M protocol412 // Read sample number for M protocol
413 if (protocolVersion == ProtocolVersion.M)413 if (protocolVersion == ProtocolVersion.M)
414 {414 {
415 m_sampleNumber = EndianOrder.BigEndian.ToUInt16(buffer, index + 5);415 m_sampleNumber = BigEndian.ToUInt16(buffer, index + 5);
416 timebase = 719.0D;416 timebase = 719.0D;
417 index += 2;417 index += 2;
418 }418 }
@@ -425,7 +425,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 6 unmodified lines
425 {425 {
426 Parent.Timestamp = DateTime.UtcNow.Ticks;426 Parent.Timestamp = DateTime.UtcNow.Ticks;
427 SynchronizationIsValid = false;427 SynchronizationIsValid = false;
428 m_sampleNumber = EndianOrder.BigEndian.ToUInt16(buffer, index);428 m_sampleNumber = BigEndian.ToUInt16(buffer, index);
429 index += 2;429 index += 2;
430 }430 }
431 431
@@ -479,7 +479,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 47 unmodified lines
479 // Parse reference phasor information479 // Parse reference phasor information
480 if (configFrame.ReferenceIncluded)480 if (configFrame.ReferenceIncluded)
481 {481 {
482 m_referenceSampleNumber = EndianOrder.BigEndian.ToUInt16(buffer, index);482 m_referenceSampleNumber = BigEndian.ToUInt16(buffer, index);
483 m_referencePhasor = PhasorValue.CreateNewValue(this, new PhasorDefinition(null, "Reference Phasor", PhasorType.Voltage, null), buffer, index, out parsedLength) as PhasorValue;483 m_referencePhasor = PhasorValue.CreateNewValue(this, new PhasorDefinition(null, "Reference Phasor", PhasorType.Voltage, null), buffer, index, out parsedLength) as PhasorValue;
484 index += 6;484 index += 6;
485 }485 }
Source/Libraries/GSF.PhasorProtocols/Macrodyne/FrequencyValue.cs+1−1
@@ -120,7 +120,7 @@ namespace GSF.PhasorProtocols.Macrodyne · 119 unmodified lines
120 // 1690G protocol currently requires an INI file - as a result this means there will be on dF/dt value in the stream120 // 1690G protocol currently requires an INI file - as a result this means there will be on dF/dt value in the stream
121 if (Parent.Parent.CommonHeader.ProtocolVersion == ProtocolVersion.G)121 if (Parent.Parent.CommonHeader.ProtocolVersion == ProtocolVersion.G)
122 {122 {
123 UnscaledFrequency = EndianOrder.BigEndian.ToInt16(buffer, startIndex);123 UnscaledFrequency = BigEndian.ToInt16(buffer, startIndex);
124 return 2;124 return 2;
125 }125 }
126 126
Source/Libraries/GSF.PhasorProtocols/SelFastMessage/CommandFrame.cs+3−3
@@ -82,12 +82,12 @@ namespace GSF.PhasorProtocols.SelFastMessage · 81 unmodified lines
82 Command = (DeviceCommand)buffer[startIndex + 9];82 Command = (DeviceCommand)buffer[startIndex + 9];
83 83
84 if (Command == DeviceCommand.EnableUnsolicitedMessages)84 if (Command == DeviceCommand.EnableUnsolicitedMessages)
85 m_messagePeriod = (MessagePeriod)EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 14);85 m_messagePeriod = (MessagePeriod)BigEndian.ToUInt16(buffer, startIndex + 14);
86 86
87 // Validate check-sum87 // Validate check-sum
88 int sumLength = FrameSize - 2;88 int sumLength = FrameSize - 2;
89 89
90 if (EndianOrder.BigEndian.ToUInt16(buffer, startIndex + sumLength) != CalculateChecksum(buffer, startIndex, sumLength))90 if (BigEndian.ToUInt16(buffer, startIndex + sumLength) != CalculateChecksum(buffer, startIndex, sumLength))
91 throw new InvalidOperationException("Invalid binary image detected - check sum of " + this.GetType().Name + " did not match");91 throw new InvalidOperationException("Invalid binary image detected - check sum of " + this.GetType().Name + " did not match");
92 }92 }
93 93
@@ -240,7 +240,7 @@ namespace GSF.PhasorProtocols.SelFastMessage · 146 unmodified lines
240 240
241 // Only add desired message rate for enable command241 // Only add desired message rate for enable command
242 if (Command == DeviceCommand.EnableUnsolicitedMessages)242 if (Command == DeviceCommand.EnableUnsolicitedMessages)
243 EndianOrder.BigEndian.CopyBytes((ushort)m_messagePeriod, buffer, 5);243 BigEndian.CopyBytes((ushort)m_messagePeriod, buffer, 5);
244 244
245 return buffer;245 return buffer;
246 }246 }
Source/Libraries/GSF.PhasorProtocols/SelFastMessage/CommonFrameHeader.cs+7−7
@@ -88,9 +88,9 @@ namespace GSF.PhasorProtocols.SelFastMessage · 87 unmodified lines
88 88
89 // Parse relevant common header values89 // Parse relevant common header values
90 m_frameSize = (FrameSize)buffer[startIndex + 2];90 m_frameSize = (FrameSize)buffer[startIndex + 2];
91 m_idCode = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 12);91 m_idCode = BigEndian.ToUInt32(buffer, startIndex + 12);
92 sampleCount = EndianOrder.BigEndian.ToUInt16(buffer, startIndex + 18);92 sampleCount = BigEndian.ToUInt16(buffer, startIndex + 18);
93 secondOfCentury = EndianOrder.BigEndian.ToUInt32(buffer, startIndex + 20);93 secondOfCentury = BigEndian.ToUInt32(buffer, startIndex + 20);
94 94
95 // We use an NTP time tag since SEL Fast Message SOC also starts at 1/1/190095 // We use an NTP time tag since SEL Fast Message SOC also starts at 1/1/1900
96 timetag = new NtpTimeTag(secondOfCentury, 0);96 timetag = new NtpTimeTag(secondOfCentury, 0);
@@ -236,16 +236,16 @@ namespace GSF.PhasorProtocols.SelFastMessage · 139 unmodified lines
236 buffer[10] = 0xC0; // Sequence byte236 buffer[10] = 0xC0; // Sequence byte
237 237
238 // Include destination address (PMADDR setting)238 // Include destination address (PMADDR setting)
239 EndianOrder.BigEndian.CopyBytes(m_idCode, buffer, 12);239 BigEndian.CopyBytes(m_idCode, buffer, 12);
240 240
241 // Include register count241 // Include register count
242 EndianOrder.BigEndian.CopyBytes(RegisterCount, buffer, 16);242 BigEndian.CopyBytes(RegisterCount, buffer, 16);
243 243
244 // Include sample number244 // Include sample number
245 EndianOrder.BigEndian.CopyBytes(SampleNumber, buffer, 18);245 BigEndian.CopyBytes(SampleNumber, buffer, 18);
246 246
247 // Include second of century247 // Include second of century
248 EndianOrder.BigEndian.CopyBytes(SecondOfCentury, buffer, 20);248 BigEndian.CopyBytes(SecondOfCentury, buffer, 20);
249 249
250 return buffer;250 return buffer;
251 }251 }
Source/Libraries/GSF.PhasorProtocols/SelFastMessage/DataCell.cs+1−1
@@ -287,7 +287,7 @@ namespace GSF.PhasorProtocols.SelFastMessage · 286 unmodified lines
287 }287 }
288 288
289 // Parse out status flags289 // Parse out status flags
290 StatusFlags = (StatusFlags)EndianOrder.BigEndian.ToUInt16(buffer, index);290 StatusFlags = (StatusFlags)BigEndian.ToUInt16(buffer, index);
291 index += 2;291 index += 2;
292 292
293 // Return total parsed length293 // Return total parsed length
Source/Libraries/GSF.PhasorProtocols/SelFastMessage/FrequencyValue.cs+2−2
@@ -126,7 +126,7 @@ namespace GSF.PhasorProtocols.SelFastMessage · 125 unmodified lines
126 {126 {
127 get127 get
128 {128 {
129 return EndianOrder.BigEndian.GetBytes((float)Frequency);129 return BigEndian.GetBytes((float)Frequency);
130 }130 }
131 }131 }
132 132
@@ -143,7 +143,7 @@ namespace GSF.PhasorProtocols.SelFastMessage · 10 unmodified lines
143 /// <returns>The length of the data that was parsed.</returns>143 /// <returns>The length of the data that was parsed.</returns>
144 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)144 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)
145 {145 {
146 Frequency = EndianOrder.BigEndian.ToSingle(buffer, startIndex);146 Frequency = BigEndian.ToSingle(buffer, startIndex);
147 return 4;147 return 4;
148 }148 }
149 149
Source/Libraries/GSF.PhasorProtocols/SelFastMessage/PhasorValue.cs+4−4
@@ -136,8 +136,8 @@ namespace GSF.PhasorProtocols.SelFastMessage · 135 unmodified lines
136 {136 {
137 byte[] buffer = new byte[8];137 byte[] buffer = new byte[8];
138 138
139 EndianOrder.BigEndian.CopyBytes((float)Magnitude, buffer, 0);139 BigEndian.CopyBytes((float)Magnitude, buffer, 0);
140 EndianOrder.BigEndian.CopyBytes((float)Angle.ToDegrees(), buffer, 4);140 BigEndian.CopyBytes((float)Angle.ToDegrees(), buffer, 4);
141 141
142 return buffer;142 return buffer;
143 }143 }
@@ -157,8 +157,8 @@ namespace GSF.PhasorProtocols.SelFastMessage · 13 unmodified lines
157 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)157 protected override int ParseBodyImage(byte[] buffer, int startIndex, int length)
158 {158 {
159 // Parse magnitude and angle in degrees159 // Parse magnitude and angle in degrees
160 Magnitude = EndianOrder.BigEndian.ToSingle(buffer, startIndex);160 Magnitude = BigEndian.ToSingle(buffer, startIndex);
161 Angle = Angle.FromDegrees(EndianOrder.BigEndian.ToSingle(buffer, startIndex + 4));161 Angle = Angle.FromDegrees(BigEndian.ToSingle(buffer, startIndex + 4));
162 162
163 return 8;163 return 8;
164 }164 }
Source/Libraries/GSF.PhasorProtocols/UI/DataModels/CalculatedMeasurement.cs+1−1
@@ -201,7 +201,7 @@ namespace GSF.PhasorProtocols.UI.DataModels · 200 unmodified lines
201 }201 }
202 set202 set
203 {203 {
204 if (value == null)204 if ((object)value == null)
205 m_connectionString = string.Empty;205 m_connectionString = string.Empty;
206 else206 else
207 m_connectionString = value;207 m_connectionString = value;
Source/Libraries/GSF.PhasorProtocols/UI/DataModels/Device.cs+1−1
@@ -245,7 +245,7 @@ namespace GSF.PhasorProtocols.UI.DataModels · 244 unmodified lines
245 }245 }
246 set246 set
247 {247 {
248 if (value != null && value.Length > 200)248 if ((object)value != null && value.Length > 200)
249 m_name = value.Substring(0, 200);249 m_name = value.Substring(0, 200);
250 else250 else
251 m_name = value;251 m_name = value;
Source/Libraries/GSF.PhasorProtocols/UI/DataModels/InputWizardDevice.cs+2−2
@@ -96,7 +96,7 @@ namespace GSF.PhasorProtocols.UI.DataModels · 95 unmodified lines
96 }96 }
97 set97 set
98 {98 {
99 if (value != null && value.Length > 200)99 if ((object)value != null && value.Length > 200)
100 m_name = value.Substring(0, 200);100 m_name = value.Substring(0, 200);
101 else101 else
102 m_name = value;102 m_name = value;
@@ -429,7 +429,7 @@ namespace GSF.PhasorProtocols.UI.DataModels · 326 unmodified lines
429 }429 }
430 set430 set
431 {431 {
432 if (value != null & value.Length > 200)432 if ((object)value != null & value.Length > 200)
433 m_label = value.Substring(0, 200);433 m_label = value.Substring(0, 200);
434 else434 else
435 m_label = value;435 m_label = value;
Source/Libraries/GSF.PhasorProtocols/UI/DataModels/Phasor.cs+1−1
@@ -117,7 +117,7 @@ namespace GSF.PhasorProtocols.UI.DataModels · 116 unmodified lines
117 }117 }
118 set118 set
119 {119 {
120 if (value != null && value.Length > 200)120 if ((object)value != null && value.Length > 200)
121 m_label = value.Substring(0, 200);121 m_label = value.Substring(0, 200);
122 else122 else
123 m_label = value;123 m_label = value;
Source/Libraries/GSF.ServiceModel/Service.cs+3−2
@@ -207,7 +207,7 @@ namespace GSF.ServiceModel · 206 unmodified lines
207 return tcpBinding;207 return tcpBinding;
208 case "net.p2p":208 case "net.p2p":
209 // Create binding.209 // Create binding.
210 #pragma warning disable 612, 618210#pragma warning disable 612, 618
211 NetPeerTcpBinding p2pBinding = new NetPeerTcpBinding();211 NetPeerTcpBinding p2pBinding = new NetPeerTcpBinding();
212 212
213#if !MONO213#if !MONO
@@ -285,7 +285,8 @@ namespace GSF.ServiceModel · 71 unmodified lines
285 {285 {
286 // Find contract interface by service type name.286 // Find contract interface by service type name.
287 Type contract = serviceType.GetInterface("I" + serviceType.Name);287 Type contract = serviceType.GetInterface("I" + serviceType.Name);
288 if (contract == null)288
289 if ((object)contract == null)
289 {290 {
290 // Fall back to the first interface the service implements.291 // Fall back to the first interface the service implements.
291 Type[] interfaces = serviceType.GetInterfaces();292 Type[] interfaces = serviceType.GetInterfaces();
Source/Libraries/GSF.ServiceProcess/ClientInfo.cs+1−1
@@ -220,7 +220,7 @@ namespace GSF.ServiceProcess · 219 unmodified lines
220 /// <param name="user">New <see cref="IPrincipal"/> object to be assigned to <see cref="ClientUser"/>.</param>220 /// <param name="user">New <see cref="IPrincipal"/> object to be assigned to <see cref="ClientUser"/>.</param>
221 internal void SetClientUser(IPrincipal user)221 internal void SetClientUser(IPrincipal user)
222 {222 {
223 if (user == null)223 if ((object)user == null)
224 throw new ArgumentNullException("user");224 throw new ArgumentNullException("user");
225 225
226 m_clientUser = user;226 m_clientUser = user;
Source/Libraries/GSF.ServiceProcess/ClientRequest.cs+1−1
@@ -164,7 +164,7 @@ namespace GSF.ServiceProcess · 163 unmodified lines
164 public static ClientRequest Parse(string text)164 public static ClientRequest Parse(string text)
165 {165 {
166 // Input text can't be null.166 // Input text can't be null.
167 if (text == null)167 if ((object)text == null)
168 return null;168 return null;
169 169
170 // Input text can't be empty.170 // Input text can't be empty.
Source/Libraries/GSF.ServiceProcess/ServiceHelper.cs+1−1
@@ -1541,7 +1541,7 @@ namespace GSF.ServiceProcess · 1540 unmodified lines
1541 {1541 {
1542 processName = processName.Trim();1542 processName = processName.Trim();
1543 1543
1544 if (FindProcess(processName) == null)1544 if ((object)FindProcess(processName) == null)
1545 return false;1545 return false;
1546 1546
1547 // The specified process exists, so we'll schedule it, or update its schedule if it is scheduled already.1547 // The specified process exists, so we'll schedule it, or update its schedule if it is scheduled already.
Source/Libraries/GSF.TimeSeries/Adapters/AdapterBase.cs+2−2
@@ -1188,7 +1188,7 @@ namespace GSF.TimeSeries.Adapters · 1187 unmodified lines
1188 if (sourceIDKeys != null)1188 if (sourceIDKeys != null)
1189 {1189 {
1190 // Combine input measurement keys for source IDs with any existing input measurement keys and return unique set1190 // Combine input measurement keys for source IDs with any existing input measurement keys and return unique set
1191 if (adapter.InputMeasurementKeys == null)1191 if ((object)adapter.InputMeasurementKeys == null)
1192 adapter.InputMeasurementKeys = sourceIDKeys;1192 adapter.InputMeasurementKeys = sourceIDKeys;
1193 else1193 else
1194 adapter.InputMeasurementKeys = sourceIDKeys.Concat(adapter.InputMeasurementKeys).Distinct().ToArray();1194 adapter.InputMeasurementKeys = sourceIDKeys.Concat(adapter.InputMeasurementKeys).Distinct().ToArray();
@@ -1281,7 +1281,7 @@ namespace GSF.TimeSeries.Adapters · 86 unmodified lines
1281 }1281 }
1282 1282
1283 // Combine output measurements for source IDs with any existing output measurements and return unique set1283 // Combine output measurements for source IDs with any existing output measurements and return unique set
1284 if (adapter.OutputMeasurements == null)1284 if ((object)adapter.OutputMeasurements == null)
1285 adapter.OutputMeasurements = measurements.ToArray();1285 adapter.OutputMeasurements = measurements.ToArray();
1286 else1286 else
1287 adapter.OutputMeasurements = measurements.Concat(adapter.OutputMeasurements).Distinct().ToArray();1287 adapter.OutputMeasurements = measurements.Concat(adapter.OutputMeasurements).Distinct().ToArray();
Source/Libraries/GSF.TimeSeries/Adapters/AdapterCollectionBase.cs+3−3
@@ -328,7 +328,7 @@ namespace GSF.TimeSeries.Adapters · 327 unmodified lines
328 328
329 // If any of the children expects all measurements (i.e., null InputMeasurementKeys)329 // If any of the children expects all measurements (i.e., null InputMeasurementKeys)
330 // then the parent collection must expect all measurements330 // then the parent collection must expect all measurements
331 if (inputMeasurementKeys == null)331 if ((object)inputMeasurementKeys == null)
332 return null;332 return null;
333 333
334 if (inputMeasurementKeys.Length > 0)334 if (inputMeasurementKeys.Length > 0)
@@ -830,7 +830,7 @@ namespace GSF.TimeSeries.Adapters · 495 unmodified lines
830 /// <exception cref="InvalidOperationException">DataMember is null or empty.</exception>830 /// <exception cref="InvalidOperationException">DataMember is null or empty.</exception>
831 public virtual void Initialize()831 public virtual void Initialize()
832 {832 {
833 if (DataSource == null)833 if ((object)DataSource == null)
834 throw new NullReferenceException(string.Format("DataSource is null, cannot load {0}", Name));834 throw new NullReferenceException(string.Format("DataSource is null, cannot load {0}", Name));
835 835
836 if (string.IsNullOrWhiteSpace(DataMember))836 if (string.IsNullOrWhiteSpace(DataMember))
@@ -877,7 +877,7 @@ namespace GSF.TimeSeries.Adapters · 40 unmodified lines
877 /// <exception cref="NullReferenceException"><paramref name="adapterRow"/> is null.</exception>877 /// <exception cref="NullReferenceException"><paramref name="adapterRow"/> is null.</exception>
878 public virtual bool TryCreateAdapter(DataRow adapterRow, out T adapter)878 public virtual bool TryCreateAdapter(DataRow adapterRow, out T adapter)
879 {879 {
880 if (adapterRow == null)880 if ((object)adapterRow == null)
881 throw new NullReferenceException(string.Format("Cannot initialize from null adapter DataRow"));881 throw new NullReferenceException(string.Format("Cannot initialize from null adapter DataRow"));
882 882
883 Assembly assembly;883 Assembly assembly;
Source/Libraries/GSF.TimeSeries/Adapters/FacileActionAdapterBase.cs+3−3
@@ -135,14 +135,14 @@ namespace GSF.TimeSeries.Adapters · 134 unmodified lines
135 {135 {
136 get136 get
137 {137 {
138 if (m_inputSourceIDs == null)138 if ((object)m_inputSourceIDs == null)
139 return null;139 return null;
140 140
141 return m_inputSourceIDs.ToArray();141 return m_inputSourceIDs.ToArray();
142 }142 }
143 set143 set
144 {144 {
145 if (value == null)145 if ((object)value == null)
146 {146 {
147 m_inputSourceIDs = null;147 m_inputSourceIDs = null;
148 }148 }
@@ -175,7 +175,7 @@ namespace GSF.TimeSeries.Adapters · 26 unmodified lines
175 }175 }
176 set176 set
177 {177 {
178 if (value == null)178 if ((object)value == null)
179 {179 {
180 m_outputSourceIDs = null;180 m_outputSourceIDs = null;
181 }181 }
Source/Libraries/GSF.TimeSeries/Adapters/InputAdapterBase.cs+2−2
@@ -100,14 +100,14 @@ namespace GSF.TimeSeries.Adapters · 99 unmodified lines
100 {100 {
101 get101 get
102 {102 {
103 if (m_outputSourceIDs == null)103 if ((object)m_outputSourceIDs == null)
104 return null;104 return null;
105 105
106 return m_outputSourceIDs.ToArray();106 return m_outputSourceIDs.ToArray();
107 }107 }
108 set108 set
109 {109 {
110 if (value == null)110 if ((object)value == null)
111 {111 {
112 m_outputSourceIDs = null;112 m_outputSourceIDs = null;
113 }113 }
Source/Libraries/GSF.TimeSeries/Adapters/OutputAdapterBase.cs+3−3
@@ -157,14 +157,14 @@ namespace GSF.TimeSeries.Adapters · 156 unmodified lines
157 {157 {
158 get158 get
159 {159 {
160 if (m_inputSourceIDs == null)160 if ((object)m_inputSourceIDs == null)
161 return null;161 return null;
162 162
163 return m_inputSourceIDs.ToArray();163 return m_inputSourceIDs.ToArray();
164 }164 }
165 set165 set
166 {166 {
167 if (value == null)167 if ((object)value == null)
168 {168 {
169 m_inputSourceIDs = null;169 m_inputSourceIDs = null;
170 }170 }
@@ -369,7 +369,7 @@ namespace GSF.TimeSeries.Adapters · 198 unmodified lines
369 status.AppendLine();369 status.AppendLine();
370 }370 }
371 371
372 status.AppendFormat(" Source ID filter list: {0}", (m_inputSourceIDs == null ? "[No filter applied]" : m_inputSourceIDs.ToDelimitedString(',')));372 status.AppendFormat(" Source ID filter list: {0}", ((object)m_inputSourceIDs == null ? "[No filter applied]" : m_inputSourceIDs.ToDelimitedString(',')));
373 status.AppendLine();373 status.AppendLine();
374 status.AppendFormat(" Asynchronous connection: {0}", UseAsyncConnect);374 status.AppendFormat(" Asynchronous connection: {0}", UseAsyncConnect);
375 status.AppendLine();375 status.AppendLine();
Source/Libraries/GSF.TimeSeries/ConcentratorBase.cs+7−7
@@ -1516,7 +1516,7 @@ namespace GSF.TimeSeries · 1515 unmodified lines
1516 status.Append("Last discarded measurement: ");1516 status.Append("Last discarded measurement: ");
1517 1517
1518 Interlocked.Exchange(ref lastDiscardedMeasurement, m_lastDiscardedMeasurement);1518 Interlocked.Exchange(ref lastDiscardedMeasurement, m_lastDiscardedMeasurement);
1519 if (lastDiscardedMeasurement == null)1519 if ((object)lastDiscardedMeasurement == null)
1520 {1520 {
1521 status.Append("<none>");1521 status.Append("<none>");
1522 }1522 }
@@ -1581,7 +1581,7 @@ namespace GSF.TimeSeries · 58 unmodified lines
1581 status.AppendLine();1581 status.AppendLine();
1582 status.Append(" Last published frame: ");1582 status.Append(" Last published frame: ");
1583 1583
1584 if (lastFrame == null)1584 if ((object)lastFrame == null)
1585 {1585 {
1586 status.Append("<none>");1586 status.Append("<none>");
1587 }1587 }
@@ -1846,7 +1846,7 @@ namespace GSF.TimeSeries · 258 unmodified lines
1846 // Get the destination frame for the measurement. Note that groups of parsed measurements will1846 // Get the destination frame for the measurement. Note that groups of parsed measurements will
1847 // typically be coming in from the same source and will have the same ticks. If we have already1847 // typically be coming in from the same source and will have the same ticks. If we have already
1848 // found the destination frame for the same ticks, then there is no need to lookup frame again.1848 // found the destination frame for the same ticks, then there is no need to lookup frame again.
1849 if (frame == null || timestamp != lastTimestamp)1849 if ((object)frame == null || timestamp != lastTimestamp)
1850 {1850 {
1851 if (m_processByReceivedTimestamp)1851 if (m_processByReceivedTimestamp)
1852 {1852 {
@@ -1879,7 +1879,7 @@ namespace GSF.TimeSeries · 26 unmodified lines
1879 }1879 }
1880 }1880 }
1881 1881
1882 if (frame == null)1882 if ((object)frame == null)
1883 {1883 {
1884 // Measurement is discarded if no bucket (i.e., destination frame) was found for it.1884 // Measurement is discarded if no bucket (i.e., destination frame) was found for it.
1885 discardMeasurement = true;1885 discardMeasurement = true;
@@ -1890,7 +1890,7 @@ namespace GSF.TimeSeries · 4 unmodified lines
1890 // Derive new measurement value applying any needed down-sampling1890 // Derive new measurement value applying any needed down-sampling
1891 derivedMeasurement = frame.DeriveMeasurementValue(measurement);1891 derivedMeasurement = frame.DeriveMeasurementValue(measurement);
1892 1892
1893 if (derivedMeasurement == null)1893 if ((object)derivedMeasurement == null)
1894 {1894 {
1895 // Count this as a discarded measurement if down-sampling derivation was not applied.1895 // Count this as a discarded measurement if down-sampling derivation was not applied.
1896 discardMeasurement = true;1896 discardMeasurement = true;
@@ -1949,7 +1949,7 @@ namespace GSF.TimeSeries · 52 unmodified lines
1949 Interlocked.Increment(ref m_discardedMeasurements);1949 Interlocked.Increment(ref m_discardedMeasurements);
1950 1950
1951 // Make sure discarded measurement collection exists1951 // Make sure discarded measurement collection exists
1952 if (discardedMeasurements == null)1952 if ((object)discardedMeasurements == null)
1953 discardedMeasurements = new List<IMeasurement>();1953 discardedMeasurements = new List<IMeasurement>();
1954 1954
1955 // Add discarded measurement to local collection1955 // Add discarded measurement to local collection
@@ -2118,7 +2118,7 @@ namespace GSF.TimeSeries · 162 unmodified lines
2118 frame = m_frameQueue.Head;2118 frame = m_frameQueue.Head;
2119 2119
2120 // If no frame is ready to publish, exit2120 // If no frame is ready to publish, exit
2121 if (frame == null)2121 if ((object)frame == null)
2122 break;2122 break;
2123 2123
2124 // Get ticks for this frame2124 // Get ticks for this frame
Source/Libraries/GSF.TimeSeries/Configuration/BinaryFileConfigurationLoader.cs+2−0
@@ -26,6 +26,8 @@ using System.Data; · 25 unmodified lines
26using System.IO;26using System.IO;
27using GSF.Data;27using GSF.Data;
28 28
29#pragma warning disable 0067
30
29namespace GSF.TimeSeries.Configuration31namespace GSF.TimeSeries.Configuration
30{32{
31 /// <summary>33 /// <summary>
Source/Libraries/GSF.TimeSeries/Configuration/WebServiceConfigurationLoader.cs+2−0
@@ -25,6 +25,8 @@ using System; · 24 unmodified lines
25using System.Data;25using System.Data;
26using System.Net;26using System.Net;
27 27
28#pragma warning disable 0067
29
28namespace GSF.TimeSeries.Configuration30namespace GSF.TimeSeries.Configuration
29{31{
30 /// <summary>32 /// <summary>
Source/Libraries/GSF.TimeSeries/Configuration/XMLConfigurationLoader.cs+2−0
@@ -24,6 +24,8 @@ · 23 unmodified lines
24using System;24using System;
25using System.Data;25using System.Data;
26 26
27#pragma warning disable 0067
28
27namespace GSF.TimeSeries.Configuration29namespace GSF.TimeSeries.Configuration
28{30{
29 /// <summary>31 /// <summary>
Source/Libraries/GSF.TimeSeries/FrameQueue.cs+5−1
@@ -260,14 +260,18 @@ namespace GSF.TimeSeries · 259 unmodified lines
260 else260 else
261 frame = null;261 frame = null;
262 262
263 if (frame == null)263 if ((object)frame == null)
264 {
264 status.AppendFormat("Frame {0} @ <null frame>", i.ToString().PadLeft(4, '0'));265 status.AppendFormat("Frame {0} @ <null frame>", i.ToString().PadLeft(4, '0'));
266 }
265 else267 else
268 {
266 status.AppendFormat("Frame {0} @ {1} - {2} measurements, {3} received",269 status.AppendFormat("Frame {0} @ {1} - {2} measurements, {3} received",
267 i.ToString().PadLeft(4, '0'),270 i.ToString().PadLeft(4, '0'),
268 (new DateTime(frame.Timestamp)).ToString("dd-MMM-yyyy HH:mm:ss.fff"),271 (new DateTime(frame.Timestamp)).ToString("dd-MMM-yyyy HH:mm:ss.fff"),
269 frame.Measurements.Count,272 frame.Measurements.Count,
270 (frame.Measurements.Count / (double)expectedMeasurements).ToString("##0.00%"));273 (frame.Measurements.Count / (double)expectedMeasurements).ToString("##0.00%"));
274 }
271 275
272 status.AppendLine();276 status.AppendLine();
273 node = node.Next;277 node = node.Next;
Source/Libraries/GSF.TimeSeries/IMeasurement.cs+1−1
@@ -359,7 +359,7 @@ namespace GSF.TimeSeries · 358 unmodified lines
359 /// <returns><see cref="MeasurementKey"/> values of the <see cref="IMeasurement"/> enumeration.</returns>359 /// <returns><see cref="MeasurementKey"/> values of the <see cref="IMeasurement"/> enumeration.</returns>
360 public static MeasurementKey[] MeasurementKeys(this IEnumerable<IMeasurement> measurements)360 public static MeasurementKey[] MeasurementKeys(this IEnumerable<IMeasurement> measurements)
361 {361 {
362 if (measurements == null)362 if ((object)measurements == null)
363 return new MeasurementKey[0];363 return new MeasurementKey[0];
364 364
365 return measurements.Select(m => m.Key).ToArray();365 return measurements.Select(m => m.Key).ToArray();
Source/Libraries/GSF.TimeSeries/Measurement.cs+1−1
@@ -561,7 +561,7 @@ namespace GSF.TimeSeries · 560 unmodified lines
561 /// <returns>A <see cref="String"/> that represents the specified <see cref="IMeasurement"/>.</returns>561 /// <returns>A <see cref="String"/> that represents the specified <see cref="IMeasurement"/>.</returns>
562 public static string ToString(IMeasurement measurement, bool includeTagName = true)562 public static string ToString(IMeasurement measurement, bool includeTagName = true)
563 {563 {
564 if (measurement == null)564 if ((object)measurement == null)
565 return "Undefined";565 return "Undefined";
566 566
567 string tagName = measurement.TagName;567 string tagName = measurement.TagName;
Source/Libraries/GSF.TimeSeries/MeasurementKey.cs+1−1
@@ -207,7 +207,7 @@ namespace GSF.TimeSeries · 206 unmodified lines
207 /// <param name="key">The measurement key that was created or updated or <see cref="Undefined"/>.</param>207 /// <param name="key">The measurement key that was created or updated or <see cref="Undefined"/>.</param>
208 /// <returns>True if the measurement key was successfully created or updated, false otherwise.</returns>208 /// <returns>True if the measurement key was successfully created or updated, false otherwise.</returns>
209 /// <exception cref="ArgumentException"><paramref name="signalID"/> cannot be empty.</exception>209 /// <exception cref="ArgumentException"><paramref name="signalID"/> cannot be empty.</exception>
210 /// <exception cref="ArgumentNullException"><paramref name="source"/> cannot be null.</exception>210 /// <exception cref="ArgumentNullException">Measurement key Source cannot be null.</exception>
211 public static bool TryCreateOrUpdate(Guid signalID, string value, out MeasurementKey key)211 public static bool TryCreateOrUpdate(Guid signalID, string value, out MeasurementKey key)
212 {212 {
213 try213 try
Source/Libraries/GSF.TimeSeries/ServiceHostBase.cs+17−6
@@ -370,7 +370,10 @@ namespace GSF.TimeSeries · 369 unmodified lines
370 m_allowRemoteRestart = systemSettings["AllowRemoteRestart"].ValueAsBoolean(true);370 m_allowRemoteRestart = systemSettings["AllowRemoteRestart"].ValueAsBoolean(true);
371 m_preferCachedConfiguration = systemSettings["PreferCachedConfiguration"].ValueAsBoolean(false);371 m_preferCachedConfiguration = systemSettings["PreferCachedConfiguration"].ValueAsBoolean(false);
372 m_reloadConfigQueue = ProcessQueue<Tuple<string, Action<bool>>>.CreateSynchronousQueue(ExecuteReloadConfig, 500.0D, Timeout.Infinite, false, false);372 m_reloadConfigQueue = ProcessQueue<Tuple<string, Action<bool>>>.CreateSynchronousQueue(ExecuteReloadConfig, 500.0D, Timeout.Infinite, false, false);
373 m_configurationCacheOperation = new LongSynchronizedOperation(ExecuteConfigurationCache) { IsBackground = true };373 m_configurationCacheOperation = new LongSynchronizedOperation(ExecuteConfigurationCache)
374 {
375 IsBackground = true
376 };
374 377
375 // Setup default thread pool size378 // Setup default thread pool size
376 try379 try
@@ -437,8 +440,14 @@ namespace GSF.TimeSeries · 60 unmodified lines
437 break;440 break;
438 }441 }
439 442
440 m_binaryCacheConfigurationLoader = new BinaryFileConfigurationLoader() { FilePath = m_cachedBinaryConfigurationFile };443 m_binaryCacheConfigurationLoader = new BinaryFileConfigurationLoader()
441 m_xmlCacheConfigurationLoader = new XMLConfigurationLoader() { FilePath = m_cachedXmlConfigurationFile };444 {
445 FilePath = m_cachedBinaryConfigurationFile
446 };
447 m_xmlCacheConfigurationLoader = new XMLConfigurationLoader()
448 {
449 FilePath = m_cachedXmlConfigurationFile
450 };
442 451
443 m_configurationLoader.StatusMessage += (o, args) => DisplayStatusMessage(args.Argument, UpdateType.Information);452 m_configurationLoader.StatusMessage += (o, args) => DisplayStatusMessage(args.Argument, UpdateType.Information);
444 m_binaryCacheConfigurationLoader.StatusMessage += (o, args) => DisplayStatusMessage(args.Argument, UpdateType.Information);453 m_binaryCacheConfigurationLoader.StatusMessage += (o, args) => DisplayStatusMessage(args.Argument, UpdateType.Information);
@@ -1415,7 +1424,9 @@ namespace GSF.TimeSeries · 970 unmodified lines
1415 /// </remarks>1424 /// </remarks>
1416 private void m_iaonSession_ConfigurationChanged(object sender, EventArgs e)1425 private void m_iaonSession_ConfigurationChanged(object sender, EventArgs e)
1417 {1426 {
1418 m_reloadConfigQueue.Add(Tuple.Create("System", new Action<bool>(success => { })));1427 m_reloadConfigQueue.Add(Tuple.Create("System", new Action<bool>(success =>
1428 {
1429 })));
1419 }1430 }
1420 1431
1421 // Handle task scheduler exceptions1432 // Handle task scheduler exceptions
@@ -1874,7 +1885,7 @@ namespace GSF.TimeSeries · 452 unmodified lines
1874 if (success)1885 if (success)
1875 {1886 {
1876 // Return value, if any, will be returned to requesting client as a response attachment1887 // Return value, if any, will be returned to requesting client as a response attachment
1877 if (returnValue == null)1888 if ((object)returnValue == null)
1878 SendResponse(requestInfo, true, "Command \"{0}\" successfully invoked.", command);1889 SendResponse(requestInfo, true, "Command \"{0}\" successfully invoked.", command);
1879 else1890 else
1880 SendResponseWithAttachment(requestInfo, true, returnValue, "Command \"{0}\" successfully invoked, return value = {1}", command, returnValue.ToNonNullString("null"));1891 SendResponseWithAttachment(requestInfo, true, returnValue, "Command \"{0}\" successfully invoked, return value = {1}", command, returnValue.ToNonNullString("null"));
@@ -2889,7 +2900,7 @@ namespace GSF.TimeSeries · 1008 unmodified lines
2889 else if (addSetting)2900 else if (addSetting)
2890 {2901 {
2891 // Add new setting.2902 // Add new setting.
2892 if (setting == null)2903 if ((object)setting == null)
2893 {2904 {
2894 settings.Add(settingName, settingValue);2905 settings.Add(settingName, settingValue);
2895 config.Save();2906 config.Save();
Source/Libraries/GSF.TimeSeries/TrackingFrame.cs+1−1
@@ -188,7 +188,7 @@ namespace GSF.TimeSeries · 187 unmodified lines
188 MeasurementValueFilterFunction measurementValueFilter = derivedMeasurement.MeasurementValueFilter;188 MeasurementValueFilterFunction measurementValueFilter = derivedMeasurement.MeasurementValueFilter;
189 189
190 // Default to average value filter if none is specified190 // Default to average value filter if none is specified
191 if (measurementValueFilter == null)191 if ((object)measurementValueFilter == null)
192 measurementValueFilter = Measurement.AverageValueFilter;192 measurementValueFilter = Measurement.AverageValueFilter;
193 193
194 // Add new measurement to tracking collection194 // Add new measurement to tracking collection
Source/Libraries/GSF.TimeSeries/Transport/ClientConnection.cs+4−4
@@ -711,22 +711,22 @@ namespace GSF.TimeSeries.Transport · 710 unmodified lines
711 using (BlockAllocatedMemoryStream buffer = new BlockAllocatedMemoryStream())711 using (BlockAllocatedMemoryStream buffer = new BlockAllocatedMemoryStream())
712 {712 {
713 // Write even key713 // Write even key
714 bufferLen = EndianOrder.BigEndian.GetBytes(m_keyIVs[EvenKey][KeyIndex].Length);714 bufferLen = BigEndian.GetBytes(m_keyIVs[EvenKey][KeyIndex].Length);
715 buffer.Write(bufferLen, 0, bufferLen.Length);715 buffer.Write(bufferLen, 0, bufferLen.Length);
716 buffer.Write(m_keyIVs[EvenKey][KeyIndex], 0, m_keyIVs[EvenKey][KeyIndex].Length);716 buffer.Write(m_keyIVs[EvenKey][KeyIndex], 0, m_keyIVs[EvenKey][KeyIndex].Length);
717 717
718 // Write even initialization vector718 // Write even initialization vector
719 bufferLen = EndianOrder.BigEndian.GetBytes(m_keyIVs[EvenKey][IVIndex].Length);719 bufferLen = BigEndian.GetBytes(m_keyIVs[EvenKey][IVIndex].Length);
720 buffer.Write(bufferLen, 0, bufferLen.Length);720 buffer.Write(bufferLen, 0, bufferLen.Length);
721 buffer.Write(m_keyIVs[EvenKey][IVIndex], 0, m_keyIVs[EvenKey][IVIndex].Length);721 buffer.Write(m_keyIVs[EvenKey][IVIndex], 0, m_keyIVs[EvenKey][IVIndex].Length);
722 722
723 // Write odd key723 // Write odd key
724 bufferLen = EndianOrder.BigEndian.GetBytes(m_keyIVs[OddKey][KeyIndex].Length);724 bufferLen = BigEndian.GetBytes(m_keyIVs[OddKey][KeyIndex].Length);
725 buffer.Write(bufferLen, 0, bufferLen.Length);725 buffer.Write(bufferLen, 0, bufferLen.Length);
726 buffer.Write(m_keyIVs[OddKey][KeyIndex], 0, m_keyIVs[OddKey][KeyIndex].Length);726 buffer.Write(m_keyIVs[OddKey][KeyIndex], 0, m_keyIVs[OddKey][KeyIndex].Length);
727 727
728 // Write odd initialization vector728 // Write odd initialization vector
729 bufferLen = EndianOrder.BigEndian.GetBytes(m_keyIVs[OddKey][IVIndex].Length);729 bufferLen = BigEndian.GetBytes(m_keyIVs[OddKey][IVIndex].Length);
730 buffer.Write(bufferLen, 0, bufferLen.Length);730 buffer.Write(bufferLen, 0, bufferLen.Length);
731 buffer.Write(m_keyIVs[OddKey][IVIndex], 0, m_keyIVs[OddKey][IVIndex].Length);731 buffer.Write(m_keyIVs[OddKey][IVIndex], 0, m_keyIVs[OddKey][IVIndex].Length);
732 732
Source/Libraries/GSF.TimeSeries/Transport/CompactMeasurement.cs+12−12
@@ -203,7 +203,7 @@ namespace GSF.TimeSeries.Transport · 202 unmodified lines
203 m_includeTime = includeTime;203 m_includeTime = includeTime;
204 204
205 // We keep a clone of the base time offsets, if provided, since array contents can change at any time205 // We keep a clone of the base time offsets, if provided, since array contents can change at any time
206 if (baseTimeOffsets == null)206 if ((object)baseTimeOffsets == null)
207 m_baseTimeOffsets = s_emptyBaseTimeOffsets;207 m_baseTimeOffsets = s_emptyBaseTimeOffsets;
208 else208 else
209 m_baseTimeOffsets = new[] { baseTimeOffsets[0], baseTimeOffsets[1] };209 m_baseTimeOffsets = new[] { baseTimeOffsets[0], baseTimeOffsets[1] };
@@ -234,7 +234,7 @@ namespace GSF.TimeSeries.Transport · 24 unmodified lines
234 m_includeTime = includeTime;234 m_includeTime = includeTime;
235 235
236 // We keep a clone of the base time offsets, if provided, since array contents can change at any time236 // We keep a clone of the base time offsets, if provided, since array contents can change at any time
237 if (baseTimeOffsets == null)237 if ((object)baseTimeOffsets == null)
238 m_baseTimeOffsets = s_emptyBaseTimeOffsets;238 m_baseTimeOffsets = s_emptyBaseTimeOffsets;
239 else239 else
240 m_baseTimeOffsets = new[] { baseTimeOffsets[0], baseTimeOffsets[1] };240 m_baseTimeOffsets = new[] { baseTimeOffsets[0], baseTimeOffsets[1] };
@@ -409,11 +409,11 @@ namespace GSF.TimeSeries.Transport · 168 unmodified lines
409 CompactStateFlags = buffer[index++];409 CompactStateFlags = buffer[index++];
410 410
411 // Decode runtime ID411 // Decode runtime ID
412 RuntimeID = EndianOrder.BigEndian.ToUInt16(buffer, index);412 RuntimeID = BigEndian.ToUInt16(buffer, index);
413 index += 2;413 index += 2;
414 414
415 // Decode value415 // Decode value
416 Value = EndianOrder.BigEndian.ToSingle(buffer, index);416 Value = BigEndian.ToSingle(buffer, index);
417 index += 4;417 index += 4;
418 418
419 if (m_includeTime)419 if (m_includeTime)
@@ -426,7 +426,7 @@ namespace GSF.TimeSeries.Transport · 6 unmodified lines
426 {426 {
427 // Decode 2-byte millisecond offset timestamp427 // Decode 2-byte millisecond offset timestamp
428 if (baseTimeOffset > 0)428 if (baseTimeOffset > 0)
429 Timestamp = baseTimeOffset + EndianOrder.BigEndian.ToUInt16(buffer, index) * Ticks.PerMillisecond;429 Timestamp = baseTimeOffset + BigEndian.ToUInt16(buffer, index) * Ticks.PerMillisecond;
430 430
431 index += 2;431 index += 2;
432 }432 }
@@ -434,7 +434,7 @@ namespace GSF.TimeSeries.Transport · 1 unmodified line
434 {434 {
435 // Decode 4-byte tick offset timestamp435 // Decode 4-byte tick offset timestamp
436 if (baseTimeOffset > 0)436 if (baseTimeOffset > 0)
437 Timestamp = baseTimeOffset + EndianOrder.BigEndian.ToUInt32(buffer, index);437 Timestamp = baseTimeOffset + BigEndian.ToUInt32(buffer, index);
438 438
439 index += 4;439 index += 4;
440 }440 }
@@ -442,7 +442,7 @@ namespace GSF.TimeSeries.Transport · 1 unmodified line
442 else442 else
443 {443 {
444 // Decode 8-byte full fidelity timestamp444 // Decode 8-byte full fidelity timestamp
445 Timestamp = EndianOrder.BigEndian.ToInt64(buffer, index);445 Timestamp = BigEndian.ToInt64(buffer, index);
446 index += 8;446 index += 8;
447 }447 }
448 }448 }
@@ -486,10 +486,10 @@ namespace GSF.TimeSeries.Transport · 37 unmodified lines
486 buffer[startIndex++] = CompactStateFlags;486 buffer[startIndex++] = CompactStateFlags;
487 487
488 // Encode runtime ID488 // Encode runtime ID
489 startIndex += EndianOrder.BigEndian.CopyBytes(RuntimeID, buffer, startIndex);489 startIndex += BigEndian.CopyBytes(RuntimeID, buffer, startIndex);
490 490
491 // Encode adjusted value (accounts for adder and multiplier)491 // Encode adjusted value (accounts for adder and multiplier)
492 startIndex += EndianOrder.BigEndian.CopyBytes((float)AdjustedValue, buffer, startIndex);492 startIndex += BigEndian.CopyBytes((float)AdjustedValue, buffer, startIndex);
493 493
494 if (m_includeTime)494 if (m_includeTime)
495 {495 {
@@ -498,18 +498,18 @@ namespace GSF.TimeSeries.Transport · 2 unmodified lines
498 if (m_useMillisecondResolution)498 if (m_useMillisecondResolution)
499 {499 {
500 // Encode 2-byte millisecond offset timestamp500 // Encode 2-byte millisecond offset timestamp
501 EndianOrder.BigEndian.CopyBytes(TimestampC2, buffer, startIndex);501 BigEndian.CopyBytes(TimestampC2, buffer, startIndex);
502 }502 }
503 else503 else
504 {504 {
505 // Encode 4-byte ticks offset timestamp505 // Encode 4-byte ticks offset timestamp
506 EndianOrder.BigEndian.CopyBytes(TimestampC4, buffer, startIndex);506 BigEndian.CopyBytes(TimestampC4, buffer, startIndex);
507 }507 }
508 }508 }
509 else509 else
510 {510 {
511 // Encode 8-byte full fidelity timestamp511 // Encode 8-byte full fidelity timestamp
512 EndianOrder.BigEndian.CopyBytes((long)Timestamp, buffer, startIndex);512 BigEndian.CopyBytes((long)Timestamp, buffer, startIndex);
513 }513 }
514 }514 }
515 515
Source/Libraries/GSF.TimeSeries/Transport/DataPublisher.cs+11−11
@@ -1995,7 +1995,7 @@ namespace GSF.TimeSeries.Transport · 1994 unmodified lines
1995 {1995 {
1996 foreach (KeyValuePair<int, string> pair in notifications)1996 foreach (KeyValuePair<int, string> pair in notifications)
1997 {1997 {
1998 hash = EndianOrder.BigEndian.GetBytes(pair.Key);1998 hash = BigEndian.GetBytes(pair.Key);
1999 message = connection.Encoding.GetBytes(pair.Value);1999 message = connection.Encoding.GetBytes(pair.Value);
2000 2000
2001 buffer.Write(hash, 0, hash.Length);2001 buffer.Write(hash, 0, hash.Length);
@@ -2189,7 +2189,7 @@ namespace GSF.TimeSeries.Transport · 187 unmodified lines
2189 /// <param name="startTime">Start time, in <see cref="Ticks"/>, of first measurement transmitted.</param>2189 /// <param name="startTime">Start time, in <see cref="Ticks"/>, of first measurement transmitted.</param>
2190 internal protected virtual bool SendDataStartTime(Guid clientID, Ticks startTime)2190 internal protected virtual bool SendDataStartTime(Guid clientID, Ticks startTime)
2191 {2191 {
2192 bool result = SendClientResponse(clientID, ServerResponse.DataStartTime, ServerCommand.Subscribe, EndianOrder.BigEndian.GetBytes((long)startTime));2192 bool result = SendClientResponse(clientID, ServerResponse.DataStartTime, ServerCommand.Subscribe, BigEndian.GetBytes((long)startTime));
2193 2193
2194 ClientConnection connection;2194 ClientConnection connection;
2195 2195
@@ -2532,12 +2532,12 @@ namespace GSF.TimeSeries.Transport · 336 unmodified lines
2532 workingBuffer.Seek(2, SeekOrigin.Begin);2532 workingBuffer.Seek(2, SeekOrigin.Begin);
2533 2533
2534 // Add the actual size of payload length to response packet2534 // Add the actual size of payload length to response packet
2535 workingBuffer.Write(EndianOrder.BigEndian.GetBytes(payloadLength), 0, 4);2535 workingBuffer.Write(BigEndian.GetBytes(payloadLength), 0, 4);
2536 }2536 }
2537 else2537 else
2538 {2538 {
2539 // Add size of data buffer to response packet2539 // Add size of data buffer to response packet
2540 workingBuffer.Write(EndianOrder.BigEndian.GetBytes(data.Length), 0, 4);2540 workingBuffer.Write(BigEndian.GetBytes(data.Length), 0, 4);
2541 2541
2542 // Add data buffer2542 // Add data buffer
2543 workingBuffer.Write(data, 0, data.Length);2543 workingBuffer.Write(data, 0, data.Length);
@@ -2877,7 +2877,7 @@ namespace GSF.TimeSeries.Transport · 333 unmodified lines
2877 if (length >= 5)2877 if (length >= 5)
2878 {2878 {
2879 // First 4 bytes beyond command byte represent an integer representing the length of the authentication string that follows2879 // First 4 bytes beyond command byte represent an integer representing the length of the authentication string that follows
2880 int byteLength = EndianOrder.BigEndian.ToInt32(buffer, startIndex);2880 int byteLength = BigEndian.ToInt32(buffer, startIndex);
2881 startIndex += 4;2881 startIndex += 4;
2882 2882
2883 // Byte length should be reasonable2883 // Byte length should be reasonable
@@ -2975,7 +2975,7 @@ namespace GSF.TimeSeries.Transport · 91 unmodified lines
2975 bool addSubscription = false;2975 bool addSubscription = false;
2976 2976
2977 // Next 4 bytes are an integer representing the length of the connection string that follows2977 // Next 4 bytes are an integer representing the length of the connection string that follows
2978 int byteLength = EndianOrder.BigEndian.ToInt32(buffer, startIndex);2978 int byteLength = BigEndian.ToInt32(buffer, startIndex);
2979 startIndex += 4;2979 startIndex += 4;
2980 2980
2981 if (byteLength > 0 && length >= 6 + byteLength)2981 if (byteLength > 0 && length >= 6 + byteLength)
@@ -3240,7 +3240,7 @@ namespace GSF.TimeSeries.Transport · 258 unmodified lines
3240 // DataTable.Select() function against an in-memory DataSet and therefore are not subject to SQL injection attacks3240 // DataTable.Select() function against an in-memory DataSet and therefore are not subject to SQL injection attacks
3241 if (length > 4)3241 if (length > 4)
3242 {3242 {
3243 int responseLength = EndianOrder.BigEndian.ToInt32(buffer, startIndex);3243 int responseLength = BigEndian.ToInt32(buffer, startIndex);
3244 startIndex += 4;3244 startIndex += 4;
3245 3245
3246 if (length >= responseLength + 4)3246 if (length >= responseLength + 4)
@@ -3438,7 +3438,7 @@ namespace GSF.TimeSeries.Transport · 191 unmodified lines
3438 if (length >= 4)3438 if (length >= 4)
3439 {3439 {
3440 // Next 4 bytes are an integer representing the new processing interval3440 // Next 4 bytes are an integer representing the new processing interval
3441 int processingInterval = EndianOrder.BigEndian.ToInt32(buffer, startIndex);3441 int processingInterval = BigEndian.ToInt32(buffer, startIndex);
3442 3442
3443 IClientSubscription subscription = connection.Subscription;3443 IClientSubscription subscription = connection.Subscription;
3444 3444
@@ -3470,7 +3470,7 @@ namespace GSF.TimeSeries.Transport · 25 unmodified lines
3470 3470
3471 if (length >= 4)3471 if (length >= 4)
3472 {3472 {
3473 operationalModes = EndianOrder.BigEndian.ToUInt32(buffer, startIndex);3473 operationalModes = BigEndian.ToUInt32(buffer, startIndex);
3474 3474
3475 if ((operationalModes & (uint)OperationalModes.VersionMask) != 0u)3475 if ((operationalModes & (uint)OperationalModes.VersionMask) != 0u)
3476 OnStatusMessage("WARNING: Protocol version not supported. Operational modes may not be set correctly for client {0}.", connection.ClientID);3476 OnStatusMessage("WARNING: Protocol version not supported. Operational modes may not be set correctly for client {0}.", connection.ClientID);
@@ -3482,7 +3482,7 @@ namespace GSF.TimeSeries.Transport · 5 unmodified lines
3482 // Handle confirmation of receipt of notification3482 // Handle confirmation of receipt of notification
3483 private void HandleConfirmNotification(ClientConnection connection, byte[] buffer, int startIndex, int length)3483 private void HandleConfirmNotification(ClientConnection connection, byte[] buffer, int startIndex, int length)
3484 {3484 {
3485 int hash = EndianOrder.BigEndian.ToInt32(buffer, startIndex);3485 int hash = BigEndian.ToInt32(buffer, startIndex);
3486 Dictionary<int, string> notifications;3486 Dictionary<int, string> notifications;
3487 string notification;3487 string notification;
3488 3488
@@ -3521,7 +3521,7 @@ namespace GSF.TimeSeries.Transport · 32 unmodified lines
3521 3521
3522 if (length >= 4)3522 if (length >= 4)
3523 {3523 {
3524 sequenceNumber = EndianOrder.BigEndian.ToUInt32(buffer, startIndex);3524 sequenceNumber = BigEndian.ToUInt32(buffer, startIndex);
3525 connection.Subscription.ConfirmBufferBlock(sequenceNumber);3525 connection.Subscription.ConfirmBufferBlock(sequenceNumber);
3526 }3526 }
3527 }3527 }
Source/Libraries/GSF.TimeSeries/Transport/DataSubscriber.cs+17−17
@@ -875,7 +875,7 @@ namespace GSF.TimeSeries.Transport · 874 unmodified lines
875 base.ProcessingInterval = value;875 base.ProcessingInterval = value;
876 876
877 // Request server update the processing interval877 // Request server update the processing interval
878 SendServerCommand(ServerCommand.UpdateProcessingInterval, EndianOrder.BigEndian.GetBytes(value));878 SendServerCommand(ServerCommand.UpdateProcessingInterval, BigEndian.GetBytes(value));
879 }879 }
880 }880 }
881 881
@@ -1542,7 +1542,7 @@ namespace GSF.TimeSeries.Transport · 660 unmodified lines
1542 bytes = bytes.Encrypt(sharedSecret, CipherStrength.Aes256);1542 bytes = bytes.Encrypt(sharedSecret, CipherStrength.Aes256);
1543 1543
1544 // Write encoded authentication key length into buffer1544 // Write encoded authentication key length into buffer
1545 buffer.Write(EndianOrder.BigEndian.GetBytes(bytes.Length), 0, 4);1545 buffer.Write(BigEndian.GetBytes(bytes.Length), 0, 4);
1546 1546
1547 // Encode encrypted authentication key into buffer1547 // Encode encrypted authentication key into buffer
1548 buffer.Write(bytes, 0, bytes.Length);1548 buffer.Write(bytes, 0, bytes.Length);
@@ -2133,7 +2133,7 @@ namespace GSF.TimeSeries.Transport · 584 unmodified lines
2133 bytes = m_encoding.GetBytes(connectionString);2133 bytes = m_encoding.GetBytes(connectionString);
2134 2134
2135 // Write encoded connection string length into buffer2135 // Write encoded connection string length into buffer
2136 buffer.Write(EndianOrder.BigEndian.GetBytes(bytes.Length), 0, 4);2136 buffer.Write(BigEndian.GetBytes(bytes.Length), 0, 4);
2137 2137
2138 // Encode connection string into buffer2138 // Encode connection string into buffer
2139 buffer.Write(bytes, 0, bytes.Length);2139 buffer.Write(bytes, 0, bytes.Length);
@@ -2248,7 +2248,7 @@ namespace GSF.TimeSeries.Transport · 108 unmodified lines
2248 {2248 {
2249 byte[] bytes = m_encoding.GetBytes(message);2249 byte[] bytes = m_encoding.GetBytes(message);
2250 2250
2251 buffer.Write(EndianOrder.BigEndian.GetBytes(bytes.Length), 0, 4);2251 buffer.Write(BigEndian.GetBytes(bytes.Length), 0, 4);
2252 buffer.Write(bytes, 0, bytes.Length);2252 buffer.Write(bytes, 0, bytes.Length);
2253 2253
2254 return SendServerCommand(commandCode, buffer.ToArray());2254 return SendServerCommand(commandCode, buffer.ToArray());
@@ -2418,7 +2418,7 @@ namespace GSF.TimeSeries.Transport · 163 unmodified lines
2418 2418
2419 ServerResponse responseCode = (ServerResponse)buffer[0];2419 ServerResponse responseCode = (ServerResponse)buffer[0];
2420 ServerCommand commandCode = (ServerCommand)buffer[1];2420 ServerCommand commandCode = (ServerCommand)buffer[1];
2421 int responseLength = EndianOrder.BigEndian.ToInt32(buffer, 2);2421 int responseLength = BigEndian.ToInt32(buffer, 2);
2422 int responseIndex = DataPublisher.ClientResponseHeaderSize;2422 int responseIndex = DataPublisher.ClientResponseHeaderSize;
2423 bool solicited = false;2423 bool solicited = false;
2424 byte[][][] keyIVs;2424 byte[][][] keyIVs;
@@ -2544,12 +2544,12 @@ namespace GSF.TimeSeries.Transport · 119 unmodified lines
2544 // Synchronized packets contain a frame level timestamp2544 // Synchronized packets contain a frame level timestamp
2545 if (synchronizedMeasurements)2545 if (synchronizedMeasurements)
2546 {2546 {
2547 timestamp = EndianOrder.BigEndian.ToInt64(buffer, responseIndex);2547 timestamp = BigEndian.ToInt64(buffer, responseIndex);
2548 responseIndex += 8;2548 responseIndex += 8;
2549 }2549 }
2550 2550
2551 // Deserialize number of measurements that follow2551 // Deserialize number of measurements that follow
2552 count = EndianOrder.BigEndian.ToInt32(buffer, responseIndex);2552 count = BigEndian.ToInt32(buffer, responseIndex);
2553 responseIndex += 4;2553 responseIndex += 4;
2554 2554
2555 if (compressedPayload)2555 if (compressedPayload)
@@ -2713,7 +2713,7 @@ namespace GSF.TimeSeries.Transport · 157 unmodified lines
2713 break;2713 break;
2714 case ServerResponse.BufferBlock:2714 case ServerResponse.BufferBlock:
2715 // Buffer block received - wrap as a buffer block measurement and expose back to consumer2715 // Buffer block received - wrap as a buffer block measurement and expose back to consumer
2716 uint sequenceNumber = EndianOrder.BigEndian.ToUInt32(buffer, responseIndex);2716 uint sequenceNumber = BigEndian.ToUInt32(buffer, responseIndex);
2717 int cacheIndex = (int)(sequenceNumber - m_expectedBufferBlockSequenceNumber);2717 int cacheIndex = (int)(sequenceNumber - m_expectedBufferBlockSequenceNumber);
2718 BufferBlockMeasurement bufferBlockMeasurement;2718 BufferBlockMeasurement bufferBlockMeasurement;
2719 Tuple<Guid, string, uint> measurementKey;2719 Tuple<Guid, string, uint> measurementKey;
@@ -2726,7 +2726,7 @@ namespace GSF.TimeSeries.Transport · 6 unmodified lines
2726 SendServerCommand(ServerCommand.ConfirmBufferBlock, buffer.BlockCopy(responseIndex, 4));2726 SendServerCommand(ServerCommand.ConfirmBufferBlock, buffer.BlockCopy(responseIndex, 4));
2727 2727
2728 // Get measurement key from signal index cache2728 // Get measurement key from signal index cache
2729 signalIndex = EndianOrder.BigEndian.ToUInt16(buffer, responseIndex + 4);2729 signalIndex = BigEndian.ToUInt16(buffer, responseIndex + 4);
2730 2730
2731 if (!m_signalIndexCache.Reference.TryGetValue(signalIndex, out measurementKey))2731 if (!m_signalIndexCache.Reference.TryGetValue(signalIndex, out measurementKey))
2732 throw new InvalidOperationException("Failed to find associated signal identification for runtime ID " + signalIndex);2732 throw new InvalidOperationException("Failed to find associated signal identification for runtime ID " + signalIndex);
@@ -2781,7 +2781,7 @@ namespace GSF.TimeSeries.Transport · 48 unmodified lines
2781 break;2781 break;
2782 case ServerResponse.DataStartTime:2782 case ServerResponse.DataStartTime:
2783 // Raise data start time event2783 // Raise data start time event
2784 OnDataStartTime(EndianOrder.BigEndian.ToInt64(buffer, responseIndex));2784 OnDataStartTime(BigEndian.ToInt64(buffer, responseIndex));
2785 break;2785 break;
2786 case ServerResponse.ProcessingComplete:2786 case ServerResponse.ProcessingComplete:
2787 // Raise input processing completed event2787 // Raise input processing completed event
@@ -2795,11 +2795,11 @@ namespace GSF.TimeSeries.Transport · 7 unmodified lines
2795 break;2795 break;
2796 case ServerResponse.UpdateBaseTimes:2796 case ServerResponse.UpdateBaseTimes:
2797 // Get active time index2797 // Get active time index
2798 m_timeIndex = EndianOrder.BigEndian.ToInt32(buffer, responseIndex);2798 m_timeIndex = BigEndian.ToInt32(buffer, responseIndex);
2799 responseIndex += 4;2799 responseIndex += 4;
2800 2800
2801 // Deserialize new base time offsets2801 // Deserialize new base time offsets
2802 m_baseTimeOffsets = new[] { EndianOrder.BigEndian.ToInt64(buffer, responseIndex), EndianOrder.BigEndian.ToInt64(buffer, responseIndex + 8) };2802 m_baseTimeOffsets = new[] { BigEndian.ToInt64(buffer, responseIndex), BigEndian.ToInt64(buffer, responseIndex + 8) };
2803 break;2803 break;
2804 case ServerResponse.UpdateCipherKeys:2804 case ServerResponse.UpdateCipherKeys:
2805 // Move past active cipher index (not currently used anywhere else)2805 // Move past active cipher index (not currently used anywhere else)
@@ -2821,7 +2821,7 @@ namespace GSF.TimeSeries.Transport · 15 unmodified lines
2821 int bufferLen;2821 int bufferLen;
2822 2822
2823 // Read even key size2823 // Read even key size
2824 bufferLen = EndianOrder.BigEndian.ToInt32(bytes, index);2824 bufferLen = BigEndian.ToInt32(bytes, index);
2825 index += 4;2825 index += 4;
2826 2826
2827 // Read even key2827 // Read even key
@@ -2830,7 +2830,7 @@ namespace GSF.TimeSeries.Transport · 2 unmodified lines
2830 index += bufferLen;2830 index += bufferLen;
2831 2831
2832 // Read even initialization vector size2832 // Read even initialization vector size
2833 bufferLen = EndianOrder.BigEndian.ToInt32(bytes, index);2833 bufferLen = BigEndian.ToInt32(bytes, index);
2834 index += 4;2834 index += 4;
2835 2835
2836 // Read even initialization vector2836 // Read even initialization vector
@@ -2839,7 +2839,7 @@ namespace GSF.TimeSeries.Transport · 2 unmodified lines
2839 index += bufferLen;2839 index += bufferLen;
2840 2840
2841 // Read odd key size2841 // Read odd key size
2842 bufferLen = EndianOrder.BigEndian.ToInt32(bytes, index);2842 bufferLen = BigEndian.ToInt32(bytes, index);
2843 index += 4;2843 index += 4;
2844 2844
2845 // Read odd key2845 // Read odd key
@@ -2848,7 +2848,7 @@ namespace GSF.TimeSeries.Transport · 2 unmodified lines
2848 index += bufferLen;2848 index += bufferLen;
2849 2849
2850 // Read odd initialization vector size2850 // Read odd initialization vector size
2851 bufferLen = EndianOrder.BigEndian.ToInt32(bytes, index);2851 bufferLen = BigEndian.ToInt32(bytes, index);
2852 index += 4;2852 index += 4;
2853 2853
2854 // Read odd initialization vector2854 // Read odd initialization vector
@@ -4123,7 +4123,7 @@ namespace GSF.TimeSeries.Transport · 1268 unmodified lines
4123 }4123 }
4124 4124
4125 // Define operational modes as soon as possible4125 // Define operational modes as soon as possible
4126 SendServerCommand(ServerCommand.DefineOperationalModes, EndianOrder.BigEndian.GetBytes((uint)m_operationalModes));4126 SendServerCommand(ServerCommand.DefineOperationalModes, BigEndian.GetBytes((uint)m_operationalModes));
4127 4127
4128 // Notify input adapter base that asynchronous connection succeeded4128 // Notify input adapter base that asynchronous connection succeeded
4129 OnConnected();4129 OnConnected();
Source/Libraries/GSF.TimeSeries/Transport/SerializableMeasurement.cs+18−16
@@ -29,6 +29,8 @@ using System; · 28 unmodified lines
29using System.Text;29using System.Text;
30using GSF.Parsing;30using GSF.Parsing;
31 31
32#pragma warning disable 618
33
32namespace GSF.TimeSeries.Transport34namespace GSF.TimeSeries.Transport
33{35{
34 /// <summary>36 /// <summary>
@@ -132,11 +134,11 @@ namespace GSF.TimeSeries.Transport · 97 unmodified lines
132 string keySource = "";134 string keySource = "";
133 135
134 // Decode key ID136 // Decode key ID
135 keyID = EndianOrder.BigEndian.ToUInt32(buffer, index);137 keyID = BigEndian.ToUInt32(buffer, index);
136 index += 4;138 index += 4;
137 139
138 // Decode key source string length140 // Decode key source string length
139 size = EndianOrder.BigEndian.ToInt32(buffer, index);141 size = BigEndian.ToInt32(buffer, index);
140 index += 4;142 index += 4;
141 143
142 // Decode key source string144 // Decode key source string
@@ -154,7 +156,7 @@ namespace GSF.TimeSeries.Transport · 11 unmodified lines
154 Key = MeasurementKey.LookUpOrCreate(signalID, keySource, keyID);156 Key = MeasurementKey.LookUpOrCreate(signalID, keySource, keyID);
155 157
156 // Decode tag name string length158 // Decode tag name string length
157 size = EndianOrder.BigEndian.ToInt32(buffer, index);159 size = BigEndian.ToInt32(buffer, index);
158 index += 4;160 index += 4;
159 161
160 // Decode tag name string162 // Decode tag name string
@@ -167,23 +169,23 @@ namespace GSF.TimeSeries.Transport · 6 unmodified lines
167 TagName = null;169 TagName = null;
168 170
169 // Decode value171 // Decode value
170 Value = EndianOrder.BigEndian.ToDouble(buffer, index);172 Value = BigEndian.ToDouble(buffer, index);
171 index += 8;173 index += 8;
172 174
173 // Decode adder175 // Decode adder
174 Adder = EndianOrder.BigEndian.ToDouble(buffer, index);176 Adder = BigEndian.ToDouble(buffer, index);
175 index += 8;177 index += 8;
176 178
177 // Decode multiplier179 // Decode multiplier
178 Multiplier = EndianOrder.BigEndian.ToDouble(buffer, index);180 Multiplier = BigEndian.ToDouble(buffer, index);
179 index += 8;181 index += 8;
180 182
181 // Decode timestamp183 // Decode timestamp
182 Timestamp = EndianOrder.BigEndian.ToInt64(buffer, index);184 Timestamp = BigEndian.ToInt64(buffer, index);
183 index += 8;185 index += 8;
184 186
185 // Decode state flags187 // Decode state flags
186 StateFlags = (MeasurementStateFlags)EndianOrder.BigEndian.ToUInt32(buffer, index);188 StateFlags = (MeasurementStateFlags)BigEndian.ToUInt32(buffer, index);
187 index += 4;189 index += 4;
188 190
189 return (index - startIndex);191 return (index - startIndex);
@@ -233,13 +235,13 @@ namespace GSF.TimeSeries.Transport · 43 unmodified lines
233 string tagName = TagName.ToNonNullString();235 string tagName = TagName.ToNonNullString();
234 236
235 // Encode key ID237 // Encode key ID
236 EndianOrder.BigEndian.CopyBytes(Key.ID, buffer, index);238 BigEndian.CopyBytes(Key.ID, buffer, index);
237 index += 4;239 index += 4;
238 240
239 // Encode key source string length241 // Encode key source string length
240 bytes = m_encoding.GetBytes(source);242 bytes = m_encoding.GetBytes(source);
241 size = bytes.Length;243 size = bytes.Length;
242 EndianOrder.BigEndian.CopyBytes(size, buffer, index);244 BigEndian.CopyBytes(size, buffer, index);
243 index += 4;245 index += 4;
244 246
245 // Encode key source string247 // Encode key source string
@@ -256,7 +258,7 @@ namespace GSF.TimeSeries.Transport · 10 unmodified lines
256 // Encode tag name string length258 // Encode tag name string length
257 bytes = m_encoding.GetBytes(tagName);259 bytes = m_encoding.GetBytes(tagName);
258 size = bytes.Length;260 size = bytes.Length;
259 EndianOrder.BigEndian.CopyBytes(size, buffer, index);261 BigEndian.CopyBytes(size, buffer, index);
260 index += 4;262 index += 4;
261 263
262 // Encode tag name string264 // Encode tag name string
@@ -267,23 +269,23 @@ namespace GSF.TimeSeries.Transport · 4 unmodified lines
267 }269 }
268 270
269 // Encode value271 // Encode value
270 EndianOrder.BigEndian.CopyBytes(Value, buffer, index);272 BigEndian.CopyBytes(Value, buffer, index);
271 index += 8;273 index += 8;
272 274
273 // Encode adder275 // Encode adder
274 EndianOrder.BigEndian.CopyBytes(Adder, buffer, index);276 BigEndian.CopyBytes(Adder, buffer, index);
275 index += 8;277 index += 8;
276 278
277 // Encode multiplier279 // Encode multiplier
278 EndianOrder.BigEndian.CopyBytes(Multiplier, buffer, index);280 BigEndian.CopyBytes(Multiplier, buffer, index);
279 index += 8;281 index += 8;
280 282
281 // Encode timestamp283 // Encode timestamp
282 EndianOrder.BigEndian.CopyBytes((long)Timestamp, buffer, index);284 BigEndian.CopyBytes((long)Timestamp, buffer, index);
283 index += 8;285 index += 8;
284 286
285 // Encode state flags287 // Encode state flags
286 EndianOrder.BigEndian.CopyBytes((uint)StateFlags, buffer, index);288 BigEndian.CopyBytes((uint)StateFlags, buffer, index);
287 289
288 return length;290 return length;
289 }291 }
Source/Libraries/GSF.TimeSeries/Transport/SignalIndexCache.cs+14−12
@@ -31,6 +31,8 @@ using System.Linq; · 30 unmodified lines
31using System.Text;31using System.Text;
32using GSF.Parsing;32using GSF.Parsing;
33 33
34#pragma warning disable 618
35
34namespace GSF.TimeSeries.Transport36namespace GSF.TimeSeries.Transport
35{37{
36 /// <summary>38 /// <summary>
@@ -281,7 +283,7 @@ namespace GSF.TimeSeries.Transport · 244 unmodified lines
281 buffer.ValidateParameters(startIndex, binaryLength);283 buffer.ValidateParameters(startIndex, binaryLength);
282 284
283 // Byte size of cache285 // Byte size of cache
284 bigEndianBuffer = EndianOrder.BigEndian.GetBytes(binaryLength);286 bigEndianBuffer = BigEndian.GetBytes(binaryLength);
285 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);287 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);
286 offset += bigEndianBuffer.Length;288 offset += bigEndianBuffer.Length;
287 289
@@ -291,14 +293,14 @@ namespace GSF.TimeSeries.Transport · 3 unmodified lines
291 offset += bigEndianBuffer.Length;293 offset += bigEndianBuffer.Length;
292 294
293 // Number of references295 // Number of references
294 bigEndianBuffer = EndianOrder.BigEndian.GetBytes(m_reference.Count);296 bigEndianBuffer = BigEndian.GetBytes(m_reference.Count);
295 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);297 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);
296 offset += bigEndianBuffer.Length;298 offset += bigEndianBuffer.Length;
297 299
298 foreach (KeyValuePair<ushort, Tuple<Guid, string, uint>> kvp in m_reference)300 foreach (KeyValuePair<ushort, Tuple<Guid, string, uint>> kvp in m_reference)
299 {301 {
300 // Signal index302 // Signal index
301 bigEndianBuffer = EndianOrder.BigEndian.GetBytes(kvp.Key);303 bigEndianBuffer = BigEndian.GetBytes(kvp.Key);
302 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);304 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);
303 offset += bigEndianBuffer.Length;305 offset += bigEndianBuffer.Length;
304 306
@@ -309,20 +311,20 @@ namespace GSF.TimeSeries.Transport · 4 unmodified lines
309 311
310 // Source312 // Source
311 unicodeBuffer = m_encoding.GetBytes(kvp.Value.Item2);313 unicodeBuffer = m_encoding.GetBytes(kvp.Value.Item2);
312 bigEndianBuffer = EndianOrder.BigEndian.GetBytes(unicodeBuffer.Length);314 bigEndianBuffer = BigEndian.GetBytes(unicodeBuffer.Length);
313 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);315 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);
314 offset += bigEndianBuffer.Length;316 offset += bigEndianBuffer.Length;
315 Buffer.BlockCopy(unicodeBuffer, 0, buffer, offset, unicodeBuffer.Length);317 Buffer.BlockCopy(unicodeBuffer, 0, buffer, offset, unicodeBuffer.Length);
316 offset += unicodeBuffer.Length;318 offset += unicodeBuffer.Length;
317 319
318 // ID320 // ID
319 bigEndianBuffer = EndianOrder.BigEndian.GetBytes(kvp.Value.Item3);321 bigEndianBuffer = BigEndian.GetBytes(kvp.Value.Item3);
320 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);322 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);
321 offset += bigEndianBuffer.Length;323 offset += bigEndianBuffer.Length;
322 }324 }
323 325
324 // Number of unauthorized IDs326 // Number of unauthorized IDs
325 bigEndianBuffer = EndianOrder.BigEndian.GetBytes(unauthorizedSignalIDs.Length);327 bigEndianBuffer = BigEndian.GetBytes(unauthorizedSignalIDs.Length);
326 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);328 Buffer.BlockCopy(bigEndianBuffer, 0, buffer, offset, bigEndianBuffer.Length);
327 offset += bigEndianBuffer.Length;329 offset += bigEndianBuffer.Length;
328 330
@@ -367,7 +369,7 @@ namespace GSF.TimeSeries.Transport · 38 unmodified lines
367 return 0;369 return 0;
368 370
369 // Byte size of cache371 // Byte size of cache
370 binaryLength = EndianOrder.BigEndian.ToInt32(buffer, offset);372 binaryLength = BigEndian.ToInt32(buffer, offset);
371 offset += 4;373 offset += 4;
372 374
373 if (length < binaryLength)375 if (length < binaryLength)
@@ -381,13 +383,13 @@ namespace GSF.TimeSeries.Transport · 7 unmodified lines
381 offset += 16;383 offset += 16;
382 384
383 // Number of references385 // Number of references
384 referenceCount = EndianOrder.BigEndian.ToInt32(buffer, offset);386 referenceCount = BigEndian.ToInt32(buffer, offset);
385 offset += 4;387 offset += 4;
386 388
387 for (int i = 0; i < referenceCount; i++)389 for (int i = 0; i < referenceCount; i++)
388 {390 {
389 // Signal index391 // Signal index
390 signalIndex = EndianOrder.BigEndian.ToUInt16(buffer, offset);392 signalIndex = BigEndian.ToUInt16(buffer, offset);
391 offset += 2;393 offset += 2;
392 394
393 // Signal ID395 // Signal ID
@@ -395,20 +397,20 @@ namespace GSF.TimeSeries.Transport · 1 unmodified line
395 offset += 16;397 offset += 16;
396 398
397 // Source399 // Source
398 sourceSize = EndianOrder.BigEndian.ToInt32(buffer, offset);400 sourceSize = BigEndian.ToInt32(buffer, offset);
399 offset += 4;401 offset += 4;
400 source = m_encoding.GetString(buffer, offset, sourceSize);402 source = m_encoding.GetString(buffer, offset, sourceSize);
401 offset += sourceSize;403 offset += sourceSize;
402 404
403 // ID405 // ID
404 id = EndianOrder.BigEndian.ToUInt32(buffer, offset);406 id = BigEndian.ToUInt32(buffer, offset);
405 offset += 4;407 offset += 4;
406 408
407 m_reference[signalIndex] = new Tuple<Guid, string, uint>(signalID, source, id);409 m_reference[signalIndex] = new Tuple<Guid, string, uint>(signalID, source, id);
408 }410 }
409 411
410 // Number of unauthorized IDs412 // Number of unauthorized IDs
411 unauthorizedIDCount = EndianOrder.BigEndian.ToInt32(buffer, offset);413 unauthorizedIDCount = BigEndian.ToInt32(buffer, offset);
412 m_unauthorizedSignalIDs = new Guid[unauthorizedIDCount];414 m_unauthorizedSignalIDs = new Guid[unauthorizedIDCount];
413 offset += 4;415 offset += 4;
414 416
Source/Libraries/GSF.TimeSeries/Transport/SynchronizedClientSubscription.cs+3−3
@@ -552,7 +552,7 @@ namespace GSF.TimeSeries.Transport · 551 unmodified lines
552 bufferBlock = new byte[4 + bufferBlockMeasurement.Length];552 bufferBlock = new byte[4 + bufferBlockMeasurement.Length];
553 553
554 // Prepend sequence number554 // Prepend sequence number
555 EndianOrder.BigEndian.CopyBytes(m_bufferBlockSequenceNumber, bufferBlock, 0);555 BigEndian.CopyBytes(m_bufferBlockSequenceNumber, bufferBlock, 0);
556 m_bufferBlockSequenceNumber++;556 m_bufferBlockSequenceNumber++;
557 557
558 // Append measurement data and send558 // Append measurement data and send
@@ -618,10 +618,10 @@ namespace GSF.TimeSeries.Transport · 59 unmodified lines
618 618
619 // Serialize frame timestamp into data packet - this only occurs in synchronized data packets,619 // Serialize frame timestamp into data packet - this only occurs in synchronized data packets,
620 // unsynchronized subscriptions always include timestamps in the serialized measurements620 // unsynchronized subscriptions always include timestamps in the serialized measurements
621 m_workingBuffer.Write(EndianOrder.BigEndian.GetBytes(frameLevelTimestamp), 0, 8);621 m_workingBuffer.Write(BigEndian.GetBytes(frameLevelTimestamp), 0, 8);
622 622
623 // Serialize total number of measurement values to follow623 // Serialize total number of measurement values to follow
624 m_workingBuffer.Write(EndianOrder.BigEndian.GetBytes(measurements.Count()), 0, 4);624 m_workingBuffer.Write(BigEndian.GetBytes(measurements.Count()), 0, 4);
625 625
626 // Attempt compression when requested - encoding of compressed buffer only happens if size would be smaller than normal serialization626 // Attempt compression when requested - encoding of compressed buffer only happens if size would be smaller than normal serialization
627 if (!usePayloadCompression || !measurements.Cast<CompactMeasurement>().CompressPayload(m_workingBuffer, m_compressionStrength, false, ref flags))627 if (!usePayloadCompression || !measurements.Cast<CompactMeasurement>().CompressPayload(m_workingBuffer, m_compressionStrength, false, ref flags))
Source/Libraries/GSF.TimeSeries/Transport/UnsynchronizedClientSubscription.cs+6−6
@@ -686,12 +686,12 @@ namespace GSF.TimeSeries.Transport · 685 unmodified lines
686 bufferBlock = new byte[6 + bufferBlockMeasurement.Length];686 bufferBlock = new byte[6 + bufferBlockMeasurement.Length];
687 687
688 // Prepend sequence number688 // Prepend sequence number
689 EndianOrder.BigEndian.CopyBytes(m_bufferBlockSequenceNumber, bufferBlock, 0);689 BigEndian.CopyBytes(m_bufferBlockSequenceNumber, bufferBlock, 0);
690 m_bufferBlockSequenceNumber++;690 m_bufferBlockSequenceNumber++;
691 691
692 // Copy signal index into buffer692 // Copy signal index into buffer
693 bufferBlockSignalIndex = m_signalIndexCache.GetSignalIndex(bufferBlockMeasurement.ID);693 bufferBlockSignalIndex = m_signalIndexCache.GetSignalIndex(bufferBlockMeasurement.ID);
694 EndianOrder.BigEndian.CopyBytes(bufferBlockSignalIndex, bufferBlock, 4);694 BigEndian.CopyBytes(bufferBlockSignalIndex, bufferBlock, 4);
695 695
696 // Append measurement data and send696 // Append measurement data and send
697 Buffer.BlockCopy(bufferBlockMeasurement.Buffer, 0, bufferBlock, 6, bufferBlockMeasurement.Length);697 Buffer.BlockCopy(bufferBlockMeasurement.Buffer, 0, bufferBlock, 6, bufferBlockMeasurement.Length);
@@ -765,7 +765,7 @@ namespace GSF.TimeSeries.Transport · 67 unmodified lines
765 // published upon receipt, however timestamps are optionally included in the serialized measurements.765 // published upon receipt, however timestamps are optionally included in the serialized measurements.
766 766
767 // Serialize total number of measurement values to follow767 // Serialize total number of measurement values to follow
768 m_workingBuffer.Write(EndianOrder.BigEndian.GetBytes(measurements.Count()), 0, 4);768 m_workingBuffer.Write(BigEndian.GetBytes(measurements.Count()), 0, 4);
769 769
770 // Attempt compression when requested - encoding of compressed buffer only happens if size would be smaller than normal serialization770 // Attempt compression when requested - encoding of compressed buffer only happens if size would be smaller than normal serialization
771 if (!usePayloadCompression || !measurements.Cast<CompactMeasurement>().CompressPayload(m_workingBuffer, m_compressionStrength, m_includeTime, ref flags))771 if (!usePayloadCompression || !measurements.Cast<CompactMeasurement>().CompressPayload(m_workingBuffer, m_compressionStrength, m_includeTime, ref flags))
@@ -838,9 +838,9 @@ namespace GSF.TimeSeries.Transport · 66 unmodified lines
838 // to maintaining this memory stream at a member level838 // to maintaining this memory stream at a member level
839 using (BlockAllocatedMemoryStream responsePacket = new BlockAllocatedMemoryStream())839 using (BlockAllocatedMemoryStream responsePacket = new BlockAllocatedMemoryStream())
840 {840 {
841 responsePacket.Write(EndianOrder.BigEndian.GetBytes(m_timeIndex), 0, 4);841 responsePacket.Write(BigEndian.GetBytes(m_timeIndex), 0, 4);
842 responsePacket.Write(EndianOrder.BigEndian.GetBytes(m_baseTimeOffsets[0]), 0, 8);842 responsePacket.Write(BigEndian.GetBytes(m_baseTimeOffsets[0]), 0, 8);
843 responsePacket.Write(EndianOrder.BigEndian.GetBytes(m_baseTimeOffsets[1]), 0, 8);843 responsePacket.Write(BigEndian.GetBytes(m_baseTimeOffsets[1]), 0, 8);
844 844
845 m_parent.SendClientResponse(m_clientID, ServerResponse.UpdateBaseTimes, ServerCommand.Subscribe, responsePacket.ToArray());845 m_parent.SendClientResponse(m_clientID, ServerResponse.UpdateBaseTimes, ServerCommand.Subscribe, responsePacket.ToArray());
846 }846 }
Source/Libraries/GSF.TimeSeries/UI/CommonFunctions.cs+1−1
@@ -434,7 +434,7 @@ namespace GSF.TimeSeries.UI · 433 unmodified lines
434 /// <returns><see cref="DBNull"/> if <paramref name="value"/> is <c>null</c>; otherwise <paramref name="value"/>.</returns>434 /// <returns><see cref="DBNull"/> if <paramref name="value"/> is <c>null</c>; otherwise <paramref name="value"/>.</returns>
435 public static object ToNotNull(this object value)435 public static object ToNotNull(this object value)
436 {436 {
437 if (value == null)437 if ((object)value == null)
438 return (object)DBNull.Value;438 return (object)DBNull.Value;
439 439
440 if (value is int && (int)value == 0)440 if (value is int && (int)value == 0)
Source/Libraries/GSF.TimeSeries/UI/Converters/DictionaryToKeyValuePairConverter.cs+2−2
@@ -105,7 +105,7 @@ namespace GSF.TimeSeries.UI.Converters · 104 unmodified lines
105 {105 {
106 Dictionary<Type, string> collection = (Dictionary<Type, string>)viewSource.Source;106 Dictionary<Type, string> collection = (Dictionary<Type, string>)viewSource.Source;
107 107
108 if (value != null)108 if ((object)value != null)
109 {109 {
110 KeyValuePair<Type, string> item = collection.ToList().SingleOrDefault(pair => pair.Key.FullName == value.ToString());110 KeyValuePair<Type, string> item = collection.ToList().SingleOrDefault(pair => pair.Key.FullName == value.ToString());
111 111
@@ -128,7 +128,7 @@ namespace GSF.TimeSeries.UI.Converters · 16 unmodified lines
128 /// <returns>Integer, to bind to UI object.</returns>128 /// <returns>Integer, to bind to UI object.</returns>
129 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)129 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
130 {130 {
131 if (value != null)131 if ((object)value != null)
132 {132 {
133 if (value is KeyValuePair<int, string>)133 if (value is KeyValuePair<int, string>)
134 return ((KeyValuePair<int, string>)value).Key == 0 ? (object)DBNull.Value : ((KeyValuePair<int, string>)value).Key;134 return ((KeyValuePair<int, string>)value).Key == 0 ? (object)DBNull.Value : ((KeyValuePair<int, string>)value).Key;
Source/Libraries/GSF.TimeSeries/UI/Converters/IndexToBooleanConverter.cs+3−3
@@ -44,11 +44,11 @@ namespace GSF.TimeSeries.UI.Converters · 43 unmodified lines
44 /// <returns>Boolean value.</returns>44 /// <returns>Boolean value.</returns>
45 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)45 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
46 {46 {
47 if (value != null)47 if ((object)value != null)
48 {48 {
49 int temp = (int) value;49 int temp = (int)value;
50 if (temp > 0)50 if (temp > 0)
51 return false;51 return false;
52 else52 else
53 return true;53 return true;
54 }54 }
Source/Libraries/GSF.TimeSeries/UI/Converters/ObjectToVisibilityConverter.cs+1−1
@@ -47,7 +47,7 @@ namespace GSF.TimeSeries.UI.Converters · 46 unmodified lines
47 /// <returns><see cref="System.Windows.Visibility"/> enumeration.</returns>47 /// <returns><see cref="System.Windows.Visibility"/> enumeration.</returns>
48 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)48 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
49 {49 {
50 if (value != null)50 if ((object)value != null)
51 {51 {
52 // if value is int, then if it is greater than zero then, set it to true otherwise false.52 // if value is int, then if it is greater than zero then, set it to true otherwise false.
53 // Once we set value to boolean instead of integer, next code will take care of visibility.53 // Once we set value to boolean instead of integer, next code will take care of visibility.
Source/Libraries/GSF.TimeSeries/UI/Converters/RoleBasedVisibilityConverter.cs+2−2
@@ -46,10 +46,10 @@ namespace GSF.TimeSeries.UI.Converters · 45 unmodified lines
46 /// <param name="targetType">The type of the binding target property.</param>46 /// <param name="targetType">The type of the binding target property.</param>
47 /// <param name="parameter">The converter parameter to use.</param>47 /// <param name="parameter">The converter parameter to use.</param>
48 /// <param name="culture">The culture to use in the converter.</param>48 /// <param name="culture">The culture to use in the converter.</param>
49 /// <returns>One of the visibility enummeration</returns>49 /// <returns>One of the visibility enumeration</returns>
50 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)50 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
51 {51 {
52 if (value == null || string.IsNullOrEmpty(value.ToString()) || value.ToString() == "*" || CommonFunctions.CurrentPrincipal.IsInRole(value.ToString()))52 if ((object)value == null || string.IsNullOrEmpty(value.ToString()) || value.ToString() == "*" || CommonFunctions.CurrentPrincipal.IsInRole(value.ToString()))
53 return Visibility.Visible;53 return Visibility.Visible;
54 else54 else
55 return Visibility.Collapsed;55 return Visibility.Collapsed;
Source/Libraries/GSF.TimeSeries/UI/Converters/StringToBooleanConverter.cs+1−1
@@ -46,7 +46,7 @@ namespace GSF.TimeSeries.UI.Converters · 45 unmodified lines
46 /// <returns>Boolean value.</returns>46 /// <returns>Boolean value.</returns>
47 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)47 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
48 {48 {
49 if (value != null)49 if ((object)value != null)
50 {50 {
51 string temp = value.ToString().ToUpper();51 string temp = value.ToString().ToUpper();
52 if (temp == "TRUE" || temp == "1" || temp == "IPHA" || temp == "IPHM" || temp == "VPHA" || temp == "VPHM" || temp == "FREQ")52 if (temp == "TRUE" || temp == "1" || temp == "IPHA" || temp == "IPHM" || temp == "VPHA" || temp == "VPHM" || temp == "FREQ")
Source/Libraries/GSF.TimeSeries/UI/Converters/StringToStatusColorConverter.cs+1−1
@@ -51,7 +51,7 @@ namespace GSF.TimeSeries.UI.Converters · 50 unmodified lines
51 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)51 public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
52 {52 {
53 string input = string.Empty;53 string input = string.Empty;
54 if (value != null)54 if ((object)value != null)
55 input = value.ToString().ToLower();55 input = value.ToString().ToLower();
56 56
57 switch (input)57 switch (input)
Source/Libraries/GSF.TimeSeries/UI/DataModels/Measurement.cs+1−1
@@ -188,7 +188,7 @@ namespace GSF.TimeSeries.UI.DataModels · 187 unmodified lines
188 }188 }
189 set189 set
190 {190 {
191 if (value != null && value.Length > 200)191 if ((object)value != null && value.Length > 200)
192 m_pointTag = value.Substring(0, 200);192 m_pointTag = value.Substring(0, 200);
193 else193 else
194 m_pointTag = value;194 m_pointTag = value;
Source/Libraries/GSF.Web/Embedded/SecurityPortal.aspx.cs+1−1
@@ -179,7 +179,7 @@ namespace GSF.Web.Embedded · 178 unmodified lines
179 // Show reset password.179 // Show reset password.
180 Page.Title = StaticPageTitle + " :: Reset Password";180 Page.Title = StaticPageTitle + " :: Reset Password";
181 181
182 if (ViewState[UsernameKey] == null)182 if ((object)ViewState[UsernameKey] == null)
183 {183 {
184 // Check for reset support.184 // Check for reset support.
185 ResetPasswordCheckPanel.Visible = true;185 ResetPasswordCheckPanel.Visible = true;
Source/Libraries/GSF.Windows/Forms/AboutDialog.cs+1−1
@@ -221,7 +221,7 @@ namespace GSF.Windows.Forms · 220 unmodified lines
221 //AddListViewItem(ListViewApplicationInfo, "Trademark", AssemblyInfo.EntryAssembly.Trademark);221 //AddListViewItem(ListViewApplicationInfo, "Trademark", AssemblyInfo.EntryAssembly.Trademark);
222 222
223 // Query all the assemblies used by the calling application.223 // Query all the assemblies used by the calling application.
224 if (m_assemblies == null)224 if ((object)m_assemblies == null)
225 {225 {
226 m_assemblies = new List<AssemblyInfo>();226 m_assemblies = new List<AssemblyInfo>();
227 foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())227 foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
Source/Libraries/GSF.Windows/Forms/SecureForm.cs+1−1
@@ -119,7 +119,7 @@ namespace GSF.Windows.Forms · 118 unmodified lines
119 Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());119 Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
120 120
121 // Setup the security provider for role-based security.121 // Setup the security provider for role-based security.
122 if (SecurityProviderCache.CurrentProvider == null)122 if ((object)SecurityProviderCache.CurrentProvider == null)
123 SecurityProviderCache.CurrentProvider = SecurityProviderUtility.CreateProvider(string.Empty);123 SecurityProviderCache.CurrentProvider = SecurityProviderUtility.CreateProvider(string.Empty);
124 124
125 // Verify that the current thread principal has been authenticated.125 // Verify that the current thread principal has been authenticated.
Source/Libraries/Hadoop.Replication/HadoopReplicationProvider.cs+1−1
@@ -604,7 +604,7 @@ namespace Hadoop.Replication · 603 unmodified lines
604 while ((bytesRead = fileStream.Read(readBuffer, 0, readBuffer.Length)) != 0)604 while ((bytesRead = fileStream.Read(readBuffer, 0, readBuffer.Length)) != 0)
605 {605 {
606 // Read "bytesPerCrc32" bytes from the file and compute CRC32.606 // Read "bytesPerCrc32" bytes from the file and compute CRC32.
607 blockCRC = EndianOrder.BigEndian.GetBytes(readBuffer.Crc32Checksum(0, bytesRead));607 blockCRC = BigEndian.GetBytes(readBuffer.Crc32Checksum(0, bytesRead));
608 // Add big-endian byte array of the computed CRC32 to CRC32 buffer.608 // Add big-endian byte array of the computed CRC32 to CRC32 buffer.
609 blockCRCs.AddRange(blockCRC);609 blockCRCs.AddRange(blockCRC);
610 // Stop reading and compute block MD5 hash when a HDFS block data has been processed.610 // Stop reading and compute block MD5 hash when a HDFS block data has been processed.
Source/Libraries/Tests/GSF.Core.Tests/EndianOrderTest.cs+3−0
@@ -36,6 +36,9 @@ namespace GSF.Core.Tests · 35 unmodified lines
36 {36 {
37 #region [ Byte Swap/Copy Only Endian Order Testing Classes ]37 #region [ Byte Swap/Copy Only Endian Order Testing Classes ]
38 38
39 // These classes represent a brute-force approach to Endian order handling
40 // that are used as a base-line for testing other optimized approaches
41
39 /// <summary>42 /// <summary>
40 /// Represents a big-endian byte order interoperability class.43 /// Represents a big-endian byte order interoperability class.
41 /// </summary>44 /// </summary>
Source/Libraries/Tests/GSF.Core.Tests/GuidExtensionsTest.cs+2−1
@@ -25,9 +25,10 @@ · 24 unmodified lines
25using System;25using System;
26using System.Linq;26using System.Linq;
27using System.Text;27using System.Text;
28using System.Web.ModelBinding;
29using Microsoft.VisualStudio.TestTools.UnitTesting;28using Microsoft.VisualStudio.TestTools.UnitTesting;
30 29
30#pragma warning disable 618
31
31namespace GSF.Core.Tests32namespace GSF.Core.Tests
32{33{
33 [TestClass]34 [TestClass]

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