From dd2219457cb93a3000d92a4e97ff9cddcedd57a0 Mon Sep 17 00:00:00 2001 From: Michael Kmoch <dudelmicha@googlemail.com> Date: Thu, 11 Jun 2015 09:34:29 +0200 Subject: [PATCH] [fixed] some minor bugs, like multiadding of same address to gui --- JavaAkkaFuCoin/src/fucoin/Wallet.java | 59 +++++++++---------- JavaAkkaFuCoin/src/fucoin/WalletPointer.java | 9 +++ .../src/fucoin/actions/JoinAction.java | 12 ++++ .../src/fucoin/actions/JoinActionRespond.java | 2 +- 4 files changed, 49 insertions(+), 33 deletions(-) diff --git a/JavaAkkaFuCoin/src/fucoin/Wallet.java b/JavaAkkaFuCoin/src/fucoin/Wallet.java index 89293d2..a29e482 100644 --- a/JavaAkkaFuCoin/src/fucoin/Wallet.java +++ b/JavaAkkaFuCoin/src/fucoin/Wallet.java @@ -49,9 +49,8 @@ public class Wallet extends UntypedActor implements IWallet{ @Override public Vector<WalletPointer> join() { Vector<WalletPointer> allKnownNeighbors = new Vector<WalletPointer>(); - for(WalletPointer neighbors : allKnownNeighbors){ - this.allKnownNeighbors.add(neighbors); - gui.addKnownAddress(neighbors.address); + for(WalletPointer neighbors : this.allKnownNeighbors){ + allKnownNeighbors.add(neighbors); } return allKnownNeighbors; } @@ -100,38 +99,23 @@ public class Wallet extends UntypedActor implements IWallet{ @Override public void onReceive(Object action) throws Exception { log(""+action); - boolean contains = false; String senderName = actorToString(getSender()); - String selfName = actorToString(getSelf()); - WalletPointer selfWP = null; - for(WalletPointer wp : this.allKnownNeighbors){ - if(wp.address.equals(senderName)){ - contains = true; - log("knows allready "+senderName); - } - if(wp.address.equals(selfName)){ - selfWP = wp; - } - } - if(!contains){ - this.allKnownNeighbors.add(new WalletPointer(senderName)); - gui.addKnownAddress(senderName); - - } - if(selfWP!=null){ - this.allKnownNeighbors.remove(selfWP); - } + String selfName = actorToString(getSelf()); + if(action instanceof JoinAction){ - JoinActionRespond joinaction = new JoinActionRespond(); - joinaction.setKnownNeighbors(join()); + JoinAction joinAction = (JoinAction) action; + JoinActionRespond joinactionrespond = new JoinActionRespond(); + joinactionrespond.setKnownNeighbors(join()); + addKnownaddress(joinAction.getNewMember()); + - getSender().tell(joinaction, getSelf()); + getSender().tell(joinactionrespond, getSelf()); }else if(action instanceof JoinActionRespond){ JoinActionRespond joinaction = (JoinActionRespond) action; + //allKnownNeighbors.addAll(joinaction.getAllKnownNeighbors()); for(WalletPointer neighbor:joinaction.getAllKnownNeighbors()){ - gui.addKnownAddress(neighbor.address); - allKnownNeighbors.add(neighbor); + addKnownaddress(neighbor); } log(actorToString(getSelf())+"ah there are new neighbours"+joinaction.getAllKnownNeighbors()); log("now i know these "+allKnownNeighbors); @@ -162,15 +146,17 @@ public class Wallet extends UntypedActor implements IWallet{ getSender().tell(new FindWalletResponseAction(selfName,s.moneyAmount), getSelf()); } } + }else if(action instanceof FindWalletResponseAction){ FindWalletResponseAction findWalletResponseAction = (FindWalletResponseAction) action; answers.add(new WalletPointer(findWalletResponseAction.getFoundneighbour())); - gui.addKnownAddress(findWalletResponseAction.getFoundneighbour()); + moneyAmount=findWalletResponseAction.getMoneyAmount(); gui.setAmount(moneyAmount); }else if(action instanceof WaitForAnswersAction){ log(""+answers); for(WalletPointer answer : answers){ + addKnownaddress(answer); stringToActor(answer.address).tell(new InvalidateAction(actorToString(getSelf())),getSelf()); } }else if(action instanceof InvalidateAction){ @@ -218,6 +204,16 @@ public class Wallet extends UntypedActor implements IWallet{ isAlive=true; } } + + private void addKnownaddress(WalletPointer senderPointer) { + if(!allKnownNeighbors.contains(senderPointer) + &&getSender().compareTo(getSelf())!=0){ + + + this.allKnownNeighbors.add(senderPointer); + gui.addKnownAddress(senderPointer.address); + } + } @Override public void preStart() throws Exception { @@ -228,9 +224,8 @@ public class Wallet extends UntypedActor implements IWallet{ addMoneyAmount(100); if(preknownNeighbour!=null){ String p = actorToString(preknownNeighbour); - allKnownNeighbors.add(new WalletPointer(p)); - gui.addKnownAddress(p); - preknownNeighbour.tell(new JoinAction(), getSelf()); + addKnownaddress(new WalletPointer(p)); + preknownNeighbour.tell(new JoinAction(new WalletPointer(address)), getSelf()); } } diff --git a/JavaAkkaFuCoin/src/fucoin/WalletPointer.java b/JavaAkkaFuCoin/src/fucoin/WalletPointer.java index 6446f90..44d50d9 100644 --- a/JavaAkkaFuCoin/src/fucoin/WalletPointer.java +++ b/JavaAkkaFuCoin/src/fucoin/WalletPointer.java @@ -14,6 +14,15 @@ public class WalletPointer { ActorRef actor = Wallet.stringToActor(address); return actor.path().toStringWithAddress(actor.path().address()); } + + @Override + public boolean equals(Object obj) { + if(obj instanceof WalletPointer){ + return ((WalletPointer)obj).address.equals(address); + } + return false; + } + diff --git a/JavaAkkaFuCoin/src/fucoin/actions/JoinAction.java b/JavaAkkaFuCoin/src/fucoin/actions/JoinAction.java index 51e37bc..98de44c 100644 --- a/JavaAkkaFuCoin/src/fucoin/actions/JoinAction.java +++ b/JavaAkkaFuCoin/src/fucoin/actions/JoinAction.java @@ -1,5 +1,17 @@ package fucoin.actions; +import fucoin.WalletPointer; + public class JoinAction { + private WalletPointer newMember; + + public JoinAction(WalletPointer walletPointer) { + this.newMember=walletPointer; + } + + public WalletPointer getNewMember() { + return newMember; + } + } diff --git a/JavaAkkaFuCoin/src/fucoin/actions/JoinActionRespond.java b/JavaAkkaFuCoin/src/fucoin/actions/JoinActionRespond.java index 768f0ef..6fc97a9 100644 --- a/JavaAkkaFuCoin/src/fucoin/actions/JoinActionRespond.java +++ b/JavaAkkaFuCoin/src/fucoin/actions/JoinActionRespond.java @@ -9,7 +9,7 @@ public class JoinActionRespond { @Override public String toString() { - return "join"; + return "you joined successfully here are your new neighbours "+allKnownNeighbors; } public void setKnownNeighbors(Vector<WalletPointer> allKnownNeighbors) { -- GitLab