History

TimeSeriesPlatformLibrary: (1) Updated library and samples so that they run on Windows, (2) Overall code cleanup, bug fixes and improvements,

J. Ritchie Carroll committed 8 years ago

Commit 4c65c881 parent 713fa6232 files · +1496 −869Browse files

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

Unified · Split

Source/Libraries/TimeSeriesPlatformLibrary/Samples/AverageFrequencyCalculator.cpp+64−48
@@ -27,56 +27,56 @@ · 26 unmodified lines
2727 #include <map>
2828
2929 #include "../Common/Convert.h"
30−#include "../Common/Measurement.h"
3130 #include "../Transport/DataSubscriber.h"
3231
33−namespace gsfts = GSF::TimeSeries;
34−namespace tst = gsfts::Transport;
32+using namespace GSF::TimeSeries;
33+using namespace GSF::TimeSeries::Transport;
3534
36−tst::DataSubscriber Subscriber;
37−tst::SubscriptionInfo Info;
35+DataSubscriber Subscriber;
36+SubscriptionInfo Info;
3837
3938 // Create helper objects for subscription.
40−tst::SubscriberConnector CreateSubscriberConnector(std::string hostname, uint16_t port);
41−tst::SubscriptionInfo CreateSubscriptionInfo();
39+SubscriberConnector CreateSubscriberConnector(string hostname, uint16_t port);
40+SubscriptionInfo CreateSubscriptionInfo();
4241
4342 // Handlers for subscriber callbacks.
44−void Resubscribe(tst::DataSubscriber* source);
45−void ProcessMeasurements(tst::DataSubscriber* source, std::vector<gsfts::Measurement> newMeasurements);
46−void DisplayStatusMessage(tst::DataSubscriber* source, std::string message);
47−void DisplayErrorMessage(tst::DataSubscriber* source, std::string message);
43+void Resubscribe(DataSubscriber* source);
44+void ProcessMeasurements(DataSubscriber* source, vector<Measurement> newMeasurements);
45+void DisplayStatusMessage(DataSubscriber* source, string message);
46+void DisplayErrorMessage(DataSubscriber* source, string message);
4847
4948 // Runs the subscriber.
50−void RunSubscriber(std::string hostname, gsfts::uint16_t port);
49+void RunSubscriber(string hostname, uint16_t port);
5150
5251 // Sample application to demonstrate average frequency calculation using the subscriber API.
5352 int main(int argc, char* argv[])
5453 {
55− std::string hostname;
56− gsfts::uint16_t port;
54+ string hostname;
55+ uint16_t port;
5756
5857 // Ensure that the necessary
5958 // command line arguments are given.
6059 if (argc < 3)
6160 {
62− std::cout << "Usage:" << std::endl;
63− std::cout << " AverageFrequencyCalculator HOSTNAME PORT" << std::endl;
61+ cout << "Usage:" << endl;
62+ cout << " AverageFrequencyCalculator HOSTNAME PORT" << endl;
6463 return 0;
6564 }
6665
6766 // Get hostname and port.
6867 hostname = argv[1];
69− std::stringstream(argv[2]) >> port;
68+ stringstream(argv[2]) >> port;
7069
7170 // Run the subscriber.
7271 RunSubscriber(hostname, port);
7372
7473 // Wait until the user presses enter before quitting.
75− std::string line;
76− std::getline(std::cin, line);
74+ string line;
75+ getline(cin, line);
7776
7877 // Disconnect the subscriber to stop background threads.
7978 Subscriber.Disconnect();
79+ cout << "Disconnected." << endl;
8080
8181 return 0;
8282 }
@@ -86,11 +86,11 @@ int main(int argc, char* argv[]) · 3 unmodified lines
8686 // - Register callbacks
8787 // - Connect to publisher
8888 // - Subscribe
89−void RunSubscriber(std::string hostname, gsfts::uint16_t port)
89+void RunSubscriber(string hostname, uint16_t port)
9090 {
9191 // The connector is declared here because it
9292 // is only needed for the initial connection
93− tst::SubscriberConnector connector;
93+ SubscriberConnector connector;
9494
9595 // Set up helper objects
9696 connector = CreateSubscriberConnector(hostname, port);
@@ -100,18 +100,26 @@ void RunSubscriber(std::string hostname, gsfts::uint16_t port) · 3 unmodified lines
100100 Subscriber.RegisterStatusMessageCallback(&DisplayStatusMessage);
101101 Subscriber.RegisterErrorMessageCallback(&DisplayErrorMessage);
102102
103+ // Connect and subscribe to publisher
104+ cout << endl << "Connecting to " << hostname << ":" << port << "..." << endl << endl;
105+
103106 // Connect and subscribe to publisher
104107 if (connector.Connect(Subscriber))
108+ {
109+ cout << "Connected! Subscribing to data..." << endl << endl;
105110 Subscriber.Subscribe(Info);
111+ }
106112 else
107− std::cerr << "All connection attempts failed" << std::endl;
113+ {
114+ cout << "Connection attempts exceeded. Press enter to exit." << endl;
115+ }
108116 }
109117
110−tst::SubscriptionInfo CreateSubscriptionInfo()
118+SubscriptionInfo CreateSubscriptionInfo()
111119 {
112120 // SubscriptionInfo is a helper object which allows the user
113121 // to set up their subscription and reuse subscription settings.
114− tst::SubscriptionInfo info;
122+ SubscriptionInfo info;
115123
116124 info.FilterExpression = "FILTER ActiveMeasurements WHERE SignalType = 'FREQ'";
117125 info.NewMeasurementsCallback = &ProcessMeasurements;
@@ -131,11 +139,11 @@ tst::SubscriptionInfo CreateSubscriptionInfo() · 13 unmodified lines
131139 return info;
132140 }
133141
134−tst::SubscriberConnector CreateSubscriberConnector(std::string hostname, gsfts::uint16_t port)
142+SubscriberConnector CreateSubscriberConnector(string hostname, uint16_t port)
135143 {
136144 // SubscriberConnector is another helper object which allows the
137145 // user to modify settings for auto-reconnects and retry cycles.
138− tst::SubscriberConnector connector;
146+ SubscriberConnector connector;
139147
140148 connector.RegisterErrorMessageCallback(&DisplayErrorMessage);
141149 connector.RegisterReconnectCallback(&Resubscribe);
@@ -151,20 +159,20 @@ tst::SubscriberConnector CreateSubscriberConnector(std::string hostname, gsfts:: · 9 unmodified lines
151159
152160 // Callback which is called when the subscriber has
153161 // received a new packet of measurements from the publisher.
154−void ProcessMeasurements(tst::DataSubscriber* source, std::vector<gsfts::Measurement> newMeasurements)
162+void ProcessMeasurements(DataSubscriber* source, vector<Measurement> newMeasurements)
155163 {
156164 const double LoFrequency = 57.0;
157165 const double HiFrequency = 62.0;
158166 const double HzResolution = 1000.0; // three decimal places
159167
160− const std::string TimestampFormat = "%Y-%m-%d %H:%M:%S.%f";
161− const std::size_t MaxTimestampSize = 80;
168+ const string TimestampFormat = "%Y-%m-%d %H:%M:%S.%f";
169+ const size_t MaxTimestampSize = 80;
162170
163− static std::map<gsfts::Guid, int> m_lastValues;
171+ static map<Guid, int> m_lastValues;
164172
165− std::map<gsfts::Guid, int>::iterator lastValueIter;
166− gsfts::Measurement currentMeasurement;
167− gsfts::Guid signalID;
173+ map<Guid, int>::iterator lastValueIter;
174+ Measurement currentMeasurement;
175+ Guid signalID;
168176
169177 double frequency;
170178 double frequencyTotal;
@@ -175,24 +183,24 @@ void ProcessMeasurements(tst::DataSubscriber* source, std::vector<gsfts::Measure · 4 unmodified lines
175183 int total;
176184
177185 char timestamp[MaxTimestampSize];
178− std::size_t i;
186+ size_t i;
179187
180188 frequencyTotal = 0.0;
181189 total = 0;
182190
183− std::cout << Subscriber.GetTotalMeasurementsReceived() << " measurements received so far..." << std::endl;
191+ cout << Subscriber.GetTotalMeasurementsReceived() << " measurements received so far..." << endl;
184192
185193 if (newMeasurements.size() > 0)
186194 {
187− if (gsfts::TicksToString(timestamp, MaxTimestampSize, TimestampFormat, newMeasurements[0].Timestamp))
188− std::cout << "Timestamp: " << std::string(timestamp) << std::endl;
195+ if (TicksToString(timestamp, MaxTimestampSize, TimestampFormat, newMeasurements[0].Timestamp))
196+ cout << "Timestamp: " << string(timestamp) << endl;
189197
190− std::cout << "Point\tValue" << std::endl;
198+ cout << "Point\tValue" << endl;
191199
192200 for (i = 0; i < newMeasurements.size(); ++i)
193− std::cout << newMeasurements[i].ID << '\t' << newMeasurements[i].Value << std::endl;
201+ cout << newMeasurements[i].ID << '\t' << newMeasurements[i].Value << endl;
194202
195− std::cout << std::endl;
203+ cout << endl;
196204
197205 for (i = 0; i < newMeasurements.size(); ++i)
198206 {
@@ -235,28 +243,36 @@ void ProcessMeasurements(tst::DataSubscriber* source, std::vector<gsfts::Measure · 36 unmodified lines
235243
236244 if (total > 0)
237245 {
238− std::cout << "Avg frequency: " << (frequencyTotal / total) << std::endl;
239− std::cout << "Max frequency: " << maximumFrequency << std::endl;
240− std::cout << "Min frequency: " << minimumFrequency << std::endl << std::endl;
246+ cout << "Avg frequency: " << (frequencyTotal / total) << endl;
247+ cout << "Max frequency: " << maximumFrequency << endl;
248+ cout << "Min frequency: " << minimumFrequency << endl << endl;
241249 }
242250 }
243251 }
244252
245253 // Callback that is called when the subscriber auto-reconnects.
246−void Resubscribe(tst::DataSubscriber* source)
254+void Resubscribe(DataSubscriber* source)
247255 {
248256 if (source->IsConnected())
257+ {
258+ cout << "Reconnected! Subscribing to data..." << endl << endl;
249259 source->Subscribe(Info);
260+ }
261+ else
262+ {
263+ source->Disconnect();
264+ cout << "Connection retry attempts exceeded. Press enter to exit." << endl;
265+ }
250266 }
251267
252268 // Callback which is called to display status messages from the subscriber.
253−void DisplayStatusMessage(tst::DataSubscriber* source, std::string message)
269+void DisplayStatusMessage(DataSubscriber* source, string message)
254270 {
255− std::cout << message << std::endl << std::endl;
271+ cout << message << endl << endl;
256272 }
257273
258274 // Callback which is called to display error messages from the connector and subscriber.
259−void DisplayErrorMessage(tst::DataSubscriber* source, std::string message)
275+void DisplayErrorMessage(DataSubscriber* source, string message)
260276 {
261− std::cerr << message << std::endl << std::endl;
277+ cerr << message << endl << endl;
262278 }

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