Mercurial > hg > FederatedLinda
view src/fdl/test/transfer/three/ProtocolEngine.java @ 51:454a5376232f
(no commit message)
author | axmo |
---|---|
date | Tue, 16 Dec 2008 19:49:14 +0900 |
parents | 0025a8582d5f |
children |
line wrap: on
line source
package fdl.test.transfer.three; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.nio.ByteBuffer; import fdl.FederatedLinda; import fdl.PSXLinda; import fdl.PSXReply; public class ProtocolEngine extends Thread{ private PSXLinda psx; private String name; FederatedLinda fdl1; String host = "127.0.0.1"; int port1; int port2; private int id = 10; private PSXLinda psx1; private boolean running = true; private ByteBuffer data2 = ByteBuffer.allocate(10); private int count = 1; public ProtocolEngine(String string, int port1, int port2) { this.name = string; this.port1 = port1; this.port2 = port2; } public void run(){ fdl1 = FederatedLinda.init(); boolean connect = true; while(connect){ try { initConnect(); transfer(); connect = false; } catch (IOException e) { try { Thread.sleep(40); } catch (InterruptedException e1) { } } } } private void initConnect() throws IOException { System.out.println(name); psx = fdl1.open(host,port1); System.out.println("Connect "+port1); psx1 = fdl1.open(host,port2); System.out.println("Connect "+port2); } private void transfer() throws IOException { PSXReply in = psx.in(id); System.out.println("PSXReply "+port1 +": "+port2 +": "); 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 +": "+port2 +": " +i); fdl1.sync(1); if (count++>3) { running = false; break; } System.out.println("IntData1 "+port1 +": "+port2 +": " +i); } fdl1.sync(); } assertEquals(4,count); } }