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/AdvancedSubscribe.cpp (1 of 8 files). Show all

Unified · Split

Source/Libraries/TimeSeriesPlatformLibrary/Samples/AdvancedSubscribe.cpp+17−12
@@ -33,11 +33,11 @@ using namespace GSF; · 32 unmodified lines
3333 using namespace GSF::TimeSeries;
3434 using namespace GSF::TimeSeries::Transport;
3535
36−DataSubscriber Subscriber;
36+DataSubscriber* Subscriber;
3737 SubscriptionInfo Info;
3838
3939 // Create helper objects for subscription.
40−void SetupSubscriberConnector(SubscriberConnector& connector, string hostname, uint16_t port);
40+void SetupSubscriberConnector(SubscriberConnector& connector, const string& hostname, uint16_t port);
4141 SubscriptionInfo CreateSubscriptionInfo();
4242
4343 // Handlers for subscriber callbacks.
@@ -47,7 +47,7 @@ void DisplayStatusMessage(DataSubscriber* source, const string& message); · 3 unmodified lines
4747 void DisplayErrorMessage(DataSubscriber* source, const string& message);
4848
4949 // Runs the subscriber.
50−void RunSubscriber(string hostname, uint16_t port);
50+void RunSubscriber(const string& hostname, uint16_t port);
5151
5252 // Sample application to demonstrate the more advanced use of the subscriber API.
5353 //
@@ -77,6 +77,9 @@ int main(int argc, char* argv[]) · 23 unmodified lines
7777 hostname = argv[1];
7878 stringstream(argv[2]) >> port;
7979
80+ // Maintain the life-time of DataSubscriber within main
81+ Subscriber = new DataSubscriber();
82+
8083 // Run the subscriber.
8184 RunSubscriber(hostname, port);
8285
@@ -85,9 +88,11 @@ int main(int argc, char* argv[]) · 2 unmodified lines
8588 getline(cin, line);
8689
8790 // Disconnect the subscriber to stop background threads.
88− Subscriber.Disconnect();
91+ Subscriber->Disconnect();
8992 cout << "Disconnected." << endl;
9093
94+ delete Subscriber;
95+
9196 return 0;
9297 }
9398
@@ -96,26 +101,26 @@ int main(int argc, char* argv[]) · 2 unmodified lines
96101 // - Register callbacks
97102 // - Connect to publisher
98103 // - Subscribe
99−void RunSubscriber(string hostname, uint16_t port)
104+void RunSubscriber(const string& hostname, uint16_t port)
100105 {
101− SubscriberConnector& connector = Subscriber.GetSubscriberConnector();
106+ SubscriberConnector& connector = Subscriber->GetSubscriberConnector();
102107
103108 // Set up helper objects
104109 SetupSubscriberConnector(connector, hostname, port);
105110 Info = CreateSubscriptionInfo();
106111
107112 // Register callbacks
108− Subscriber.RegisterStatusMessageCallback(&DisplayStatusMessage);
109− Subscriber.RegisterErrorMessageCallback(&DisplayErrorMessage);
110− Subscriber.RegisterNewMeasurementsCallback(&ProcessMeasurements);
113+ Subscriber->RegisterStatusMessageCallback(&DisplayStatusMessage);
114+ Subscriber->RegisterErrorMessageCallback(&DisplayErrorMessage);
115+ Subscriber->RegisterNewMeasurementsCallback(&ProcessMeasurements);
111116
112117 cout << endl << "Connecting to " << hostname << ":" << port << "..." << endl << endl;
113118
114119 // Connect and subscribe to publisher
115− if (connector.Connect(Subscriber, Info))
120+ if (connector.Connect(*Subscriber, Info))
116121 {
117122 cout << "Connected! Subscribing to data..." << endl << endl;
118− Subscriber.Subscribe();
123+ Subscriber->Subscribe();
119124 }
120125 else
121126 {
@@ -169,7 +174,7 @@ SubscriptionInfo CreateSubscriptionInfo() · 47 unmodified lines
169174 return info;
170175 }
171176
172−void SetupSubscriberConnector(SubscriberConnector& connector, string hostname, uint16_t port)
177+void SetupSubscriberConnector(SubscriberConnector& connector, const string& hostname, uint16_t port)
173178 {
174179 // SubscriberConnector is another helper object which allows the
175180 // 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