Catch a lot of old URL's and update them. Also remove a couple of old files that aren't used.
Fairly major commit. This will break the current version of ihost, but this had to be done really to give Pete something to test the new ihost against. The main change here is removal of the TCP Heartbeat functionality from the filter. This meant the following features stopped working :- - Heartbeat testing - Configuration checking - Service checks The heartbeat testing, specifically the monitor, now looks at the presence of UDP packets instead. Before it just looked for the presence of a TCP heartbeat packet, so the change their is fairly negligible. Of course this means heartbeat testing now relies on the UDP working... but I don't see this as a problem. Configuration checking has been repositioned in to the filtermanager. This is a backwards compatible change - the filtermanager should still perform as it should for older hosts. But now there's an extra command to check the configuration is up-to-date, with a similar format to the old TCP protocol in the filter. (although we may optimise this soon) The service checks are broken. This isn't a major issue for us as they were pretty useless in the first place. The concept is good, but the checks are just far too primitive. I expect at some point I'll work on a seperate component that just monitors services, which will replace this function. Further changes in the server include removal of the key checking code, as this relied on a bolt on to the TCP heartbeat protocol to ship the key. This got more akward than originally planned, so I'm happy to drop the idea. In the long term we hope to replace this with a public key systems for signing and even encryption. Finally, general tidy up to remove other bits of code that check for TCP heartbeat packets when they don't need to any more.
Changed the server to use the external util package. Quite a minor change, but does affect a lot of files.
Fix for upgrade to Jacorb 1.4.1. It's our fault actually, we've not been correctly using the names when binding to the Naming Service. This needs to be fixed properly at some point, but for now I've changed changed the code so it "means" the same as it did before the upgrade.
Added URL to GPL headers.
i-scream is now licensed under the GPL. I've added the GPL headers to every source file, and put a full copy of the license in the appropriate places. I think I've covered everything. This is going to be a mad commit ;)
Split the CORBA side of the filter in two. The Filter interface still does the receiving of data, just like it used to. This can optionally be turned off in the configuration if required. The new interface, FilterInfo, is used to provide information (host and ports) to other parts of the server about the Filter - namely the FilterManager. This split has been done so that the data receiving part of the Filter can be turned off, without breaking the FilterManager.
Filter will now request the config "Filter.<name>", as opposed to just "<name>" which it did before. The documentation suggests it should do what it does now, and this seems the most sane thing to do.
New options added to the configuration to permit activiation of individual input feeds in the Filter. You could, for example, disable the CORBA feed on all filters that have no children.
Major change in the java package naming. This has been held off for some time now, but it really needed doing. The future packaging of all i-scream products will be; uk.org.iscream.<product>.<subpart>.* In the case of the central monitoring system server this will be; uk.org.iscream.cms.server.* The whole server has been changed to follow this structure, and tested to a smallish extent. Further changes in other parts of the CMS will follow.
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.