Commit Graph

101 Commits

Author SHA1 Message Date
Joshua Kissoon
2dde2a75e0 Setup Content Updating
- Didn't do this before, but now it's setup: content will be updated on the DHT if a StoreContentMessage is sent with a newer version of the content

GetParameter
- Updated the GetParameter so that it can be constructed from a KadContent object or a StorageEntryMetadata object
- Move it to the DHT package

Others
- Added a few methods to StorageEntryMetadata, StorageEntryManager& DHT to simplify conversions between KadContent, GetParameter & StorageEntryMetadata

Tests
- Written a test to check content updating
2014-04-05 21:07:57 +05:30
Joshua Kissoon
cc1d03ba81 Some comments and fixes 2014-04-02 18:39:16 +05:30
Joshua Kissoon
3e236f4d17 Now we use a StorageEntry class to send data accross peers
Out KadContent interface also now specifies a set of methods to force it's subclasses to do their own toByte conversions
2014-04-02 18:05:14 +05:30
Joshua Kissoon
9190b122c7 The current mechanism for serializing content will not work for complex content types.
Now we need to add methods to KadContent objects to provide the byte[] format of their content and to re-read the byte format of their content.
2014-04-02 16:35:08 +05:30
Joshua Kissoon
5b3e01df4e Fixed the bug "Getting content from reloaded node(Node whose state have been saved and re-loaded from file) NullPointerException".
Wrote a test to show getting content from reloaded node
2014-04-01 10:42:43 +05:30
Joshua Kissoon
1995682992 Had some issues with saving node state since saving configuration had a problem. We do not need to save configuration! Fixed the bug by making the configuration transient 2014-03-31 22:50:57 +05:30
Joshua Kissoon
b1ab1be760 Content Lookup wasn't working! Fixed the issue! stupid "!" in the damn statement! 2014-03-31 21:28:45 +05:30
Joshua Kissoon
a259579f4a Created a KadConfiguration interface that allows passing in a configuration file as needed.
This allows other applications to create their own configuration files
2014-03-29 14:37:01 +05:30
Joshua Kissoon
6462722227 Fixed the bug where refreshing content routed content to wrong new nodes and also deleted content from localnode even if it was one of the closest! 2014-03-29 12:29:13 +05:30
Joshua Kissoon
c232fccc69 Added the getNodeStorageFolder method to the Configuration class rather than having it repeated in DHT and Kademlia
Added a getDHT method to Kademlia
Changed the folder structure in which content is stored in the DHT from Kademlia/substr(contentid, 10)/hash(content).kct TO Kademlia/ownerId/substr(contentid, 10)/hash(content).kct
2014-03-29 10:52:55 +05:30
Joshua Kissoon
426af4d345 Removed the Save_state decision from configuration and allow the user to specify if to save the state when they call shutdown 2014-03-26 16:23:17 +05:30
Joshua Kissoon
219e6073ed Content deletion from a node that is no longer one of the K-Closest is working! 2014-03-22 15:52:37 +05:30
Joshua Kissoon
d9fdcc57fd Fixed the bug that was causing replication of content files and StorageEntries. RefreshOperation working well!! 2014-03-22 15:27:22 +05:30
Joshua Kissoon
b93133337c Added a method to store content only locally
Updated the StoreOperation to store content locally if the local Node is a part of the K-Closest to the content
2014-03-22 14:33:31 +05:30
Joshua Kissoon
42be8498c0 Finished the todos:
* @todo Make the KadBucket represent the Bucket interface
 * @todo Change the code to reflect the bucket interface and not the specific KadBucket implementation
 * @todo Update this interface and use this as parameter type, etc... instead of the KadBucket implementation used throughout the application

Now we're coding to the Bucket interface rather than the KadBucket implementation
2014-03-22 13:03:10 +05:30
Joshua Kissoon
6fdff97429 Setup the get bucket ID computation in one method.
Added Javadoc
2014-03-22 12:55:19 +05:30
Joshua Kissoon
104f20775f Fixed the bug that was causing the problem when adding the local node to the routing table when the routing table is created.
- The problem was that we were creating the RoutingTable before the Node initialization was finished, which was causing some problems since the RoutingTable needs the NodeId which is not available until after the Node initialization
2014-03-22 12:41:46 +05:30
Joshua Kissoon
3f82c4a0ef Did some code cleanups
- Add Comments
	- Remove println statements
	- Deleted useless comments, etc
2014-03-22 12:35:00 +05:30
Joshua Kissoon
21053a16ff Fixed the Distance Comparison bugs by using a new KeyComparator class of type Comparable<NodeId> and using BigIntegers to represent the keys and letting BigInteger do the comparisons 2014-03-22 11:32:41 +05:30
Joshua Kissoon
0cc24d42f3 Trying to fix an issue in the nodelookupoperation where the k-Closest nodes system doesn't work.
Lots of extra code added, but we're still in devel! so ...
2014-03-22 10:53:05 +05:30
Joshua Kissoon
22fee9116a Problem with serializing the DHT also, had to create a DHT specific Serializer class 2014-03-10 14:37:08 +05:30
Joshua Kissoon
e2ca9326c9 Got system state storage and retrieval of state to work! 2014-03-10 13:45:13 +05:30
Joshua Kissoon
e1e6e4e40d Got storage to work! 2014-03-10 11:08:51 +05:30
Joshua Kissoon
d31f0e337f Still working on saving node state, the code is a huge mess right now 2014-03-09 21:04:18 +05:30
Joshua Kissoon
eb7d7b53a4 Setup storing of System state on shutdown 2014-03-09 20:12:11 +05:30
Joshua Kissoon
630f8c2f28 2014-03-07 11:18:04 +05:30
Joshua Kissoon
46147eddd1 Finished a Basic version of the content refresh operation 2014-03-07 11:14:45 +05:30
Joshua Kissoon
a97905e431 Started working on the ContentRefreshOperation
- Setup a method to get all storage entries for the different content
	- Started setting up the content refresh operation functionality
2014-03-06 20:42:30 +05:30
Joshua Kissoon
689a35b7bf Cleaned up the core code, added comments and removed all Netbeans generated warnings 2014-03-06 16:51:42 +05:30
Joshua Kissoon
796e41dd9a Updated the bucket refresh operation to use 1 thread to update each bucket 2014-03-06 16:38:46 +05:30
Joshua Kissoon
cabb5af742 Finish Bucket Refresh Operation :) 2014-03-06 16:24:50 +05:30
Joshua Kissoon
f91dea9e5f NodeId.getFirstSetBitIndex was actually returning a distance value, but without a comparison, was confusing things.
Created a distance function to replace that.

Still working on Refresh Operations
2014-03-06 12:49:15 +05:30
Joshua Kissoon
acd7885dba Started working on the RefreshOperations 2014-03-06 11:21:08 +05:30
Joshua Kissoon
e4726b93f8 Content Store, Retrieve and DHT File and Table management working well
Got a few Todos now to finish off
2014-02-26 21:35:37 +05:30
Joshua Kissoon
a12e075cec Working on The ContentLookupReceiver 2014-02-26 19:16:44 +05:30
Joshua Kissoon
58f9157c9d Finished coding the lookup content functionality 2014-02-26 18:58:55 +05:30
Joshua Kissoon
a2d0be6124 Finished DHT content storage and retrieval
Started working on Content lookup and sending content
2014-02-26 17:07:18 +05:30
Joshua Kissoon
b5e89c6ddb Keeping with some good coding standards - Code to Interfaces not implementations
Changed the use of ArrayList to List and HashMap to Map
2014-02-26 11:57:59 +05:30
Joshua Kissoon
9f14c66a31 Persistent content storage now working perfectly!!! 2014-02-26 11:40:06 +05:30
Joshua Kissoon
c67e501df6 Content Sending working between nodes 2014-02-25 22:57:46 +05:30
Joshua Kissoon
fa4b29305e Finished implementing a JsonSerializer to serialize Content 2014-02-25 18:58:32 +05:30
Joshua Kissoon
995da2cffb Continuing work on message sending 2014-02-25 13:42:08 +05:30
Joshua Kissoon
faef3d03ec Started working on sending content messages 2014-02-25 13:01:06 +05:30
Joshua Kissoon
44077d344d Started working on Node refreshing the K-Buckets and DHT content at every time interval t
Started working on PUT, GET, STORE operation and on DHT Storage
2014-02-24 21:26:49 +05:30
Joshua Kissoon
3344511603 Finished NodeLookupOperation functionality! Finally found the bug 2014-02-22 19:37:04 +05:30
Joshua Kissoon
9eca0614f2 Still working on NodeLookupRequest
Updated the NodeId equals() and hashCode() methods; fixes the bug where several same NodeIds were being added to the routing table
2014-02-19 21:21:18 +05:30
Joshua Kissoon
1de348fc72 Working on NodeLookups 2014-02-19 15:54:15 +05:30
Joshua Kissoon
58df7be300 Started working on the NodeLookupOperation
Created some new Messages
Updated a few minor things
2014-02-19 13:00:29 +05:30
Joshua Kissoon
6ff6e8dc21 Fixed the NodeId Prefix Length method to give the correct prefixLength 2014-02-19 11:38:27 +05:30
Joshua Kissoon
ed1ac876f3 Fixed the bug in NodeConnection operation where the messages were still being re-sent even after an acknowledgement was received.
Fixed by canceling the TimerTask
2014-02-19 10:30:42 +05:30
Joshua Kissoon
b3e1403872 Initial Commit 2014-02-19 02:07:07 +05:30