History

TimeSeriesPlatformLibrary: Updated samples to control DataSubscriber lifetimes within main function to accommodate desired order-of-operations for standard function pointer destruction.

J. Ritchie Carroll committed 7 years ago

Commit 5bc9e1f1 parent b1a5c818 files · +66 −36Browse files

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

Unified · Split

Source/Libraries/TimeSeriesPlatformLibrary/Samples/AverageFrequencyCalculator.cpp+18−13
@@ -34,11 +34,11 @@ using namespace GSF; · 33 unmodified lines
3434 using namespace GSF::TimeSeries;
3535 using namespace GSF::TimeSeries::Transport;
3636
37−DataSubscriber Subscriber;
37+DataSubscriber* Subscriber;
3838 SubscriptionInfo Info;
3939
4040 // 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);
4242 SubscriptionInfo CreateSubscriptionInfo();
4343
4444 // Handlers for subscriber callbacks.
@@ -48,7 +48,7 @@ void DisplayStatusMessage(DataSubscriber* source, const string& message); · 3 unmodified lines
4848 void DisplayErrorMessage(DataSubscriber* source, const string& message);
4949
5050 // Runs the subscriber.
51−void RunSubscriber(string hostname, uint16_t port);
51+void RunSubscriber(const string& hostname, uint16_t port);
5252
5353 // Sample application to demonstrate average frequency calculation using the subscriber API.
5454 int main(int argc, char* argv[])
@@ -69,6 +69,9 @@ int main(int argc, char* argv[]) · 14 unmodified lines
6969 hostname = argv[1];
7070 stringstream(argv[2]) >> port;
7171
72+ // Maintain the life-time of DataSubscriber within main
73+ Subscriber = new DataSubscriber();
74+
7275 // Run the subscriber.
7376 RunSubscriber(hostname, port);
7477
@@ -77,9 +80,11 @@ int main(int argc, char* argv[]) · 2 unmodified lines
7780 getline(cin, line);
7881
7982 // Disconnect the subscriber to stop background threads.
80− Subscriber.Disconnect();
83+ Subscriber->Disconnect();
8184 cout << "Disconnected." << endl;
8285
86+ delete Subscriber;
87+
8388 return 0;
8489 }
8590
@@ -88,26 +93,26 @@ int main(int argc, char* argv[]) · 2 unmodified lines
8893 // - Register callbacks
8994 // - Connect to publisher
9095 // - Subscribe
91−void RunSubscriber(string hostname, uint16_t port)
96+void RunSubscriber(const string& hostname, uint16_t port)
9297 {
93− SubscriberConnector& connector = Subscriber.GetSubscriberConnector();
98+ SubscriberConnector& connector = Subscriber->GetSubscriberConnector();
9499
95100 // Set up helper objects
96101 SetupSubscriberConnector(connector, hostname, port);
97102 Info = CreateSubscriptionInfo();
98103
99104 // Register callbacks
100− Subscriber.RegisterStatusMessageCallback(&DisplayStatusMessage);
101− Subscriber.RegisterErrorMessageCallback(&DisplayErrorMessage);
102− Subscriber.RegisterNewMeasurementsCallback(&ProcessMeasurements);
105+ Subscriber->RegisterStatusMessageCallback(&DisplayStatusMessage);
106+ Subscriber->RegisterErrorMessageCallback(&DisplayErrorMessage);
107+ Subscriber->RegisterNewMeasurementsCallback(&ProcessMeasurements);
103108
104109 cout << endl << "Connecting to " << hostname << ":" << port << "..." << endl << endl;
105110
106111 // Connect and subscribe to publisher
107− if (connector.Connect(Subscriber, Info))
112+ if (connector.Connect(*Subscriber, Info))
108113 {
109114 cout << "Connected! Subscribing to data..." << endl << endl;
110− Subscriber.Subscribe();
115+ Subscriber->Subscribe();
111116 }
112117 else
113118 {
@@ -131,14 +136,14 @@ SubscriptionInfo CreateSubscriptionInfo() · 17 unmodified lines
131136 info.UseLocalClockAsRealTime = false;
132137 info.UseMillisecondResolution = true;
133138
134− // This controls the downsampling time, in seconds
139+ // This controls the down-sampling time, in seconds
135140 info.Throttled = true;
136141 info.LagTime = 1.0;
137142
138143 return info;
139144 }
140145
141−void SetupSubscriberConnector(SubscriberConnector& connector, string hostname, uint16_t port)
146+void SetupSubscriberConnector(SubscriberConnector& connector, const string& hostname, uint16_t port)
142147 {
143148 // SubscriberConnector is another helper object which allows the
144149 // user to modify settings for auto-reconnects and retry cycles.

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