Commit Graph

  • e94135f256
    Published artifact to Maven Central and changed representation of NodeID to Base64 master ChronosX88 2019-03-02 21:23:43 +0400
  • d48645b644
    Update README.md ChronosX88 2019-03-01 19:55:14 +0300
  • d709113373
    Migrate project to Gradle, as library. Fixed hex representation of NodeID. ChronosX88 2019-03-01 20:37:27 +0400
  • cc62dff54c Added link to Gleamly article Joshua Kissoon 2015-08-05 21:40:56 -0400
  • 0bcbab0f03 Fixed a bug in the getParameter where the owner variable was never being set if a certain constructor is called Joshua Kissoon 2014-06-03 11:23:06 +0530
  • 8501740bc5 Switched back to using the StorageEntry class and StorageEntry Metadata class because of some issues with JSon serialization with polymorphism... Joshua Kissoon 2014-06-03 10:43:53 +0530
  • 7a4cc2e91c A few small changes Joshua Kissoon 2014-06-02 15:22:19 +0530
  • 4a9fd713fd Added a KademliaStorageEntryMetadada Interface - Updated the rest of the system to use this interface Joshua Kissoon 2014-06-02 14:44:51 +0530
  • e8105a9e33 Updated the operations to use the KademliaNode interface rather than the JKademliaNode class Joshua Kissoon 2014-06-02 14:31:15 +0530
  • a1faffb4d9 Created a new storage entry interface, Let the storage entry class and the rest of this system use this interface 1.0 Joshua Kissoon 2014-05-23 22:28:21 +0530
  • 9fb139571a Added a KademliaDHT Interface and setup the DHT class and the rest of the system to use this interface Joshua Kissoon 2014-05-23 22:14:08 +0530
  • 568f2fe9a8 The entire system is changed over to use the KademliaRoutingTable class instead of the JKademliaRoutingTable implementation Joshua Kissoon 2014-05-23 20:56:03 +0530
  • d6ab1493b8 Renamed the KadBucket to KademliaBucket Renamed KadBucketImpl to JKademliaBucket because it's an implementation of KademliaBucket Joshua Kissoon 2014-05-23 20:52:24 +0530
  • 41df450f4a Renamed the KadRoutingTable to KademliaRoutingTable Renamed RoutingTable to JKademliaRoutingTable because it's an implementation of KademliaRoutingTable Joshua Kissoon 2014-05-23 20:51:28 +0530
  • 66616a7afd Updated the JKademliaNode class to inherit the KademliaNode interface Joshua Kissoon 2014-05-23 20:48:23 +0530
  • a24eef8091 Added a KademliaNode interface Joshua Kissoon 2014-05-23 20:45:17 +0530
  • 451cba4be9 From now on we'll name the interfaces properly and name the implementation with a J as prefix since this is the J Kademlia implementation Joshua Kissoon 2014-05-23 20:38:33 +0530
  • ce5c49d46d Changed the server to use Kademlia Message Factory interface rather than the specific class Joshua Kissoon 2014-05-23 20:31:46 +0530
  • fd0620aaf1 - Moved the items from kademlia.core package to kademlia package since both packages are core package. - Deleted the kademlia.core package Joshua Kissoon 2014-05-23 20:30:56 +0530
  • 720b062646 Added a message factory interface Joshua Kissoon 2014-05-23 20:29:43 +0530
  • b594b91adf Renamed the test package to simulations Created a simulations interface Joshua Kissoon 2014-05-19 12:58:44 +0530
  • a9e5402697 Updated the routing table bucket class to copy the contacts to another data structure before sending them, preventing other parts of the system from modifying the core data structure Joshua Kissoon 2014-05-18 15:17:36 +0530
  • 807a9965d0 Added a method to check if the server is running Joshua Kissoon 2014-05-13 11:22:56 +0530
  • 9e94a225fe Few minor changes Joshua Kissoon 2014-05-13 11:17:26 +0530
  • c23edf2cb9 Statistician - Added some handling for 0 based values Joshua Kissoon 2014-05-13 09:54:52 +0530
  • a25b88a9bb Added a method to get the number of failed content lookups Joshua Kissoon 2014-05-12 23:46:02 +0530
  • 42da6df375 In the content lookup statistics - added a value "isContentFound" to be passed Joshua Kissoon 2014-05-12 23:41:45 +0530
  • fca4a5fde5 Again set our storageentry to store a string - we'll have to encode any byte array to base64 if we need to Joshua Kissoon 2014-05-12 17:34:41 +0530
  • cc0cdc42b5 Manage content in byte format since strings may have encoding problems! especially for compression, etc Joshua Kissoon 2014-05-12 15:15:59 +0530
  • 66321280e6 Set the Serializable objects to implement the Serializable interface Joshua Kissoon 2014-05-12 13:12:24 +0530
  • 0ee1001049 Merge origin/master Joshua Kissoon 2014-05-11 23:55:08 +0530
  • 5c067e723a commit Joshua Kissoon 2014-05-11 23:54:20 +0530
  • b7c75c4e38 Changed StorageEntry to store content in String format since it's smaller Joshua Kissoon 2014-05-11 18:59:35 +0530
  • b49e8170f5 Updated content sending test Joshua Kissoon 2014-05-11 16:02:36 +0530
  • 24abfe3d2a Storage Entry Usage - Now we manage storage entries directly from the KadNode - rather than creating them all over the place Joshua Kissoon 2014-05-11 15:39:43 +0530
  • 7b95d03d96 Moved the HashCalculator to the utils package rather than have it in a package of it's own Joshua Kissoon 2014-05-11 15:15:26 +0530
  • 428cab774b Node - Update the node's getInetAddress method to return InetSocketAddress instead of SocketAddress since we get more methods available with this -- Specifically we get a comparison method which is needed Joshua Kissoon 2014-05-11 12:36:10 +0530
  • 06f9eeae43 Updated the operation timeout to be the same as the response timeout! Joshua Kissoon 2014-05-11 10:40:46 +0530
  • 210e3842ca ContentLookupOperation - Forgot to initialize the route length checker Joshua Kissoon 2014-05-10 23:34:17 +0530
  • d242e0a13a Route Length Computation - Before we were doing this by just adding incrementing a value everytime we get a set of nodes as the reply of a FIND_NODE or FIND_VALUE RPC -- This may be wrong since nodes the same distance away may reply and we'll still be incrementing for both - Created a route length checker class to properly check route lengths Joshua Kissoon 2014-05-10 21:17:44 +0530
  • 799a4887dd Node Lookup OP - Removed the unused error boolean Joshua Kissoon 2014-05-10 21:15:24 +0530
  • 4fbc29fa24 NodeLookupOperation - Removed the unused error variable Joshua Kissoon 2014-05-10 21:06:46 +0530
  • ed0a833e1a KadBucket Bug - We were checking if the contact stale count was ">" stale value rather than ">=" stale value Joshua Kissoon 2014-05-10 20:36:39 +0530
  • 673979c29a Routing Table - We were not resetting the stale count of a contact when we saw it again, did that now Joshua Kissoon 2014-05-10 19:52:21 +0530
  • 111cdc9e05 KadBucket - Updated toString to display stale count of a contact Joshua Kissoon 2014-05-10 19:28:19 +0530
  • 58696d627a Made a few KadBucket methods private Joshua Kissoon 2014-05-09 16:05:14 +0530
  • e8f0e20a8f Seems we over-synchronized the DHT - Removed the blocking synchronizations Joshua Kissoon 2014-05-09 14:11:58 +0530
  • f5409c70e9 Removed the excess method syncs Joshua Kissoon 2014-05-09 13:22:40 +0530
  • 565bf50ddb Added some synchronization to the KadBucket and DHT Joshua Kissoon 2014-05-09 11:54:21 +0530
  • 3ab6b3d2ab Renamed NodeId to KademliaId Since that's basically what it is! Joshua Kissoon 2014-05-09 11:03:00 +0530
  • ac950720f3 Contact - Added equals() and hashCode() methods Joshua Kissoon 2014-05-09 10:00:56 +0530
  • f66d5f662f Routing Table Find Closest - Added a shorter method - Create a treeset to sort the nodes - Add all nodes in the routing table to the treeset - Then select the top Q nodes required from the treeset Joshua Kissoon 2014-05-09 09:27:35 +0530
  • 89d5c48d28 Bucket Refresh Operation - Just found a major Bug!!! We were doing 160 refreshes looking for nodes with the local nodeId as the lookup ID for all 160 refreshes - Updated to check for nodes at different distances from the local NodeId Joshua Kissoon 2014-05-08 22:28:22 +0530
  • 98fc727cbe Stop shutting down the server when we catch an exception Catch a content not found exception in ContentLookupReceiver Joshua Kissoon 2014-05-08 18:41:07 +0530
  • 72048ad8a1 Statistician - Return data sent in KiloBytes instead of bytes Joshua Kissoon 2014-05-08 10:58:24 +0530
  • 3705107ce6 KademliaNode - Removed the isRunning boolean since it's not used - Made the statistician transient since we only keep stats temporary Joshua Kissoon 2014-05-08 10:41:51 +0530
  • 1ff0fb8284 Statistician - Setup the bootstrap time to be in milliseconds instead of nanoseconds Joshua Kissoon 2014-05-08 00:14:57 +0530
  • 32a6d7875b Statistician - Made it an interface - Implemented the interface and made the changes in the code to use the interface Joshua Kissoon 2014-05-07 23:45:23 +0530
  • 1d5d8004df KadServer - Introduced artificial latency when we're in testing mode Joshua Kissoon 2014-05-07 23:14:49 +0530
  • e771c8fd44 Configuration - Added Information to specify whether we're in a testing environment or a production environment -- we can use this information to put in network latency, etc Joshua Kissoon 2014-05-07 22:43:15 +0530
  • 70bf6044b3 Added toString to statistician Joshua Kissoon 2014-05-07 21:23:04 +0530
  • 718fa78b9d Statistician - Returns some times in milliseconds instead of microseconds Joshua Kissoon 2014-05-07 11:22:02 +0530
  • 1bee79789d Statistician - Formatted the double returned by averages Joshua Kissoon 2014-05-07 10:07:12 +0530
  • 67f6a0fe07 Statistician - Added a method to find average content lookup route length Joshua Kissoon 2014-05-07 09:46:48 +0530
  • b90a87b149 Statistician - Added measuring the route Length (Hop Length) of content lookup operation Joshua Kissoon 2014-05-07 09:26:29 +0530
  • 92ce527c0c Statistician - Changed over to using nanoseconds instead of milliseconds -- Better Accuracy -- milliseconds is not always properly measured Joshua Kissoon 2014-05-07 00:54:55 +0530
  • 095738dcbc Statistician - Added Timing Node Bootstrap. - Added timing content lookup operation. Joshua Kissoon 2014-05-07 00:41:49 +0530
  • baeb656050 Cleaned up the code a bit - Removed some unnecessary exception throwing Joshua Kissoon 2014-05-06 12:59:43 +0530
  • 64dfdda1c3 Added a few utility methods Joshua Kissoon 2014-05-06 09:53:06 +0530
  • 2adfc9b277 Statistics - Added aggregation of total data sent and received by Server Joshua Kissoon 2014-05-06 09:27:40 +0530
  • 899390b4a3 Statistics - Renamed the statistics class to Statistician since that's is what it is - a statistician that manages the Kad statistics - Passed the statistician to our Server to collect data Joshua Kissoon 2014-05-06 09:21:34 +0530
  • 7817100253 Statistics - Started working on a statistics class to collect Kad statistics Joshua Kissoon 2014-05-06 09:13:16 +0530
  • 8aecda34c7 Added methods to start and stop the refresh operation Joshua Kissoon 2014-05-05 18:03:57 +0530
  • 8d3ceb3ae1 We need to synchronize some toString methods since they access some data structures that cannot be modified concurrently Joshua Kissoon 2014-05-05 15:47:07 +0530
  • d920f2621e Added synchronization to prevent concurrency exceptions Joshua Kissoon 2014-05-05 14:54:49 +0530
  • 0c4a40d9ca Removed some unnecessary print statements Joshua Kissoon 2014-05-05 14:05:00 +0530
  • 37337afc66 There was an error when we recursively called the synchronized KadBucket.insert method - Fixed it by removing the recursion Joshua Kissoon 2014-05-05 12:46:44 +0530
  • 1e2cc037de Synchronization - We were getting some concurrency exceptions because certain data structures were being modified concurrently - Solved the issues by synchronizing the methods modifying the data structures Joshua Kissoon 2014-05-05 10:52:44 +0530
  • cb42c507de Concurrency Modification Error Fixed We were getting a concurrency Modification error on the treemap because multiple operations may have been accessing the RoutingTable's getAllNodes() method at once. - Fixed it by making this method synchronized. Joshua Kissoon 2014-05-01 19:22:26 +0530
  • 0ce64529c6 Saving State & Reloading - Routing Table had a save state issue because of the KadConfiguration -- I removed saving the configuration since this may change from boot to boot -- Provided a way to set a new configuration to the routing table -- Updated the serializer/deserializer Joshua Kissoon 2014-05-01 16:52:31 +0530
  • 66b6a14ebc Routing Table - Added a routing table interface to code to Interface not implementation Joshua Kissoon 2014-05-01 15:03:20 +0530
  • fa242fad6a Renamed the bucket classes and interface to clear up things Joshua Kissoon 2014-05-01 14:42:21 +0530
  • 1e6b9f2e38 Replacement Cache update - If we're trying to add a node that's already in the replacement cache, update the last seen time of this node Joshua Kissoon 2014-05-01 11:44:25 +0530
  • 9c05736ef8 Updated content lookup operation and node lookup operation - Use all nodes to these operations initially instead of the K-Closest because there may be the case that the K-Closest are offline - The operation takes care of looking at the K-Closest. Joshua Kissoon 2014-05-01 11:41:12 +0530
  • 4e643c7f3f Contact Management - There was an improvement in the paper page 64 to set a contact as stale and replace it if it's stale, but only if there is a replacement, otherwise just keep a stale count. The stale count is the amount of time a contact failed to respond to a request. - The above feature is now implemented now. - Added the management of stale contacts code to insert and removal Joshua Kissoon 2014-04-28 21:23:04 +0530
  • b1bfba6d93 Kademlia Contact Removal - Contact removal now working well, we only do removal when we need to get in touch with the contact for some reason. - Replacement cache is now setup Joshua Kissoon 2014-04-28 20:38:47 +0530
  • fa47aceda9 Kad Server - Added a specific exception to throw when the server is down Joshua Kissoon 2014-04-28 16:46:32 +0530
  • 54ac3fe740 Some major major changes to the entire Kademlia System. Kademlia Node - The Kademlia class is renamed to KademliaNode - this will now serve as the main node on the network - The RoutingTable will be a part of this node Node - The node class is now a basic class containing information about a node to be used by peers on the network Joshua Kissoon 2014-04-28 15:25:07 +0530
  • a2f48d2241 Content Refresh Operation improvement - Added the improvement for content refresh operation from the paper, we keep the last time a content was republished, and on content update operations, we only republish if the last republish was before (current time - republishing time interval) Joshua Kissoon 2014-04-26 23:19:13 +0530
  • 67c12438d1 Few minor updates and removal of completed @todos Joshua Kissoon 2014-04-26 22:21:51 +0530
  • 41fb630515 Content Lookup Operation Update Joshua Kissoon 2014-04-26 22:09:45 +0530
  • 4fab4320df Routing Table Contact Management - Added last seen data to contact - Contacts are not sorted by lastSeen - Contact updating last seen time is handled Joshua Kissoon 2014-04-26 21:26:02 +0530
  • 6253ad0ca6 Removed a few completed @todo comments Joshua Kissoon 2014-04-25 16:21:23 +0530
  • 7c24ed7cff Finished a few of the Todos - Populate all of the K-Buckets on bootstrap Joshua Kissoon 2014-04-25 16:17:09 +0530
  • 21b6667eb8 Routing Table Improvement - Setup the RoutingTable to store contact instead of node - This helps since we'll need more information in the routing to evict contacts, etc Joshua Kissoon 2014-04-25 16:04:05 +0530
  • c902ba26ab Removed a useless copy of the GetParameter class Joshua Kissoon 2014-04-25 15:25:40 +0530
  • bf3280f62e Few renames and minor changes Joshua Kissoon 2014-04-25 15:23:34 +0530
  • 6978a8023b Moved the receiver interface to the message/receiver package Joshua Kissoon 2014-04-19 20:11:10 +0530
  • 6503c79681 ContentLookupOperation Had a bug in the content lookup operation, if the total amount of content needed was not found, a Routing exception was thrown instead of returning what was found. Fixed the issue! Joshua Kissoon 2014-04-19 15:09:07 +0530
  • 8e6052de23 ContentLookupOperation CLO was timing out even if it had found the specified amount of content needed. Fixed that by exiting after the specified # of content required has been found Joshua Kissoon 2014-04-13 19:15:24 +0530