Showing the changes to Source/Libraries/TimeSeriesPlatformLibrary/Samples/AverageFrequencyCalculator.cpp (1 of 8 files). Show all
Unified · Split
| @@ -34,11 +34,11 @@ using namespace GSF; · 33 unmodified lines | |||
| 34 | using namespace GSF::TimeSeries; | 34 | using namespace GSF::TimeSeries; |
| 35 | using namespace GSF::TimeSeries::Transport; | 35 | using namespace GSF::TimeSeries::Transport; |
| 36 | 36 | ||
| 37 | DataSubscriber Subscriber; | 37 | DataSubscriber* Subscriber; |
| 38 | SubscriptionInfo Info; | 38 | SubscriptionInfo Info; |
| 39 | 39 | ||
| 40 | // Create helper objects for subscription. | 40 | // Create helper objects for subscription. |
| 41 | void SetupSubscriberConnector(SubscriberConnector& connector, string hostname, uint16_t port); | 41 | void SetupSubscriberConnector(SubscriberConnector& connector, const string& hostname, uint16_t port); |
| 42 | SubscriptionInfo CreateSubscriptionInfo(); | 42 | SubscriptionInfo CreateSubscriptionInfo(); |
| 43 | 43 | ||
| 44 | // Handlers for subscriber callbacks. | 44 | // Handlers for subscriber callbacks. |
| @@ -48,7 +48,7 @@ void DisplayStatusMessage(DataSubscriber* source, const string& message); · 3 unmodified lines | |||
| 48 | void DisplayErrorMessage(DataSubscriber* source, const string& message); | 48 | void DisplayErrorMessage(DataSubscriber* source, const string& message); |
| 49 | 49 | ||
| 50 | // Runs the subscriber. | 50 | // Runs the subscriber. |
| 51 | void RunSubscriber(string hostname, uint16_t port); | 51 | void RunSubscriber(const string& hostname, uint16_t port); |
| 52 | 52 | ||
| 53 | // Sample application to demonstrate average frequency calculation using the subscriber API. | 53 | // Sample application to demonstrate average frequency calculation using the subscriber API. |
| 54 | int main(int argc, char* argv[]) | 54 | int main(int argc, char* argv[]) |
| @@ -69,6 +69,9 @@ int main(int argc, char* argv[]) · 14 unmodified lines | |||
| 69 | hostname = argv[1]; | 69 | hostname = argv[1]; |
| 70 | stringstream(argv[2]) >> port; | 70 | stringstream(argv[2]) >> port; |
| 71 | 71 | ||
| 72 | // Maintain the life-time of DataSubscriber within main | ||
| 73 | Subscriber = new DataSubscriber(); | ||
| 74 | |||
| 72 | // Run the subscriber. | 75 | // Run the subscriber. |
| 73 | RunSubscriber(hostname, port); | 76 | RunSubscriber(hostname, port); |
| 74 | 77 | ||
| @@ -77,9 +80,11 @@ int main(int argc, char* argv[]) · 2 unmodified lines | |||
| 77 | getline(cin, line); | 80 | getline(cin, line); |
| 78 | 81 | ||
| 79 | // Disconnect the subscriber to stop background threads. | 82 | // Disconnect the subscriber to stop background threads. |
| 80 | Subscriber.Disconnect(); | 83 | Subscriber->Disconnect(); |
| 81 | cout << "Disconnected." << endl; | 84 | cout << "Disconnected." << endl; |
| 82 | 85 | ||
| 86 | delete Subscriber; | ||
| 87 | |||
| 83 | return 0; | 88 | return 0; |
| 84 | } | 89 | } |
| 85 | 90 | ||
| @@ -88,26 +93,26 @@ int main(int argc, char* argv[]) · 2 unmodified lines | |||
| 88 | // - Register callbacks | 93 | // - Register callbacks |
| 89 | // - Connect to publisher | 94 | // - Connect to publisher |
| 90 | // - Subscribe | 95 | // - Subscribe |
| 91 | void RunSubscriber(string hostname, uint16_t port) | 96 | void RunSubscriber(const string& hostname, uint16_t port) |
| 92 | { | 97 | { |
| 93 | SubscriberConnector& connector = Subscriber.GetSubscriberConnector(); | 98 | SubscriberConnector& connector = Subscriber->GetSubscriberConnector(); |
| 94 | 99 | ||
| 95 | // Set up helper objects | 100 | // Set up helper objects |
| 96 | SetupSubscriberConnector(connector, hostname, port); | 101 | SetupSubscriberConnector(connector, hostname, port); |
| 97 | Info = CreateSubscriptionInfo(); | 102 | Info = CreateSubscriptionInfo(); |
| 98 | 103 | ||
| 99 | // Register callbacks | 104 | // Register callbacks |
| 100 | Subscriber.RegisterStatusMessageCallback(&DisplayStatusMessage); | 105 | Subscriber->RegisterStatusMessageCallback(&DisplayStatusMessage); |
| 101 | Subscriber.RegisterErrorMessageCallback(&DisplayErrorMessage); | 106 | Subscriber->RegisterErrorMessageCallback(&DisplayErrorMessage); |
| 102 | Subscriber.RegisterNewMeasurementsCallback(&ProcessMeasurements); | 107 | Subscriber->RegisterNewMeasurementsCallback(&ProcessMeasurements); |
| 103 | 108 | ||
| 104 | cout << endl << "Connecting to " << hostname << ":" << port << "..." << endl << endl; | 109 | cout << endl << "Connecting to " << hostname << ":" << port << "..." << endl << endl; |
| 105 | 110 | ||
| 106 | // Connect and subscribe to publisher | 111 | // Connect and subscribe to publisher |
| 107 | if (connector.Connect(Subscriber, Info)) | 112 | if (connector.Connect(*Subscriber, Info)) |
| 108 | { | 113 | { |
| 109 | cout << "Connected! Subscribing to data..." << endl << endl; | 114 | cout << "Connected! Subscribing to data..." << endl << endl; |
| 110 | Subscriber.Subscribe(); | 115 | Subscriber->Subscribe(); |
| 111 | } | 116 | } |
| 112 | else | 117 | else |
| 113 | { | 118 | { |
| @@ -131,14 +136,14 @@ SubscriptionInfo CreateSubscriptionInfo() · 17 unmodified lines | |||
| 131 | info.UseLocalClockAsRealTime = false; | 136 | info.UseLocalClockAsRealTime = false; |
| 132 | info.UseMillisecondResolution = true; | 137 | info.UseMillisecondResolution = true; |
| 133 | 138 | ||
| 134 | // This controls the downsampling time, in seconds | 139 | // This controls the down-sampling time, in seconds |
| 135 | info.Throttled = true; | 140 | info.Throttled = true; |
| 136 | info.LagTime = 1.0; | 141 | info.LagTime = 1.0; |
| 137 | 142 | ||
| 138 | return info; | 143 | return info; |
| 139 | } | 144 | } |
| 140 | 145 | ||
| 141 | void SetupSubscriberConnector(SubscriberConnector& connector, string hostname, uint16_t port) | 146 | void SetupSubscriberConnector(SubscriberConnector& connector, const string& hostname, uint16_t port) |
| 142 | { | 147 | { |
| 143 | // SubscriberConnector is another helper object which allows the | 148 | // SubscriberConnector is another helper object which allows the |
| 144 | // user to modify settings for auto-reconnects and retry cycles. | 149 | // user to modify settings for auto-reconnects and retry cycles. |