Mercurial > hg > FederatedLinda
view src/fdl/test/metaTransfer/Ring/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.Ring; //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 { 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 data = ByteBuffer.allocate(10); // private int count = 1; int port; public MetaProtocolEngine(MetaLinda ml, String string, int port1, int port) { this.name = string; this.port1 = port1; this.fdl1 = ml; this.port = port; } public void mainLoop(MetaLinda ml){ boolean connect = true; System.out.println("MetaEngine Start"); while(connect){ try { initConnect(); transfer(psx, psx1); connect = false; } catch (IOException e) { try { Thread.sleep(40); } catch (InterruptedException e1) { } } } } private void initConnect() throws IOException{ System.out.println(name); //自分 psx = fdl1; if (port == 10001){ sendData(); } //相手 psx1 = fdl1.open(host,port1); System.out.println("Connect "+port1); } private void sendData() throws IOException{ boolean connectSend = true; ByteBuffer send = ByteBuffer.allocate(1024); send.putInt(12); send.flip(); while(connectSend){ psx.out(id, send); fdl1.sync(1); System.out.println("Send Data 10001"); connectSend = false; } } private void transfer(PSXLinda getpsx, PSXLinda sendpsx) throws IOException { PSXReply in = getpsx.in(id); System.out.println("PSXReply "+port1); while (running) { if(in.ready()){ data = in.getData(); int i = data.getInt(); data.rewind(); //outしたbytebufferの変更をこれ以降やっちゃいけない sendpsx.out(id,data); System.out.println("IntData0 "+port1 +i); fdl1.sync(1); running = false; System.out.println("IntData1 "+port1 +i); break; } fdl1.sync(0); } // assertEquals(4,count); } }