Implemented Queue size limiting.
The whole server package structure has been changed. Old Package: uk.ac.ukc.iscream.* New Package: uk.org.iscream.*
Of course, being my usual sensible self, I potentially had a situation where by I would log to the Logger than the Logger isn't running. Clever eh ? :)
We weren't grabbing a ReferenceManager reference until startup, although there is no reason (unlike the Logger) why we can't grab it on construction.
New dependency checking. The old method was to attempt to start a Component, and if it failed, it probably had a depdency problem. The approach now is to ask the Component to perform a dependency check first, then if this suceeds, have a go at actually starting it up. The actual dependency check is a bit neater and more precise than before, and should be much more fool proof. The order the components are specified in the default.properties file is now irrelevant, although the "correct" order would certainly increase booting time.
Modified to use the ConfigurationProxy. Also took the opportunity to fix some of the issues with TCP communicates - specifically checking for nulls. This makes the configuration more dynamic, but do note that the TCP/UDP ports are only set on startup. This is because it would require lots of extra work to "change" the ports that the Filter is bound to on the fly.
now only uses the reference manager on calls to start()
Modification to the Queue system; - interval of monitor is now configurable. - attempt to identify each Queue better, although this is still hard.
We now monitor the Queue here every 60 seconds.
General tidy up, specifically focussing on the verbosity of logging messages.
A tidy up of the configuration getting section.
Changes to reflect move of Component, ComponentStartException, and the ReferenceManager from util to componentmanager.
A structural change to the Filter. The old setup looked like this; UDPReader ------> FilterThread (thread) --> (parent) TCPReader ------> FilterThread (thread) --> (parent) FilterServant --> FilterThread (thread) --> (parent) Seeing this from a threaded point of view, each time a packet came in (through whatever means - UDP, TCP or CORBA), a FilterThread instance was created to deal with it. If the link to the parent was slow this resulting in a build-up of FilterThreads all waiting to talk to the parent - and there is only one actual parent object, with a synchronised thread, so they have to queue up anyway. As a result of this, the following change has been made. UDPReader -------\ TCPReader ----------> Queue (single) >-- FilterThread --> (parent) FilterServant ---/ In this setup, each of the three objects that generate packets only see the single instance of a Queue. They all add their data to this Queue, and then carry on with the task of listening. The FilterThread (having it's role changed slightly) now acts as a consumer of the Queue, in that it grabs data from the Queue and deals with passing it on to the parent. This setup should be more efficient in the long run, especially under a high load situation. The only problem could be the Queue growing to an unlimited size, but this is a Queue design issue.
fixed the name problem when using the static, now only uses the static
componenterized the filter and tidied all child classes, no all conform to toString standard
removed imports which are no longer needed due to use of ReferenceManager
Changed package structure uk.ac.ukc.iscream.refman and xml -> uk.ac.ukc.iscream.util
Tidied up all the code Used ReferenceManager to provide all ORB services
Update for package move. Fixed bug in constructors.
Made changes to fit into the new package structure. Also made all classes, namely the UDPReader and FilterThread, conform to the Template class specification.
We don't really need this test line anymore.
Missed a few references to port.
Changed the configuration settings so that it can receive seperate TCP and UDP ports. Also added the TCPReader.
Corrected the message contained within the usage() function.
Implemented all the functionality required to make the "basic" Filter work in the correct manner.
Had to jiggle a few bits around. It's going to take a bit of sorting to get this arranged correctly, but we need the FilterManager finished first.
Incorporated the UDPReader thread.
Tided up the config a bit, so it actually gets a port value now.
Added a few more bits and comments. It still needs to be sorted out as other parts of the system are polished off.
Renamed from Filter.java. Main method for the Filter.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.