mirror of
https://github.com/ChronosX88/KademliaDHT.git
synced 2024-11-22 02:02:21 +00:00
Switched back to using the StorageEntry class and StorageEntry Metadata class because of some issues with JSon serialization with polymorphism...
This commit is contained in:
parent
7a4cc2e91c
commit
8501740bc5
@ -266,7 +266,7 @@ public class JKademliaNode implements KademliaNode
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int put(KademliaStorageEntry entry) throws IOException
|
public int put(JKademliaStorageEntry entry) throws IOException
|
||||||
{
|
{
|
||||||
StoreOperation sop = new StoreOperation(this.server, this, entry, this.dht, this.config);
|
StoreOperation sop = new StoreOperation(this.server, this, entry, this.dht, this.config);
|
||||||
sop.execute();
|
sop.execute();
|
||||||
@ -282,7 +282,7 @@ public class JKademliaNode implements KademliaNode
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public KademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException, ContentNotFoundException
|
public JKademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException, ContentNotFoundException
|
||||||
{
|
{
|
||||||
if (this.dht.contains(param))
|
if (this.dht.contains(param))
|
||||||
{
|
{
|
||||||
|
@ -3,6 +3,7 @@ package kademlia;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import kademlia.dht.GetParameter;
|
import kademlia.dht.GetParameter;
|
||||||
|
import kademlia.dht.JKademliaStorageEntry;
|
||||||
import kademlia.dht.KadContent;
|
import kademlia.dht.KadContent;
|
||||||
import kademlia.dht.KademliaDHT;
|
import kademlia.dht.KademliaDHT;
|
||||||
import kademlia.dht.KademliaStorageEntry;
|
import kademlia.dht.KademliaStorageEntry;
|
||||||
@ -86,7 +87,7 @@ public interface KademliaNode
|
|||||||
* @throws java.io.IOException
|
* @throws java.io.IOException
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public int put(KademliaStorageEntry entry) throws IOException;
|
public int put(JKademliaStorageEntry entry) throws IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store a content on the local node's DHT
|
* Store a content on the local node's DHT
|
||||||
@ -107,7 +108,7 @@ public interface KademliaNode
|
|||||||
* @throws java.io.IOException
|
* @throws java.io.IOException
|
||||||
* @throws kademlia.exceptions.ContentNotFoundException
|
* @throws kademlia.exceptions.ContentNotFoundException
|
||||||
*/
|
*/
|
||||||
public KademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException, ContentNotFoundException;
|
public JKademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException, ContentNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allow the user of the System to call refresh even out of the normal Kad refresh timing
|
* Allow the user of the System to call refresh even out of the normal Kad refresh timing
|
||||||
|
@ -26,7 +26,7 @@ public class DHT implements KademliaDHT
|
|||||||
{
|
{
|
||||||
|
|
||||||
private transient StoredContentManager contentManager;
|
private transient StoredContentManager contentManager;
|
||||||
private transient KadSerializer<KademliaStorageEntry> serializer = null;
|
private transient KadSerializer<JKademliaStorageEntry> serializer = null;
|
||||||
private transient KadConfiguration config;
|
private transient KadConfiguration config;
|
||||||
|
|
||||||
private final String ownerId;
|
private final String ownerId;
|
||||||
@ -51,7 +51,7 @@ public class DHT implements KademliaDHT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public KadSerializer<KademliaStorageEntry> getSerializer()
|
public KadSerializer<JKademliaStorageEntry> getSerializer()
|
||||||
{
|
{
|
||||||
if (null == serializer)
|
if (null == serializer)
|
||||||
{
|
{
|
||||||
@ -62,7 +62,7 @@ public class DHT implements KademliaDHT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean store(KademliaStorageEntry content) throws IOException
|
public boolean store(JKademliaStorageEntry content) throws IOException
|
||||||
{
|
{
|
||||||
/* Lets check if we have this content and it's the updated version */
|
/* Lets check if we have this content and it's the updated version */
|
||||||
if (this.contentManager.contains(content.getContentMetadata()))
|
if (this.contentManager.contains(content.getContentMetadata()))
|
||||||
@ -130,7 +130,7 @@ public class DHT implements KademliaDHT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public KademliaStorageEntry retrieve(KademliaId key, int hashCode) throws FileNotFoundException, IOException, ClassNotFoundException
|
public JKademliaStorageEntry retrieve(KademliaId key, int hashCode) throws FileNotFoundException, IOException, ClassNotFoundException
|
||||||
{
|
{
|
||||||
String folder = this.getContentStorageFolderName(key);
|
String folder = this.getContentStorageFolderName(key);
|
||||||
DataInputStream din = new DataInputStream(new FileInputStream(folder + File.separator + hashCode + ".kct"));
|
DataInputStream din = new DataInputStream(new FileInputStream(folder + File.separator + hashCode + ".kct"));
|
||||||
@ -144,7 +144,7 @@ public class DHT implements KademliaDHT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public KademliaStorageEntry get(KademliaStorageEntryMetadata entry) throws IOException, NoSuchElementException
|
public JKademliaStorageEntry get(KademliaStorageEntryMetadata entry) throws IOException, NoSuchElementException
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -164,7 +164,7 @@ public class DHT implements KademliaDHT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public KademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException
|
public JKademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException
|
||||||
{
|
{
|
||||||
/* Load a KadContent if any exist for the given criteria */
|
/* Load a KadContent if any exist for the given criteria */
|
||||||
try
|
try
|
||||||
|
@ -10,14 +10,14 @@ public class JKademliaStorageEntry implements KademliaStorageEntry
|
|||||||
{
|
{
|
||||||
|
|
||||||
private String content;
|
private String content;
|
||||||
private final KademliaStorageEntryMetadata metadata;
|
private final StorageEntryMetadata metadata;
|
||||||
|
|
||||||
public JKademliaStorageEntry(final KadContent content)
|
public JKademliaStorageEntry(final KadContent content)
|
||||||
{
|
{
|
||||||
this(content, new StorageEntryMetadata(content));
|
this(content, new StorageEntryMetadata(content));
|
||||||
}
|
}
|
||||||
|
|
||||||
public JKademliaStorageEntry(final KadContent content, final KademliaStorageEntryMetadata metadata)
|
public JKademliaStorageEntry(final KadContent content, final StorageEntryMetadata metadata)
|
||||||
{
|
{
|
||||||
this.setContent(content.toSerializedForm());
|
this.setContent(content.toSerializedForm());
|
||||||
this.metadata = metadata;
|
this.metadata = metadata;
|
||||||
|
@ -35,7 +35,7 @@ public interface KademliaDHT
|
|||||||
*
|
*
|
||||||
* @return The new ContentSerializer
|
* @return The new ContentSerializer
|
||||||
*/
|
*/
|
||||||
public KadSerializer<KademliaStorageEntry> getSerializer();
|
public KadSerializer<JKademliaStorageEntry> getSerializer();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle storing content locally
|
* Handle storing content locally
|
||||||
@ -46,7 +46,7 @@ public interface KademliaDHT
|
|||||||
*
|
*
|
||||||
* @throws java.io.IOException
|
* @throws java.io.IOException
|
||||||
*/
|
*/
|
||||||
public boolean store(KademliaStorageEntry content) throws IOException;
|
public boolean store(JKademliaStorageEntry content) throws IOException;
|
||||||
|
|
||||||
public boolean store(KadContent content) throws IOException;
|
public boolean store(KadContent content) throws IOException;
|
||||||
|
|
||||||
@ -61,7 +61,7 @@ public interface KademliaDHT
|
|||||||
* @throws java.io.FileNotFoundException
|
* @throws java.io.FileNotFoundException
|
||||||
* @throws java.lang.ClassNotFoundException
|
* @throws java.lang.ClassNotFoundException
|
||||||
*/
|
*/
|
||||||
public KademliaStorageEntry retrieve(KademliaId key, int hashCode) throws FileNotFoundException, IOException, ClassNotFoundException;
|
public JKademliaStorageEntry retrieve(KademliaId key, int hashCode) throws FileNotFoundException, IOException, ClassNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if any content for the given criteria exists in this DHT
|
* Check if any content for the given criteria exists in this DHT
|
||||||
@ -81,7 +81,7 @@ public interface KademliaDHT
|
|||||||
*
|
*
|
||||||
* @throws java.io.IOException
|
* @throws java.io.IOException
|
||||||
*/
|
*/
|
||||||
public KademliaStorageEntry get(KademliaStorageEntryMetadata entry) throws IOException, NoSuchElementException;
|
public JKademliaStorageEntry get(KademliaStorageEntryMetadata entry) throws IOException, NoSuchElementException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the StorageEntry for the content if any exist.
|
* Get the StorageEntry for the content if any exist.
|
||||||
@ -92,7 +92,7 @@ public interface KademliaDHT
|
|||||||
*
|
*
|
||||||
* @throws java.io.IOException
|
* @throws java.io.IOException
|
||||||
*/
|
*/
|
||||||
public KademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException;
|
public JKademliaStorageEntry get(GetParameter param) throws NoSuchElementException, IOException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a content from local storage
|
* Delete a content from local storage
|
||||||
|
@ -3,6 +3,7 @@ package kademlia.message;
|
|||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import kademlia.dht.JKademliaStorageEntry;
|
||||||
import kademlia.dht.KademliaStorageEntry;
|
import kademlia.dht.KademliaStorageEntry;
|
||||||
import kademlia.node.Node;
|
import kademlia.node.Node;
|
||||||
import kademlia.util.serializer.JsonSerializer;
|
import kademlia.util.serializer.JsonSerializer;
|
||||||
@ -18,7 +19,7 @@ public class ContentMessage implements Message
|
|||||||
|
|
||||||
public static final byte CODE = 0x04;
|
public static final byte CODE = 0x04;
|
||||||
|
|
||||||
private KademliaStorageEntry content;
|
private JKademliaStorageEntry content;
|
||||||
private Node origin;
|
private Node origin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,7 +27,7 @@ public class ContentMessage implements Message
|
|||||||
* @param content The content to be stored
|
* @param content The content to be stored
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public ContentMessage(Node origin, KademliaStorageEntry content)
|
public ContentMessage(Node origin, JKademliaStorageEntry content)
|
||||||
{
|
{
|
||||||
this.content = content;
|
this.content = content;
|
||||||
this.origin = origin;
|
this.origin = origin;
|
||||||
@ -43,7 +44,7 @@ public class ContentMessage implements Message
|
|||||||
this.origin.toStream(out);
|
this.origin.toStream(out);
|
||||||
|
|
||||||
/* Serialize the KadContent, then send it to the stream */
|
/* Serialize the KadContent, then send it to the stream */
|
||||||
new JsonSerializer<KademliaStorageEntry>().write(content, out);
|
new JsonSerializer<JKademliaStorageEntry>().write(content, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -53,7 +54,7 @@ public class ContentMessage implements Message
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
this.content = new JsonSerializer<KademliaStorageEntry>().read(in);
|
this.content = new JsonSerializer<JKademliaStorageEntry>().read(in);
|
||||||
}
|
}
|
||||||
catch (ClassNotFoundException e)
|
catch (ClassNotFoundException e)
|
||||||
{
|
{
|
||||||
@ -66,7 +67,7 @@ public class ContentMessage implements Message
|
|||||||
return this.origin;
|
return this.origin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public KademliaStorageEntry getContent()
|
public JKademliaStorageEntry getContent()
|
||||||
{
|
{
|
||||||
return this.content;
|
return this.content;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package kademlia.message;
|
|||||||
import java.io.DataInputStream;
|
import java.io.DataInputStream;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import kademlia.dht.JKademliaStorageEntry;
|
||||||
import kademlia.dht.KademliaStorageEntry;
|
import kademlia.dht.KademliaStorageEntry;
|
||||||
import kademlia.node.Node;
|
import kademlia.node.Node;
|
||||||
import kademlia.util.serializer.JsonSerializer;
|
import kademlia.util.serializer.JsonSerializer;
|
||||||
@ -18,7 +19,7 @@ public class StoreContentMessage implements Message
|
|||||||
|
|
||||||
public static final byte CODE = 0x08;
|
public static final byte CODE = 0x08;
|
||||||
|
|
||||||
private KademliaStorageEntry content;
|
private JKademliaStorageEntry content;
|
||||||
private Node origin;
|
private Node origin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,7 +27,7 @@ public class StoreContentMessage implements Message
|
|||||||
* @param content The content to be stored
|
* @param content The content to be stored
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public StoreContentMessage(Node origin, KademliaStorageEntry content)
|
public StoreContentMessage(Node origin, JKademliaStorageEntry content)
|
||||||
{
|
{
|
||||||
this.content = content;
|
this.content = content;
|
||||||
this.origin = origin;
|
this.origin = origin;
|
||||||
@ -43,7 +44,7 @@ public class StoreContentMessage implements Message
|
|||||||
this.origin.toStream(out);
|
this.origin.toStream(out);
|
||||||
|
|
||||||
/* Serialize the KadContent, then send it to the stream */
|
/* Serialize the KadContent, then send it to the stream */
|
||||||
new JsonSerializer<KademliaStorageEntry>().write(content, out);
|
new JsonSerializer<JKademliaStorageEntry>().write(content, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -52,7 +53,7 @@ public class StoreContentMessage implements Message
|
|||||||
this.origin = new Node(in);
|
this.origin = new Node(in);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
this.content = new JsonSerializer<KademliaStorageEntry>().read(in);
|
this.content = new JsonSerializer<JKademliaStorageEntry>().read(in);
|
||||||
}
|
}
|
||||||
catch (ClassNotFoundException e)
|
catch (ClassNotFoundException e)
|
||||||
{
|
{
|
||||||
@ -65,7 +66,7 @@ public class StoreContentMessage implements Message
|
|||||||
return this.origin;
|
return this.origin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public KademliaStorageEntry getContent()
|
public JKademliaStorageEntry getContent()
|
||||||
{
|
{
|
||||||
return this.content;
|
return this.content;
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import kademlia.JKademliaNode;
|
|||||||
import kademlia.dht.GetParameter;
|
import kademlia.dht.GetParameter;
|
||||||
import kademlia.KadConfiguration;
|
import kademlia.KadConfiguration;
|
||||||
import kademlia.KadServer;
|
import kademlia.KadServer;
|
||||||
|
import kademlia.dht.JKademliaStorageEntry;
|
||||||
import kademlia.dht.KademliaStorageEntry;
|
import kademlia.dht.KademliaStorageEntry;
|
||||||
import kademlia.exceptions.ContentNotFoundException;
|
import kademlia.exceptions.ContentNotFoundException;
|
||||||
import kademlia.exceptions.RoutingException;
|
import kademlia.exceptions.RoutingException;
|
||||||
@ -43,7 +44,7 @@ public class ContentLookupOperation implements Operation, Receiver
|
|||||||
|
|
||||||
private final KadServer server;
|
private final KadServer server;
|
||||||
private final JKademliaNode localNode;
|
private final JKademliaNode localNode;
|
||||||
private KademliaStorageEntry contentFound = null;
|
private JKademliaStorageEntry contentFound = null;
|
||||||
private final KadConfiguration config;
|
private final KadConfiguration config;
|
||||||
|
|
||||||
private final ContentLookupMessage lookupMessage;
|
private final ContentLookupMessage lookupMessage;
|
||||||
@ -253,7 +254,7 @@ public class ContentLookupOperation implements Operation, Receiver
|
|||||||
this.localNode.getRoutingTable().insert(msg.getOrigin());
|
this.localNode.getRoutingTable().insert(msg.getOrigin());
|
||||||
|
|
||||||
/* Get the Content and check if it satisfies the required parameters */
|
/* Get the Content and check if it satisfies the required parameters */
|
||||||
KademliaStorageEntry content = msg.getContent();
|
JKademliaStorageEntry content = msg.getContent();
|
||||||
this.contentFound = content;
|
this.contentFound = content;
|
||||||
this.isContentFound = true;
|
this.isContentFound = true;
|
||||||
}
|
}
|
||||||
@ -320,7 +321,7 @@ public class ContentLookupOperation implements Operation, Receiver
|
|||||||
*
|
*
|
||||||
* @throws kademlia.exceptions.ContentNotFoundException
|
* @throws kademlia.exceptions.ContentNotFoundException
|
||||||
*/
|
*/
|
||||||
public KademliaStorageEntry getContentFound() throws ContentNotFoundException
|
public JKademliaStorageEntry getContentFound() throws ContentNotFoundException
|
||||||
{
|
{
|
||||||
if (this.isContentFound)
|
if (this.isContentFound)
|
||||||
{
|
{
|
||||||
|
@ -5,6 +5,7 @@ import java.util.List;
|
|||||||
import kademlia.KadConfiguration;
|
import kademlia.KadConfiguration;
|
||||||
import kademlia.KadServer;
|
import kademlia.KadServer;
|
||||||
import kademlia.KademliaNode;
|
import kademlia.KademliaNode;
|
||||||
|
import kademlia.dht.JKademliaStorageEntry;
|
||||||
import kademlia.dht.KademliaDHT;
|
import kademlia.dht.KademliaDHT;
|
||||||
import kademlia.dht.KademliaStorageEntry;
|
import kademlia.dht.KademliaStorageEntry;
|
||||||
import kademlia.message.Message;
|
import kademlia.message.Message;
|
||||||
@ -22,7 +23,7 @@ public class StoreOperation implements Operation
|
|||||||
|
|
||||||
private final KadServer server;
|
private final KadServer server;
|
||||||
private final KademliaNode localNode;
|
private final KademliaNode localNode;
|
||||||
private final KademliaStorageEntry storageEntry;
|
private final JKademliaStorageEntry storageEntry;
|
||||||
private final KademliaDHT localDht;
|
private final KademliaDHT localDht;
|
||||||
private final KadConfiguration config;
|
private final KadConfiguration config;
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ public class StoreOperation implements Operation
|
|||||||
* @param localDht The local DHT
|
* @param localDht The local DHT
|
||||||
* @param config
|
* @param config
|
||||||
*/
|
*/
|
||||||
public StoreOperation(KadServer server, KademliaNode localNode, KademliaStorageEntry storageEntry, KademliaDHT localDht, KadConfiguration config)
|
public StoreOperation(KadServer server, KademliaNode localNode, JKademliaStorageEntry storageEntry, KademliaDHT localDht, KadConfiguration config)
|
||||||
{
|
{
|
||||||
this.server = server;
|
this.server = server;
|
||||||
this.localNode = localNode;
|
this.localNode = localNode;
|
||||||
|
Loading…
Reference in New Issue
Block a user