Skip to content
Snippets Groups Projects
Commit 42f5988a authored by lkeidel's avatar lkeidel
Browse files

Merge branch 'dev-group3-gephi' into 'master'

Overlay topology

This merge requests adds the presented overlay topology creation.
This way, one does not have to modify the Distributed Commit to obtain a overlay network that is used by the implemented algorithms, which should not work on a fully connected network.
The topologies are defined via Gephi.

See merge request !6
parents e9ea7f29 8f3e8879
No related branches found
No related tags found
No related merge requests found
package fucoin.gui.gephi;
import org.gephi.graph.api.Node;
import org.gephi.preview.api.*;
import org.gephi.preview.spi.ItemBuilder;
import org.gephi.preview.spi.MouseResponsiveRenderer;
import org.gephi.preview.spi.PreviewMouseListener;
import org.gephi.preview.spi.Renderer;
import org.openide.util.lookup.ServiceProvider;
import java.awt.*;
@ServiceProvider(service = Renderer.class)
public class RendererTemplate implements Renderer, MouseResponsiveRenderer {
@Override
public String getDisplayName() {
return "Some name";
}
@Override
public void preProcess(PreviewModel previewModel) {
}
@Override
public void render(Item item, RenderTarget target, PreviewProperties properties) {
//Retrieve clicked node for the label:
LabelItem label = (LabelItem) item;
Node node = label.node;
//Finally draw your graphics for the node label in each target
if (target instanceof G2DTarget) {
Graphics2D g = ((G2DTarget) target).getGraphics();
g.setColor(Color.RED);
g.fillOval((int) node.x(), (int) -node.y(), 5, 5);//Note that y axis is inverse for node coordinates
} else if (target instanceof PDFTarget) {
} else if (target instanceof SVGTarget) {
}
}
@Override
public PreviewProperty[] getProperties() {
return new PreviewProperty[0];
}
@Override
public boolean isRendererForitem(Item item, PreviewProperties properties) {
return item instanceof LabelItem;
}
@Override
public boolean needsItemBuilder(ItemBuilder itemBuilder, PreviewProperties properties) {
return itemBuilder instanceof ItemBuilderTemplate;
}
@Override
public boolean needsPreviewMouseListener(PreviewMouseListener pl) {
return pl instanceof MouseListenerTemplate;
}
public CanvasSize getCanvasSize(Item item, PreviewProperties properties) {
return new CanvasSize();
}
}
......@@ -6,6 +6,8 @@ import fucoin.gui.TransactionLogger;
import scala.concurrent.Future;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
*
......@@ -22,6 +24,8 @@ public abstract class AbstractWallet extends AbstractNode implements Serializabl
*/
protected final String name;
protected final List<ActorRef> overlayNeighbours = new ArrayList<>();
/**
* Init. a wallet with a name.
*
......@@ -114,4 +118,8 @@ public abstract class AbstractWallet extends AbstractNode implements Serializabl
* @param observer
*/
public abstract void send(String address, int amount, ActorRef observer);
public void addOverlayNeighbour(ActorRef wallet) {
overlayNeighbours.add(wallet);
}
}
......@@ -50,7 +50,7 @@ public class WalletImpl extends AbstractWallet {
*/
public void addAmount(int amount) {
setAmount(this.getAmount() + amount);
addLogMsg(" My amount is now " + this.getAmount());
//addLogMsg(" My amount is now " + this.getAmount());
}
@Override
......@@ -61,7 +61,7 @@ public class WalletImpl extends AbstractWallet {
@Override
public void onReceive(Object message) {
addLogMsg(getSender().path().name() + " invokes " + getSelf().path().name() + " to do " + message.getClass().getSimpleName());
//addLogMsg(getSender().path().name() + " invokes " + getSelf().path().name() + " to do " + message.getClass().getSimpleName());
if (message instanceof ActionInvokeRevive) {
((ActionInvokeRevive) message).doAction(this);
}
......@@ -198,7 +198,7 @@ public class WalletImpl extends AbstractWallet {
@Override
public boolean addKnownNeighbor(String key, ActorRef value) {
addLogMsg(key + " is newNeighbor of " + name + "?" + !getKnownNeighbors().containsKey(key));
//addLogMsg(key + " is newNeighbor of " + name + "?" + !getKnownNeighbors().containsKey(key));
if (getKnownNeighbors().containsKey(key) || key.equals(name)) {
return false;
}
......
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.3" version="1.3" xmlns:viz="http://www.gexf.net/1.3/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd">
<meta lastmodifieddate="2016-07-08">
<creator>Gephi 0.9</creator>
<description></description>
</meta>
<graph defaultedgetype="directed" mode="static">
<nodes>
<node id="0" label="Node0">
<viz:size value="10.0"></viz:size>
<viz:position x="-294.57407" y="300.54153"></viz:position>
<viz:color r="153" g="153" b="153"></viz:color>
</node>
<node id="1" label="Node1">
<viz:size value="10.0"></viz:size>
<viz:position x="342.42365" y="-58.31403"></viz:position>
<viz:color r="153" g="153" b="153"></viz:color>
</node>
<node id="2" label="Node2">
<viz:size value="10.0"></viz:size>
<viz:position x="-482.98184" y="-252.69414"></viz:position>
<viz:color r="153" g="153" b="153"></viz:color>
</node>
<node id="3" label="Node3">
<viz:size value="10.0"></viz:size>
<viz:position x="183.92188" y="291.57016"></viz:position>
<viz:color r="153" g="153" b="153"></viz:color>
</node>
</nodes>
<edges>
<edge id="0" source="2" target="1"></edge>
<edge id="1" source="1" target="3"></edge>
<edge id="2" source="3" target="0"></edge>
<edge id="3" source="0" target="2"></edge>
</edges>
</graph>
</gexf>
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.3" version="1.3" xmlns:viz="http://www.gexf.net/1.3/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.3 http://www.gexf.net/1.3/gexf.xsd">
<meta lastmodifieddate="2016-07-08">
<creator>Gephi 0.9</creator>
<description></description>
</meta>
<graph mode="static">
<nodes>
<node id="0" label="Node0">
<viz:size value="10.0"></viz:size>
<viz:position x="-294.57407" y="300.54153"></viz:position>
<viz:color r="153" g="153" b="153"></viz:color>
</node>
<node id="1" label="Node1">
<viz:size value="10.0"></viz:size>
<viz:position x="342.42365" y="-58.31403"></viz:position>
<viz:color r="153" g="153" b="153"></viz:color>
</node>
<node id="2" label="Node2">
<viz:size value="10.0"></viz:size>
<viz:position x="-482.98184" y="-252.69414"></viz:position>
<viz:color r="153" g="153" b="153"></viz:color>
</node>
<node id="3" label="Node3">
<viz:size value="10.0"></viz:size>
<viz:position x="183.92188" y="291.57016"></viz:position>
<viz:color r="153" g="153" b="153"></viz:color>
</node>
</nodes>
<edges>
<edge id="0" source="2" target="1" type="directed"></edge>
<edge id="1" source="1" target="3" type="directed"></edge>
<edge id="2" source="3" target="0" type="directed"></edge>
<edge id="4" source="2" target="0" type="undirected"></edge>
</edges>
</graph>
</gexf>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment