this method is called when the parent thread (Logger) hears that a LogMessage wants the file to be read for info
to be sent back in the form of a LogMessage
it adds a LogMessage so that to the queue so that it can wait to be processed
this method is called when the parent thread (Logger) hears that a LogEntry has to be made
it then makes a temporary LogEntry holding the what will be needed to complete the LogEntry
and adds that to the queue of this Object to be processed
This method checks the internal data structure to see if the input MDS Node information
has been seen before (ie The request has already passed though the given MDS Node)
The table size is critical to the false-positive ratio of the filter
The size can be loaded from a file under the key "BLOOMFILTER_TABLE_SIZE"
but if that is not supplied, this default is used
Ideally we want a size-to-keys ratio greater than 10-1 which results in less
than 1% false-positives, however, even a 7-1 ratio still only gives 3% false positives
see this (k=5)
for exact numbers
As a sidenote, a rehash upon size flucuations might be considered, however this
would require a separate storage of all origional indexes (before modulus operations)
and thus would use much more memory than simply making a larger table
Also, this must be constant across ALL MDS nodes for proper hasing, so cannot make this
a netcom.util.Properties loaded constant
Title: FileReaderThread
This is a Thread used by the Logger to process LogSession requests from the GUI
It has the ability to go into the file and make a resulting packet of information and LogEntries
in the form of a LogMessage
Copyright: Copyright (c) 2002
Company NETCOM
This is the finalize method, and should be called whenever this object is disappearing
This unallocates all references it must and informs the network that this node is no good anymore
This is the finalize method, and should be called whenever this object is disappearing
This unallocates all references it must and informs the network that this node is no
good anymore
Method to return a BloomUpdate object representing the differences between
'this' object and an input Bloomfilter
Does not effect the state of any of the BloomFilter objects
This is the number of hash functions used for every key
It should always be 5
(any changes would require modifying the algorithm, so this is not a
properties-loaded constant)
This says whether this search request is a bloom guess or not, thus allowing
this search request to not be propogated if it was a true "bloom guess" and the
recieving MDS node is using the "bloom search mode"
This field is modified by an MDS Node after instantiation
Title: LogMessage
This is the object which is used to communicate between the logger and the GUI
This object is sent via ObjectIOStream and thus has to implement Serializable
Copyright: Copyright (c) 2002
Company NETCOM
This is the port a MDS Node listens for Bloom Datagram Packets
**NOTE** This number actually uses 2 ports, so an input of 5005 will require
locak sockets 5005 and 5006 to be available!
Starts up MDS objects and runs the CLI
Takes as an argument the local IP (real ip or dns, NOT localhost)
This also takes many other utility arguments that save props file modification
but if the utility arguments are to be passed, All arguments are read into their
slot according to their order (ie can't ONLY pass the 2nd and 4th argument)
We MUST take the local IP from the user...
New data type that contains information about
an MDSCloud Node ( MDS or MDSProxy)
Contains a set of accessor/modifier methods in order
to handle every field that is needs to be stored on LDAP
the QueueAr class used for the FIleWriterThread and FileReaderThread classes
needs this class
Exception class for access in full containers
such as stacks, queues, and priority queues.
Override run() in AbstractShareTask, This is where this task begins execution
uses object private variables (no parameters allowed (defined by Runnable))
This adds a share to the supplied PServer's PSData.
This Method is where this thread begins execution
This thread just loops, waiting for a new socket connection,
and adds it to the given Collection of Sockets
This Method is where this thread begins execution
This thread just loops, waiting for a new socket connection,
and adds it to the given Collection of Sockets
Method to send a BloomUpdate which represents a complete BloomFilter to all nodes
This complete bloom filter is sent after N many updates to compensate for the error
of normal BloomUpdates
This is the Socket.toString() connecting a PClient to the MDSProxy which originated
the request, (It must be .toString() because Socket will not Serialize)