Presentation is loading. Please wait.

Presentation is loading. Please wait.

The TANGO Events zDefinition of an event zAPI for events zArchitecture of events zStatus of events.

Similar presentations


Presentation on theme: "The TANGO Events zDefinition of an event zAPI for events zArchitecture of events zStatus of events."— Presentation transcript:

1 The TANGO Events zDefinition of an event zAPI for events zArchitecture of events zStatus of events

2 What is an event ? zAn event is a device attribute which is sent to all interested clients when a trigger occurs zEvents originate in device servers zEvents finish up in clients zIn between is the event system supplierconsume event system clientdevice server

3 What does CORBA provide ? zone-way invocation ycould be used to build an event service despite unreliability zDynamic Invocation Interface ysimilar to above zThe Event Service ynot suitable for a large system, all clients receive all events zThe Notification Service yscaleable, clients can filter, api not simple

4 The winner is ? zomniNotify zthe omniORB implementation of the Notification Service zLGPL licence i.e.free ! zmultiple copies can be run to improve throughput zproblem with Java - try compiling Notification idl with Jacorb zOBNotify too expensive - 30 000 euros for 100 runtime licences for 5 years

5 Event design considerations zOne event channel per device zSend TANGO events as structured data zFilter on attribute name and reason zOne notification daemon per host zEvents supported : yON_ALARM (same as attribute alarm) yON_CHANGE (delta defined by server) yPERIODIC_UPDATE (same period for all clients) zEvents are fired only if there are clients who have subscribed

6 Event API zDeviceProxy::subscribe_event(string attribute, string reason, Callback callback, DevVarLongStringArray qos) zDeviceProxy::unsubscribe_event( string attribute, string reason, Callback callback); zclass Callback { virtual event_pushed(EventRead *);} zclass EventRead { DeviceProxy device, string attribute, string reason, DeviceAttribute argout;} zUtil::set_event_model(); zUtil::event_pull(); zDevice::register_event( string attribute, string reason); zDevice::push(string attribute, string reason, AttributeValue event);

7 Event example zMycallback::event_pushed(EventRead *myevent) { DeviceAttribute myattr; myevent->argout >> myattr; cout name > mydata; cout << value : ” << mydata << endl; } mydevice.subscribe_event(“current”,”ON_CHANGE”, Mycallback, myqos); Util::event_pull();

8 Event data type zTANGO events to be sent as structured event data : yevent.header.fixed_header.event_type.domain_name = “sr/d-ct/1”; yevent.header.fixed_header.event_type.type_name = “current”; yevent_header.variable_header.length(0); yevent.filterable_data[0].name = “reason”; yevent.filterable_data[0].value <<= reason; yevent.remainder_of_body << attribute_data;

9 Event notification service zmodifications : yremove Name Service yIOR to be stored in the TANGO database yclient to connect via TANGO database

10 Event system breakdowns zA heartbeat will be used to detect breakdowns in ythe notification daemon and ydevice server(s) zBreakdowns will be signalled to the client as an exception ywhen a pull() is done or yby calling a special callback routine in the case of the automatic polling model

11 Event persistance zEvent will be made permanent via the database zServers will store all active events zClients will not store any information

12 Event timescale zHOPELESSLY BEHIND ! zGood excuse could be because of Orbacus but actually is because of beamline activities + summer break zVolunteers gladly accepted ! z29/11/2002 - prototype of event system in device servers using the new port of TANGO to omniORB


Download ppt "The TANGO Events zDefinition of an event zAPI for events zArchitecture of events zStatus of events."

Similar presentations


Ads by Google