This is a document for developers who plan to create their own implementation, either of a Bionanny service, or of a Bionanny client. Below, there is also a remark how to write your own Monitor (Interceptor).
The development can be done in any language - because we are in the world of the platform-independent Web Services - nevertheless two languages are more supported in the Bionanny project: Java and Perl.
The main part of the Bionanny API is an interface to a Bionanny Web service. As for any Web Service, this interface can be described using a WSDL description.
Because a WSDL description is not too good for human reading, we provide the same API as a Java API interface, represented by org.bionanny.shared.Bionanny et al.
The current Bionanny implementation uses also few other general Java tools whose sources can be downloaded separately. For using their binaries, however, you do not need to download anything, the Ant build will take care about it (the libraries are named alltools.jar and alltools2.jar).
For writing your own Monitor, you need to extend Axis BasicHandler class. The best way is perhaps to start with the class org.bionanny.server.MonitorHandler and use it as a template.
Well, if you plan to develop your own Perl client, you can, of course, program against the Bionanny Web Service API that was just described above. However, you can also use supporting packages Bionanny et al. that hide all SOAP/HTTP communication and gives you a Perl version of the Bionanny functionality. At the moment, the Perl API is simplified because it contains only getting data back but not logging them - but that can change fast.
The Perl API is written in potential extensions in mind. The main two modules are the Bionanny::Listener that gets data from a Bionanny service, and the Bionanny::Report that display data in various formats.
Both these modules depends on the lower-level modules that are the real workers knowing about various access methods/protocols and about various data formats. For example, the SOAP communication is done by Bionanny::Access::soap - which may be at the moment the only protocol-aware module but it may change in the future (so we may have also a non-Web-Service access to Bionanny data). Another example is the Bionanny::Report::graphs module that knows how to display monitored data graphically.
Here are all the modules...
... and their documentation: