| 1 |
Minutes of meeting 28/11/00 @ 1pm |
| 2 |
Location: Eliot College, E3E room 8 |
| 3 |
|
| 4 |
Present: pjm2, tdb1 |
| 5 |
Absent: None |
| 6 |
|
| 7 |
A small sub-meeting was held between Paul and Tim to discuss |
| 8 |
the plugin structure in the Filter, and some database design |
| 9 |
issues. |
| 10 |
|
| 11 |
First to be discussed was the Filter plugin system. Paul has |
| 12 |
agreed to implement this setup. The following design was put |
| 13 |
forward, any objections should be noted at the next meeting. |
| 14 |
|
| 15 |
A PluginManager will be in charge of handling the individual |
| 16 |
plugins, and will provide a single point of contact the the |
| 17 |
Filter system. The PluginManager will be constructed in the |
| 18 |
main method of the Filter, and a single reference passed to |
| 19 |
the three subcomponents - the FilterServant, UDPReader and |
| 20 |
TCPReader. These three in turn will pass the reference on to |
| 21 |
the FilterThread they create. |
| 22 |
|
| 23 |
The FilterThread is currently the final point in the Filter |
| 24 |
that has the data. At present it just passes the original |
| 25 |
XML string on to it's parent. The PluginManager will be used |
| 26 |
just before this event occurs. It will provide a single |
| 27 |
method which can be called by the FilterThread. This method |
| 28 |
will take an XMLPacket object and return a boolean. The |
| 29 |
FilterThread will use this boolean value to decide whether |
| 30 |
to send the XML on to it's parent. |
| 31 |
|
| 32 |
The idea behind having this single PluginManager object is |
| 33 |
that it will save recreating instances of the actual plugins |
| 34 |
each time a data item arrives. It might provide a method to |
| 35 |
reinitialise itself, but this has not been finalised. |
| 36 |
|
| 37 |
The actual plugins themselves will implement a single Java |
| 38 |
interface. The PluginManager will hold an array of these |
| 39 |
objects which it will pass the XMLPacket through in order. |
| 40 |
These plugins will reside in a subdirectory, hopefully, and |
| 41 |
will either all be loaded, or be configured in the central |
| 42 |
ConfigurationManager. |
| 43 |
|
| 44 |
The main issue with this is concurrency. Obviously only |
| 45 |
having one instance of the PluginManager could cause |
| 46 |
problems with three threads trying to call it. This should |
| 47 |
be discussed with the group, as threads can be a tricky |
| 48 |
thing to get absolutely right. |
| 49 |
|
| 50 |
Other issues discussed include the database design. Paul has |
| 51 |
produced a design for the database tables, which is |
| 52 |
available in CVS for the group to examine. Some issues arose |
| 53 |
with the SQL insertion routine, and whether or not a lock |
| 54 |
would be required. This should be investigated further. |
| 55 |
|
| 56 |
Paul also agreed to look into the Java side of the database |
| 57 |
system. This would be a single module that would link in to |
| 58 |
the root filter. The root filter would pass the raw XML |
| 59 |
strings into this module, which would in turn decode them |
| 60 |
and store them in the database. |
| 61 |
|
| 62 |
This brought about another issue, namely the XML decoding |
| 63 |
classes. These are currently used in both the filter and |
| 64 |
root filter. It was decided that they would not be needed in |
| 65 |
the root filter as it would just pass the raw XML data. This |
| 66 |
only leaves one point they're needed, at present. However, |
| 67 |
this will change as the database interface will require them |
| 68 |
and no doubt the client side will too. It was suggested that |
| 69 |
these should be moved into a seperate package that could be |
| 70 |
used by the whole system. |
| 71 |
|
| 72 |
Packaging of classes is an issue which should be discussed |
| 73 |
at the next meeting, and then put in place. |
| 74 |
|
| 75 |
Other group members should have read these minutes prior to |
| 76 |
the next meeting if possible. |