Roland Häder [Mon, 18 Apr 2011 18:25:40 +0000 (18:25 +0000)]
New singleton-factories introduced:
- Two new registry-based singleton-factories introduced:
+ The FragmenterFactory produces singleton fragmenter instances
+ The ProducerFactory produces singleton producer instance of different types
- Rewritten the code that Base64 encoding is now transparently implemented
around the socket_write/read() functions. So all data is now being
transparently transfered to other peers in Base64 encoding.
- Further renames of the package streamer classes to raw-data streamers
- Minor improvements here and there
- TODOs.txt updated
Roland Häder [Sat, 9 Apr 2011 00:19:09 +0000 (00:19 +0000)]
Added encapsulation:
- Encapsulated adding of entries to the producer's out-going/incoming queue
- Encapsulated checking if the out-going/incoming queue's size has reached a
configurable limit
- Encapsulated initialization (and forced re-init) of both queues
Roland Häder [Tue, 5 Apr 2011 23:39:08 +0000 (23:39 +0000)]
The key producer may produce as twice as keys per second:
- The key producer runs now with an interval delay of 5ms
- Some debug messages/comments updated
Roland Häder [Tue, 5 Apr 2011 23:33:13 +0000 (23:33 +0000)]
Cruncher continued and rewritten to use states:
- States 'init' and 'virgin' introduced
- Needed cruncher parts refactured to use the new states
- Creation of node/cruncher states is now done in factories
- Key producer added which will produce keys if the required state 'virgin' is
beging detected. This producer works without a loop which is recommended for
task-based applications
- A lot other improvements
- TODOs.txt updated
Roland Häder [Sun, 3 Apr 2011 00:57:05 +0000 (00:57 +0000)]
Added all node types, moved iterator class:
- Added all types of (hub/cloud) nodes for easy coding
- Moved key producer iterator class to sub directory
- TODOs.txt updated
Roland Häder [Thu, 31 Mar 2011 01:34:25 +0000 (01:34 +0000)]
Generation of test units and keys continued:
- Database folder for crunher projects added
- Introduced two methods to MessageHelper
- Introduced an iterator for test unit producers to generate keys
- TODOs.txt updated
Roland Häder [Tue, 29 Mar 2011 16:31:30 +0000 (16:31 +0000)]
Swapped code, moved/renamed classes and interfaces:
- Swapped code between TestUnitSource and CryptoRandomUnitMessageHelper, the
helper is now encapsulating and the source is now a source for the helper
- Introduced generic Helper interface to existing helper interfaces (from latest
'core' changes)
- Renamed/moved some classes/interfaces
- TODOs.txt updated
Roland Häder [Tue, 29 Mar 2011 15:55:38 +0000 (15:55 +0000)]
Added more classes (source for anything 'sourced', etc):
- Added some (partly unused) more classes for creating test units
- CryptoRandomMessageHelper is currently unused
- Added factory to create unit source classes
- TODOs.txt updated
Roland Häder [Sat, 26 Mar 2011 17:04:37 +0000 (17:04 +0000)]
Test units continued, XML MIME type worked-around:
- XMLs must have the MIME type "text/plain" in subversion, with
"application/xml" they would be threated as binary files... :-(
- Template engine for cruncher test units basicly finished
- TODOs.txt updated
Roland Häder [Fri, 25 Mar 2011 00:42:17 +0000 (00:42 +0000)]
Continued on test-unit producer, fixed copyright:
- Added an unfinished template engine for the test-unit producer
- Added basic XML templates for test-unit producers
- Fixed copyright line (it was copyrighted to the Ship-Simu developer team)
- TODOs.txt updated
Roland Häder [Tue, 22 Mar 2011 00:16:48 +0000 (00:16 +0000)]
In 'core' introduced XmlTemplateEngineFactory used:
- Rewrite to new XmlTemplateEngineFactory (which saves code where some required
steps could be forgotten)
- Added a method in test unit producer for initialization
- TODOs.txt updated
Roland Häder [Mon, 14 Mar 2011 20:39:55 +0000 (20:39 +0000)]
Generator/helper class for generating test units introduced:
- There is currently a loop in the cruncher class which is not recommended but maybe fine here
Roland Häder [Sat, 12 Mar 2011 00:24:29 +0000 (00:24 +0000)]
A lot new methods/class added and many cleanups:
- Double-quotes converted to single to speed-up things a little
- Wrong BaseconnectionInstance fixed
- New methods introduced to cruncher:
+ doFetchWorkUnits(): To fetch WUs or generate test units
+ enableIsActive/isActive(): To test/set if the cruncher is active
+ initBufferQueues(): To initialize in/out buffer queues
- addExtraCruncherFilters() renamed to addExtraFilters()
- This method has now project-wide a Controller instance as first argument
- Dublicate method call to addExtraFilters() removed which happens in the
rewriting process
- $appInstance renamed to $applicationInstance to have a better naming
convention
- Some deprecated classes removed (they where named wrong)
- BaseHubCruncher (a generic class) extended:
+ It does now check if the in-buffer queue is filled (depending on a
configurable threshold)
+ It implements initBufferQueues() from CruncherHelper interface
- Copyright fixed in HubMcryptCruncher
- The idle-loop task is now "genericly" registered in the TaskHandler class:
+ This implies that all task-based application will always have at least
one (but really generic) task.
+ The method hasTasksLeft() will return 'true' in all situations unless the
idle-loop task "kills" itself
- Generic cruncher-activation filter added
- The mentioned buffer queues are now initialized by a newly added filter class
and handled by an own task class
- More minor code-cleanups
- TODOs.txt updated
Roland Häder [Sat, 5 Mar 2011 14:32:35 +0000 (14:32 +0000)]
Before previous commit I was about to write only a 'test' cruncher, now this will be our real first cruncher application, more may follow, if the time is right
Roland Häder [Sat, 5 Mar 2011 14:28:14 +0000 (14:28 +0000)]
Copyright notice updated, our first hub application introduced (which is incomplete)
- First application 'test cruncher' for the hub (better say a cloud) introduced.
This test cruncher shall try to find the right key for an encrypted message.
It handles all "crunched" keys over work units like dnetc (see
http://www.distributed.net for instance) does but instead of a central server
it uses the "hub" as a cloud to store settings and work units in. This is, of
course, not yet done. More on the wiki: http://wiki.ship-simu.org
- Copyright updated
- TODOs.txt updated
Roland Häder [Sun, 13 Jun 2010 21:38:38 +0000 (21:38 +0000)]
New Exception added, registering of session ids added:
- New PeerAlreadyRegisteredException added which is thrown when the peer is
already registered with the same session id
- Registering of peers with their session id basicly added, purging unfinished
Roland Häder [Sun, 6 Jun 2010 12:54:27 +0000 (12:54 +0000)]
New exception and interface added, continued development:
- New InvalidSessionIdException added which will be thrown if the session id doesn't pass a preg_match() test
- TODO: That above mentioned preg_match() and the other now needs to be moved out
- New interface LookupablePeerState for "lookupable peer states" added
- Looking up session ids in database basicly added
Roland Häder [Fri, 28 May 2010 02:33:36 +0000 (02:33 +0000)]
Added peer states and lookup table classes/interfaces:
- Added new PeerStateable interface for peer states
- Added new Lookupable interface for lookup tables
- Added new PeerStateFactory class for generating peer states
- Added new PeerStateLookupTable class for looking up peer states
- Added new NewConnectionPeerState class for new peer connections
Roland Häder [Fri, 28 May 2010 01:40:31 +0000 (01:40 +0000)]
New visitor added, handling of refused connections basicly implemented:
- New ShutdownSocketVisitor added. This visitor should shutdown a socket and
may notify other objects later on.
- Handling of refused connections (e.g. while announcement phase) basicly
implemented. Yet there is some work left to do.
Roland Häder [Sat, 22 May 2010 16:04:05 +0000 (16:04 +0000)]
Many classes/interfaces added/continued:
- New 'tag' SocketTag added
- New classes for connection helper added
- TCP connection helper is maybe useable
- UDP connection helper is not yet finished
- New class for self connections added
- HubTools added which should provide a set of static methods
- SocketRegistry from core project added
- Continued (but maybe not-working) announcement
Roland Häder [Wed, 19 May 2010 10:44:58 +0000 (10:44 +0000)]
A lot 'FooClientBar' classes renamed to 'FooPeerBar' for naming convention, added more missing methods for socket discovery (still incomplete/dying code)
Roland Häder [Tue, 18 May 2010 19:57:58 +0000 (19:57 +0000)]
A whole bunch of classes/interfaces/exceptions added, many refacturings:
- New classes for "tag support" added. Tags can be the "object types" this hub
is going to share. But the purpose is kept somewhere generic so other purposes
may come.
- A way lot interfaces updated and added (sorry for lame description)
- New factories added: (read full description way down)
+ The SocketDiscoveryFactory creates singleton instances for socket discovery
+ The PackageDiscoveryFactory does the same for package recipient discovery
+ The RecipientListFactory creates instances for recipient lists
+ The PackageTagsFactory creates singleton instances for package tags
- New class RecipientList added which can be used for tracking recipients and
iterated on.
- New discovery classes added: ("Resolver" may also be fine naming these classes)
+ The PackageSocketDiscovery tries to "discover" the correct socket resource
depending on the package's tags. Well, mostly this will be TCP, but UDP
should not be forgotten... ;-)
+ The PackageRecipientDiscovery tries to "discover" the correct recipient
based on the 'recipient' entry in the package data. May sound not obvious
but there are some recipients which are no session id and/or IP:port
combination. A good example is 'upper' which is an alias for all upper
nodes like bootstrap, master and list nodes are.
- New ObjectTypeRegistry added. This registry does hold a list of all valid
and therefore "shareable" object types in an XML. For example 'announcement'
should only be shared with the 'upper' nodes, and only spreaded once.
- New (required for above registry) ObjectRegistryTemplateEngine added to handle
the object_registry.xml file.
- Announcement descriptor updated
- TODOs.txt/README updated
Roland Häder [Sat, 24 Apr 2010 02:48:48 +0000 (02:48 +0000)]
New wider interface added, several refacturings:
- New interface ProtocolHandler added which should be extended by listener and
writer interfaces. Please do not implement this interface, we only use it for
the socket registry.
- BaseListener refactured: Handling of server socket swapped out to new
(incomplete) socket registry.
- Callback function removed from network package to save a lot (!) memory
- New network package target 'upper' added which is an alias for all upper hubs
- deliverEnqueuedPackage() basicly finished
- Some code cosmetics applied
- TODOs.txt updated
Roland Häder [Mon, 12 Apr 2010 20:25:14 +0000 (20:25 +0000)]
Package class renamed, continued (sorry for lame description)
- Class NetworkPackageFactory was renamed from PackageFactory because the class
does actually create only network package classes
- HubList class added for handling connected/disconnected classes
- Some tasks (e.g. NetworkPackageWriterTask) continued
Roland Häder [Fri, 26 Mar 2010 04:20:25 +0000 (04:20 +0000)]
Network package writer added, shutdown refactured, fixes:
- New NetworkPackageWriterTask class introduced (unfinished)
- Shutdown procedure refactured to make use of the visitor pattern
- Several fixes/improvements, hub announcement still not working
- TODOs.txt updated