History

TimeSeriesPlatformLibrary: Simplified temporal subscription connection processing.

J. Ritchie Carroll committed 7 years ago

Commit eef23ad1 parent ee9de0113 files · +470 −127Browse files

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

Unified · Split

Source/Libraries/TimeSeriesPlatformLibrary/Samples/AdvancedPublish.cpp+22−16
@@ -48,8 +48,9 @@ void DisplayClientConnected(DataPublisher* source, const SubscriberConnectionPtr · 47 unmodified lines
4848 void DisplayClientDisconnected(DataPublisher* source, const SubscriberConnectionPtr& connection);
4949 void DisplayStatusMessage(DataPublisher* source, const string& message);
5050 void DisplayErrorMessage(DataPublisher* source, const string& message);
51−void HandleTemporalSubscriptionRequested(DataPublisher* source, const SubscriberConnectionPtr& connection);
52−void HandleProcessingIntervalChangeRequested(DataPublisher* source, const SubscriberConnectionPtr& connection);
51+void HandleTemporalSubscriptionRequested(DataPublisher* source, const TemporalSubscriberConnectionPtr& connection);
52+void HandleTemporalProcessingIntervalChangeRequested(DataPublisher* source, const TemporalSubscriberConnectionPtr& connection);
53+void HandleTemporalSubscriptionCanceled(DataPublisher* source, const TemporalSubscriberConnectionPtr& connection);
5354
5455 void LoadMetadataToPublish(vector<DeviceMetadataPtr>& deviceMetadata, vector<MeasurementMetadataPtr>& measurementMetadata, vector<PhasorMetadataPtr>& phasorMetadata)
5556 {
@@ -222,7 +223,8 @@ bool RunPublisher(uint16_t port, bool genHistory) · 166 unmodified lines
222223 Publisher->RegisterStatusMessageCallback(&DisplayStatusMessage);
223224 Publisher->RegisterErrorMessageCallback(&DisplayErrorMessage);
224225 Publisher->RegisterTemporalSubscriptionRequestedCallback(&HandleTemporalSubscriptionRequested);
225− Publisher->RegisterProcessingIntervalChangeRequestedCallback(&HandleProcessingIntervalChangeRequested);
226+ Publisher->RegisterTemporalProcessingIntervalChangeRequestedCallback(&HandleTemporalProcessingIntervalChangeRequested);
227+ Publisher->RegisterTemporalSubscriptionCanceledCallback(&HandleTemporalSubscriptionCanceled);
226228
227229 // Enable temporal subscription support - this allows historical data requests as well as real-time
228230 Publisher->SetSupportsTemporalSubscriptions(true);
@@ -333,28 +335,18 @@ void DisplayErrorMessage(DataPublisher* source, const string& message) · 104 unmodified lines
333335 cerr << message << endl << endl;
334336 }
335337
336−void HandleTemporalSubscriptionRequested(DataPublisher* source, const SubscriberConnectionPtr& connection)
338+void HandleTemporalSubscriptionRequested(DataPublisher* source, const TemporalSubscriberConnectionPtr& connection)
337339 {
338340 cout << "Client \"" << connection->GetConnectionID() << "\" with subscriber ID " << ToString(connection->GetSubscriberID()) << " has requested a temporal subscription starting at " << ToString(connection->GetStartTimeConstraint()) << endl << endl;
339341
340− TemporalSubscriberPtr temporalSubscription = NewSharedPtr<TemporalSubscriber>(connection, [](const GSF::Guid& instanceID)
341− {
342− Thread([instanceID]{
343− TemporalSubscriptionsLock.lock();
344−
345− if (TemporalSubscriptions.find(instanceID) != TemporalSubscriptions.end())
346− TemporalSubscriptions.erase(instanceID);
347−
348− TemporalSubscriptionsLock.unlock();
349− });
350− });
342+ TemporalSubscriberPtr temporalSubscription = NewSharedPtr<TemporalSubscriber>(connection);
351343
352344 TemporalSubscriptionsLock.lock();
353345 TemporalSubscriptions.insert_or_assign(connection->GetInstanceID(), temporalSubscription);
354346 TemporalSubscriptionsLock.unlock();
355347 }
356348
357−void HandleProcessingIntervalChangeRequested(DataPublisher* source, const SubscriberConnectionPtr& connection)
349+void HandleTemporalProcessingIntervalChangeRequested(DataPublisher* source, const TemporalSubscriberConnectionPtr& connection)
358350 {
359351 static const TemporalSubscriberPtr nullTemporalSubscription = nullptr;
360352 const GSF::Guid& instanceID = connection->GetInstanceID();
@@ -371,3 +363,17 @@ void HandleProcessingIntervalChangeRequested(DataPublisher* source, const Subscr · 10 unmodified lines
371363 if (temporalSubscription != nullTemporalSubscription)
372364 cout << "Client \"" << connection->GetConnectionID() << "\" with subscriber ID " << ToString(connection->GetSubscriberID()) << " has requested to change its temporal processing interval to " << ToString(processingInterval) << "ms" << endl << endl;
373365 }
366+
367+void HandleTemporalSubscriptionCanceled(DataPublisher* source, const TemporalSubscriberConnectionPtr& connection)
368+{
369+ const GSF::Guid& instanceID = connection->GetInstanceID();
370+
371+ Thread([instanceID]{
372+ TemporalSubscriptionsLock.lock();
373+
374+ if (TemporalSubscriptions.find(instanceID) != TemporalSubscriptions.end())
375+ TemporalSubscriptions.erase(instanceID);
376+
377+ TemporalSubscriptionsLock.unlock();
378+ });
379+}

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