Classes for client events management.
/**
* Example of a client using the TANGO events Api
*/
import fr.esrf.Tango.*;
import fr.esrf.TangoDs.*;
import fr.esrf.TangoApi.*;
import fr.esrf.TangoApi.events*;
public class TestEvents
{
public TestEvents(String devname) throws DevFailed
{
// Subscribe to a change event
TangoEventsAdapter event_supplier = new TangoEventsAdapter(devname);
PositionEventListener listener = new PositionEventListener();
event_supplier.addTangoChangeListener(listener, "Position", new String[0]);
}
public static void main (String[] args)
{
String devname = "stepper/motor/1";
TestEvents client;
try
{
client = new TestEvents(devname);
}
catch(DevFailed e)
{
Except.print_exception(e);
}
}
// Position event listener
//--------------------------------
class PositionEventListener implements ITangoChangeListener
{
public void change(TangoChangeEvent event)
{
// Get attribute device name
TangoChange tc = (TangoChange)event.getSource();
String devname = tc.getEventSupplier().name();
try
{
// Get attribute and extract value
DeviceAttribute attr = event.getValue();
short value = attr.extractShort();
System.out.println("Position changed on " + devname + ": " + value);
}
catch (DevFailed e)
{
// Check if heart beat
if (e.errors[0].reason.equals("API_EventTimeout"))
System.out.println(devname + " : API_EventTimeout");
else
fr.esrf.TangoDs.Except.print_exception(e);
}
}
}
}