Mercurial > hg > Members > shoshi > distributedalgorithm
view src/main/java/suikwasha/distributedalgorithm/simulator/LoggingMessageLinkBuilder.java @ 2:8e1f63faa2fd default tip
added Franklin's Algorithm
author | suikwasha |
---|---|
date | Tue, 23 Oct 2012 16:49:26 +0900 |
parents | 38a110b13db1 |
children |
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(); } public boolean isReady() { return port.isReady(); } } }