Event Handlers¶
Comet aims to server as a fairly complete and fully-functional broker. However, it is anticipated that those interested in subscribing to VOEvent feeds may have many and varied requirements: it is impossible to take account of all of them. For these users, Comet serves as a template and development platform, and they are encouraged to develop it further to meet their needs.
One way in which the Comet’s capabilties may be developed is by providing
“event handlers”: Python code which is executed when a new event is received.
In order to make use of this facility, the developer should be familiar with
Twisted’s component architecture.
Handlers may then be written to follow Comet’s comet.icomet.IHandler
interface, and then installed into the comet/plugins directory
. A simple
example is provided in comet.plugins.eventprinter
. Note that the
plugin class defines a __call__()
method which is invoked with the event
being received as its argument. To be more specific, __call__()
is handed
an instance of comet.utility.xml.xml_document
.
Each handler must provide a name attribute (e.g. print-event
). The user
may specify that a particular plugin be loaded by specifying its name as a
command line argument when invoking comet (--print-event
).
In some cases, a plugin requires additional configuration. This can be
provided through the use of command line arguments. In this case, the plugin
must also implement the comet.icomet.IHasOptions
interface. This
involves two further methods: get_options()
, which returns a list of
options which are accepted, and set_option()
, which provides a means
for setting those options. Options declared in plugins will automatically be
added to the command line options of the Comet broker.
Again, an example of how such a plugin with options may be implemented is
likely the best documentation: fortunately, one is available in the form of
comet.plugins.eventwriter
.