Mercurial > hg > FederatedLinda
view src/fdl/test/metaTransfer/Ring/MetaProtocolEngine.java @ 55:865bf7f1bb8d
metaTranse two
author | axmo |
---|---|
date | Tue, 20 Jan 2009 20:54:08 +0900 |
parents | 629b6cfbd37f |
children | b342dc9b52eb |
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(){ boolean connect = true; System.out.println("MetaEngine Start"); while(connect){ try { initConnect(); sendData(); 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; //相手 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(); running = false; System.out.println("IntData1 "+port1 +i); break; } } assertEquals(4,count); } }