History

TimeSeriesPlatformLibrary: Added temporal support options to DataPublisher interfaces.

J. Ritchie Carroll committed 7 years ago

Commit 5c5b4061 parent 04505f228 files · +603 −300Browse files

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

Unified · Split

Source/Libraries/TimeSeriesPlatformLibrary/Samples/AdvancedPublish.cpp+35−11
@@ -33,21 +33,23 @@ using namespace GSF::TimeSeries::Transport; · 32 unmodified lines
3333 using namespace GSF::FilterExpressions;
3434
3535 DataPublisherPtr Publisher;
36−TimerPtr PublishTimer;
36+TimerPtr PublishTimer, CompletionTimer;
3737 vector<DeviceMetadataPtr> DevicesToPublish;
3838 vector<MeasurementMetadataPtr> MeasurementsToPublish;
3939 vector<PhasorMetadataPtr> PhasorsToPublish;
4040
4141 bool RunPublisher(uint16_t port);
42−void DisplayClientConnected(DataPublisher* source, const Guid& subscriberID, const string& connectionID);
43−void DisplayClientDisconnected(DataPublisher* source, const Guid& subscriberID, const string& connectionID);
42+void DisplayClientConnected(DataPublisher* source, const SubscriberConnectionPtr& connection);
43+void DisplayClientDisconnected(DataPublisher* source, const SubscriberConnectionPtr& connection);
4444 void DisplayStatusMessage(DataPublisher* source, const string& message);
4545 void DisplayErrorMessage(DataPublisher* source, const string& message);
46+void HandleTemporalSubscriptionRequested(DataPublisher* source, const SubscriberConnectionPtr& connection);
47+void HandleTemporalProcessingIntervalChangeRequested(DataPublisher* source, const SubscriberConnectionPtr& connection);
4648
4749 void LoadMetadataToPublish(vector<DeviceMetadataPtr>& deviceMetadata, vector<MeasurementMetadataPtr>& measurementMetadata, vector<PhasorMetadataPtr>& phasorMetadata)
4850 {
4951 DeviceMetadataPtr device1Metadata = NewSharedPtr<DeviceMetadata>();
50− const DateTime timestamp = UtcNow();
52+ const datetime_t timestamp = UtcNow();
5153
5254 // Add a device
5355 device1Metadata->Name = "Test PMU";
@@ -210,6 +212,11 @@ bool RunPublisher(uint16_t port) · 156 unmodified lines
210212 Publisher->RegisterClientDisconnectedCallback(&DisplayClientDisconnected);
211213 Publisher->RegisterStatusMessageCallback(&DisplayStatusMessage);
212214 Publisher->RegisterErrorMessageCallback(&DisplayErrorMessage);
215+ Publisher->RegisterTemporalSubscriptionRequestedCallback(&HandleTemporalSubscriptionRequested);
216+ Publisher->RegisterTemporalProcessingIntervalChangeRequestedCallback(&HandleTemporalProcessingIntervalChangeRequested);
217+
218+ // Enable temporal subscription support
219+ Publisher->SetSupportsTemporalSubscriptions(true);
213220
214221 // Load metadata to be used for publication
215222 LoadMetadataToPublish(DevicesToPublish, MeasurementsToPublish, PhasorsToPublish);
@@ -285,18 +292,18 @@ bool RunPublisher(uint16_t port) · 69 unmodified lines
285292 return running;
286293 }
287294
288−void DisplayClientConnected(DataPublisher* source, const Guid& subscriberID, const string& connectionID)
295+void DisplayClientConnected(DataPublisher* source, const SubscriberConnectionPtr& connection)
289296 {
290297 cout << ">> New Client Connected:" << endl;
291− cout << " Subscriber ID: " << ToString(subscriberID) << endl;
292− cout << " Connection ID: " << connectionID << endl << endl;
298+ cout << " Subscriber ID: " << ToString(connection->GetSubscriberID()) << endl;
299+ cout << " Connection ID: " << ToString(connection->GetConnectionID()) << endl << endl;
293300 }
294301
295−void DisplayClientDisconnected(DataPublisher* source, const Guid& subscriberID, const string& connectionID)
302+void DisplayClientDisconnected(DataPublisher* source, const SubscriberConnectionPtr& connection)
296303 {
297304 cout << ">> Client Disconnected:" << endl;
298− cout << " Subscriber ID: " << ToString(subscriberID) << endl;
299− cout << " Connection ID: " << connectionID << endl << endl;
305+ cout << " Subscriber ID: " << ToString(connection->GetSubscriberID()) << endl;
306+ cout << " Connection ID: " << ToString(connection->GetConnectionID()) << endl << endl;
300307 }
301308
302309 // Callback which is called to display status messages from the subscriber.
@@ -309,4 +316,21 @@ void DisplayStatusMessage(DataPublisher* source, const string& message) · 6 unmodified lines
309316 void DisplayErrorMessage(DataPublisher* source, const string& message)
310317 {
311318 cerr << message << endl << endl;
312−}
319+}
320+
321+void HandleTemporalSubscriptionRequested(DataPublisher* source, const SubscriberConnectionPtr& connection)
322+{
323+ cout << "Client \"" << connection->GetConnectionID() << "\" with subscriber ID " << ToString(connection->GetSubscriberID()) << " has requested a temporal subscription starting at " << ToString(connection->GetStartTimeConstraint()) << endl << endl;
324+
325+ CompletionTimer = NewSharedPtr<Timer>(1000, [connection](Timer*, void*)
326+ {
327+ connection->CompleteTemporalSubscription();
328+ });
329+
330+ CompletionTimer->Start();
331+}
332+
333+void HandleTemporalProcessingIntervalChangeRequested(DataPublisher* source, const SubscriberConnectionPtr& connection)
334+{
335+ cout << "Client \"" << connection->GetConnectionID() << "\" with subscriber ID " << ToString(connection->GetSubscriberID()) << " has requested to change its temporal processing interval to " << ToString(connection->GetProcessingInterval()) << "ms" << endl << endl;
336+}

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