Mercurial > hg > FederatedLinda
view src/fdl/test/metaTransfer/MetaProtocolEngine.java @ 97:0ea086f0e96f fuchita
main loop modification, for easy meta engine addition.
add comments.
author | one |
---|---|
date | Wed, 26 May 2010 10:49:50 +0900 |
parents | 82a292aa41ad |
children |
line wrap: on
line source
package fdl.test.metaTransfer; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.nio.ByteBuffer; import fdl.MetaEngine; import fdl.MetaLinda; import fdl.PSXLinda; import fdl.PSXReply; public class MetaProtocolEngine implements MetaEngine { private int id = 10; private boolean running = true; private PSXLinda psx; private String name; MetaLinda fdl1; String host = "127.0.0.1"; int port1; private PSXLinda psx1; private ByteBuffer data2 = ByteBuffer.allocate(10); private int count = 1; public MetaProtocolEngine(MetaLinda ml, String string, int port1) { this.name = string; this.port1 = port1; this.fdl1 = ml; } public void mainLoop(MetaLinda ml){ boolean connect = true; System.out.println("MetaEngine Start"); while(connect){ try { initConnect(); transfer(); connect = false; } catch (IOException e) { try { Thread.sleep(40); } catch (InterruptedException e1) { } } } } private void initConnect(){ System.out.println(name); boolean connectpsx = true; while(connectpsx){ try { psx = fdl1.open(host,port1); connectpsx = false; } catch (IOException e) { try { Thread.sleep(40); } catch (InterruptedException e1) { e1.printStackTrace(); } } } System.out.println("Connect "+port1); psx1 = fdl1; } private void transfer() throws IOException { PSXReply in = psx.in(id); System.out.println("PSXReply "+port1); while (running) { if(in.ready()){ data2 = in.getData(); int i = data2.getInt(); data2.rewind(); //outしたbytebufferの変更をこれ以降やっちゃいけない psx1.out(id,data2); System.out.println("IntData0 "+port1 +i); fdl1.sync(0); if (count++>3) { running = false; break; } System.out.println("IntData1 "+port1 +i); } fdl1.sync(0); } assertEquals(4,count); } }