NetAcquire Corporation Logo Image Image Image Image Image Image Image Image
NetAcquire Corporation Logo Home Search Products News Services Careers Support Contact

NetAcquire Publish/Subscribe C++ Notification Example

Remote temperature data acquisition 

Publisher and Subscriber Hardware Diagram

The example below uses the event-driven variant of the NetAcquire Publish/Subscribe API. Instead of explicitly calling the subscription to obtain its latest value as was done in the simpler examples, here the flow of control is reversed and the subscription calls a user-defined callback method whenever the subscription's value changes.


  #include <iostream>
  #include "naps.hpp"

  // callback object
  class TemperatureListener : public NA_SubscriptionListener
  {
  public:
    virtual void subscriptionReceived(const NA_SubscriptionEvent& event,
                                      NA_Subscription& sourceSubscription)
    {
      cout << event.getTimestamp() << ": " << event.asReal32 << endl;
    }
  };

  int main()
  {
    TemperatureListener listener;
    NA_Connection netacquire1("na1");
    NA_Subscription reactor_temperature(netacquire1, "reactor_temperature");
    reactor_temperature.addListener(&listener);
    cin.get(); // wait until user presses <Enter>
  }

The user declares a customized callback class, here called TemperatureListener, as a subclass of the abstract class NA_SubscriptionListener, and overrides the subscriptionReceived method.

Note, how the callback method accesses the event's timestamp. Note, also, that an explicit accessor is used to retrieve the subscription's value in the form of a 32 bit float. Instead, one can also insert the event directly into an output stream, in which case the implementation picks the most suitable type.

In the main function an instance of the callback class is instantiated. In the second and third lines of main objects that represent a data publisher and a specific data subscription are created exactly as in the simpler examples. Then the previously created callback object, here called listener, is registered with the subscription. From this point on the subscriptionReceived method of this object will be called whenever the physical quantity that corresponds to the subscription changes. The application's main thread can now continue with other chores, in this example it simply waits for the user to press the <Enter> key.


Home | Search | Products | News | Services | Careers | Support | Contact | Telemetry | Range/Radar | Avionics
Aerospace Test | Communication | Remote Monitoring | Industrial Automation | Extreme | Protocol Conversion
Simulation | Hardware Overview | Analog I/O | Digital I/O | GPIB/IEEE 488 | SpaceWire | FPGA
Source Selection
| High Availability | Software Overview | WWW | Storage | Publish/Subscribe
Java | Windows | Data Flow | Time | Extensions | Decom | CCSDS | Mux/Demux | Demos



Last modified 12/2/2016
Copyright 1996 - 2016
NetAcquire Corporation
All rights reserved.
webmaster@netacquire.com