view src/fdl/old/test/transfer/three/ProtocolEngine.java @ 114:3b877c9a44f5

gather old packages
author kazz
date Mon, 11 Oct 2010 14:29:37 +0900
parents src/fdl/test/transfer/three/ProtocolEngine.java@454a5376232f
children
line wrap: on
line source

package fdl.old.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);
	}
	

}