Mercurial > hg > Members > shoshi > distributedalgorithm
view src/main/java/suikwasha/distributedalgorithm/simulator/LoggingMessageLinkBuilder.java @ 0:38a110b13db1
added SimpleDistributedAlgorithmFramework.
added NaiveAlgorithm
added ChangRobertsAlgorithm
added PertersonAlgorithm
author | suikwasha |
---|---|
date | Fri, 19 Oct 2012 00:05:41 +0900 |
parents | |
children | 8e1f63faa2fd |
line wrap: on
line source
package suikwasha.distributedalgorithm.simulator; import suikwasha.distributedalgorithm.framework.Link; import suikwasha.distributedalgorithm.framework.LinkBuilder; import suikwasha.distributedalgorithm.framework.Message; import suikwasha.distributedalgorithm.framework.Port; public class LoggingMessageLinkBuilder implements LinkBuilder { private final LinkBuilder builder; private final Summary summary; public LoggingMessageLinkBuilder(Summary _summary,LinkBuilder _builder) { summary = _summary; builder = _builder; } public Link build() { return new LoggingLink(summary,builder.build()); } public static class LoggingLink implements Link { private Link link; private Summary summary; public LoggingLink(Summary _summary,Link _link) { summary = _summary; link = _link; } public Port getPort1() { return new LoggingPort(summary,link.getPort1()); } public Port getPort2() { return new LoggingPort(summary,link.getPort2()); } } public static class LoggingPort implements Port { private Summary summary; private Port port; public LoggingPort(Summary _summary,Port _port) { summary = _summary; port = _port; } public void send(Message _mes) { long bits = _mes.getMessage().limit(); summary.addMessageBitCount(bits); summary.incrementMessageCount(); summary.trySetMessageChain(_mes.getMessageChain()); port.send(_mes); } public Message blockingReceive() throws InterruptedException { return port.blockingReceive(); } public Message tryReceive() { return port.tryReceive(); } } }