History

TimeSeriesPlatformLibrary: Updated sample code to use latest common types and functions.

J. Ritchie Carroll committed 7 years ago

Commit d7733e71 parent 324c0c45 files · +43 −77Browse files

Showing the changes to Source/Libraries/TimeSeriesPlatformLibrary/Samples/SubscriberHandler.cpp (1 of 5 files). Show all

Unified · Split

Source/Libraries/TimeSeriesPlatformLibrary/Samples/SubscriberHandler.cpp+20−29
@@ -22,18 +22,18 @@ · 21 unmodified lines
2222 //******************************************************************************************************
2323
2424 #include "SubscriberHandler.h"
25−
26−// TODO: These includes are just for temporary testing code
2725 #include "../Common/Convert.h"
28−#include <boost/uuid/uuid_io.hpp>
2926
3027 using namespace std;
3128 using namespace GSF;
3229 using namespace GSF::TimeSeries;
3330 using namespace GSF::TimeSeries::Transport;
3431
32+Mutex SubscriberHandler::s_coutLock {};
33+
3534 SubscriberHandler::SubscriberHandler(string name) :
36− m_name(std::move(name))
35+ m_name(std::move(name)),
36+ m_processCount(0L)
3737 {
3838 }
3939
@@ -79,9 +79,10 @@ void SubscriberHandler::StatusMessage(const string& message) · 39 unmodified lines
7979
8080 status << "[" << m_name << "] " << message;
8181
82− m_coutLock.lock();
82+ // Calls can come from multiple threads, so we impose a simple lock before write to console
83+ s_coutLock.lock();
8384 SubscriberInstance::StatusMessage(status.str());
84− m_coutLock.unlock();
85+ s_coutLock.unlock();
8586 }
8687
8788 void SubscriberHandler::ErrorMessage(const string& message)
@@ -92,9 +93,10 @@ void SubscriberHandler::ErrorMessage(const string& message) · 4 unmodified lines
9293
9394 status << "[" << m_name << "] " << message;
9495
95− m_coutLock.lock();
96+ // Calls can come from multiple threads, so we impose a simple lock before write to console
97+ s_coutLock.lock();
9698 SubscriberInstance::ErrorMessage(status.str());
97− m_coutLock.unlock();
99+ s_coutLock.unlock();
98100 }
99101
100102 void SubscriberHandler::DataStartTime(time_t unixSOC, uint16_t milliseconds)
@@ -124,17 +126,15 @@ void SubscriberHandler::ParsedMetadata() · 23 unmodified lines
124126 // ReSharper disable CppDeclaratorNeverUsed
125127 void SubscriberHandler::ReceivedNewMeasurements(const vector<MeasurementPtr>& measurements)
126128 {
129+ // TODO: The following code could be used to generate frame based output, e.g., for IEEE C37.118
127130 // Start processing measurements
128131 //for (auto &measurement : measurements)
129132 //{
130− // time_t soc;
131− // uint16_t milliseconds;
132−
133133 // // Get adjusted value
134134 // const float64_t value = measurement->AdjustedValue();
135135
136− // // Get time converted to UNIX second of century plus milliseconds
137− // measurement->GetUnixTime(soc, milliseconds);
136+ // // Get timestamp
137+ // DateTime timestamp = measurement->GetDateTime();
138138
139139 // // Handle per measurement quality flags
140140 // int32_t qualityFlags = measurement->Flags;
@@ -152,7 +152,7 @@ void SubscriberHandler::ReceivedNewMeasurements(const vector<MeasurementPtr>& me · 11 unmodified lines
152152
153153 // // reference.Acronym << target device acronym
154154 // // reference.Kind << kind of signal (see SignalKind in "Types.h"), like Frequency, Angle, etc
155− // // reference.Index << for Phasors, Analogs and Digitals - this is the ordered "index"
155+ // // reference.Index << for Phasors, Analogs and Digitals - this is the ordered "index"
156156
157157 // // TODO: Handle measurement processing here...
158158 // }
@@ -165,16 +165,11 @@ void SubscriberHandler::ReceivedNewMeasurements(const vector<MeasurementPtr>& me · 6 unmodified lines
165165 //}
166166
167167 // TODO: *** Temporary Testing Code Below *** -- REMOVE BEFORE USE
168− const string TimestampFormat = "%Y-%m-%d %H:%M:%S.%f";
169− const uint32_t MaxTimestampSize = 80;
168+ static const uint64_t interval = 10 * 60;
169+ const uint64_t measurementCount = measurements.size();
170+ const bool showMessage = (m_processCount + measurementCount >= (m_processCount / interval + 1) * interval);
170171
171− static long processCount = 0;
172− static char timestamp[MaxTimestampSize];
173− static const long interval = 10 * 60;
174− const long measurementCount = measurements.size();
175− const bool showMessage = (processCount + measurementCount >= (processCount / interval + 1) * interval);
176−
177− processCount += measurementCount;
172+ m_processCount += measurementCount;
178173
179174 // Only display messages every few seconds
180175 if (showMessage)
@@ -182,12 +177,8 @@ void SubscriberHandler::ReceivedNewMeasurements(const vector<MeasurementPtr>& me · 1 unmodified line
182177 stringstream message;
183178
184179 message << GetTotalMeasurementsReceived() << " measurements received so far..." << endl;
185−
186− if (TicksToString(timestamp, MaxTimestampSize, TimestampFormat, measurements[0]->Timestamp))
187− message << string(timestamp) << endl;
188−
189− message << "Signal ID: " << boost::lexical_cast<string>(measurements[0]->SignalID) << endl;
190−
180+ message << ToString(measurements[0]->GetDateTime()) << endl;
181+ message << "Signal ID: " << ToString(measurements[0]->SignalID) << endl;
191182 message << "\tPoint\tValue" << endl;
192183
193184 for (const auto& measurement : measurements)

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